Free Handbook · Every example compiled & verified

Job Ready

What a Scala resume must show for data engineering and backend roles, three portfolio projects that get callbacks, where the jobs are, and the exam.

0 / 142 lessons🔥 0 day streak
ShareXLinkedIn

Module 16 · what you'll be able to do

  • Write the Scala section of a resume for the track you want (Spark data engineering or functional backend) with evidence a reviewer can check
  • Build three portfolio projects (a Spark batch pipeline, a streaming job on Kafka, and a typed HTTP service) that survive a real review
  • Read a Scala job posting and map each requirement to the module in this handbook that covers it
  • Sit the certification exam and put the certificate where recruiters actually look
01

What a Scala resume must show

Scala is hired into two main tracks, and a reviewer reads your resume through the lens of the one they are hiring for. "Scala, functional programming, big data" says nothing they can check. What reads as evidence is the working ecosystem around the language for that track, a project that uses it, and a number that shows it held up.

Pick one track as the headline. Data and backend Scala roles interview very differently.
TrackWhat the reviewer looks forName these on the resume
Data engineering (Spark)A pipeline that processes real volumes reliably, and knowledge of what makes Spark slowScala 2.13, Apache Spark (DataFrames, Datasets, Structured Streaming), Kafka, Delta Lake or Iceberg, Parquet, Airflow, Databricks or EMR, AWS S3
Functional backendA typed, tested service with clear error handling and concurrencyScala 3, Cats Effect or ZIO, http4s or zio-http, Doobie or Skunk, PostgreSQL, Kafka, fs2, MUnit, ScalaCheck, Docker, Kubernetes
Actor-based and legacy systemsExperience keeping large, long-lived systems runningPekko (or Akka), Akka/Pekko Streams, Play Framework, Scala 2.12/2.13, migrations

What gets filtered out

  • "Skills: Scala, Spark, Hadoop, Big Data" with nothing behind the keywords
  • "Knowledge of functional programming" with no project that shows it
  • A word-count Spark tutorial as the only project
  • No Scala or Spark version, no tests, no data volumes named anywhere

What gets a call

  • "Scala 2.13 · Spark 3.5 · Delta Lake · Kafka · Airflow · AWS EMR · MUnit" — specific and checkable
  • "Rewrote a daily Spark job to broadcast a 40 MB dimension table and salt a skewed key; runtime 2 h 10 min → 18 min on 1.2 TB"
  • "Built an http4s service on Cats Effect serving 3,000 req/s at p99 40 ms; replaced Future-based code with Resource-safe connection handling"
  • The certificate, with its verification ID, under Certifications
  • Name the versions. "Scala 3, Cats Effect 3" or "Scala 2.13, Spark 3.5" tells a reviewer exactly which codebase you can join.
  • Every bullet: action verb, what was built, the tools in parentheses, and a number where one exists: data volume, runtime before and after, cost saved, throughput, latency.
  • Mirror the posting. If it says "Apache Spark" and "Databricks", use those words, not "distributed data processing". An ATS matches strings, not synonyms.
  • Projects above education with under three years of experience. Link the repository, and a short write-up or dashboard for anything that ran on real data.

Then check it against a real posting instead of guessing: paste both into the ATS resume checker. It scores keyword coverage against that specific job, flags formatting that breaks parsers, and shows which lines a reviewer's eye actually lands on.

02

The two-minute resume checklist

Run the resume through this list before every application. Each item is something an ATS or a reviewer checks in the first pass, before a single repository is opened.

  • Plain, single-column formatting: no tables, text boxes or icons. Parsers frequently drop content inside them.
  • A skills line grouped by category (Languages · Data · Frameworks · Cloud · Testing), with Scala and Spark versions stated.
  • At least one bullet that shows depth, not syntax: a Spark job tuned (skew, shuffle, broadcast), a streaming job made idempotent, a race condition fixed, a service moved to an effect system, a Scala 2 to 3 migration.
  • Testing named explicitly: MUnit or ScalaTest, ScalaCheck, Testcontainers, local Spark tests. Functional teams read "tested" as "can be trusted".
  • SQL named as a skill: nearly every Scala data job is also a SQL job.
  • Three linked projects, each with a README and a one-command start. A project that cannot be run is a project a reviewer skips.
  • The certificate with its verification ID, once, under Certifications. A Databricks certification goes on the same line if you have one.
Run it per job, not once
A resume that matches a Spark data-engineering posting can miss a ZIO backend posting entirely. The ATS checker is built to be run per application, with that posting pasted in.
03

Portfolio: three projects that get Scala callbacks

Scala reviewers look for the same thing in a portfolio that they look for in a pull request: does this person build software the way a team does? One production-shaped project beats five tutorial apps. The three projects below cover both hiring tracks, and each maps to specific modules of this handbook. Data-engineering candidates should lead with the first two; backend candidates with the third.

  1. 1
    A Spark batch pipeline on a real public dataset

    Pick a dataset with real size and mess: NYC taxi trips, GitHub Archive events, Wikipedia page views. Ingest raw files into a bronze layer, clean and deduplicate into silver, and build aggregated gold tables (Parquet or Delta Lake), with the transformations as pure functions on Datasets so they are unit-tested on small local data. Show one real optimisation with before-and-after numbers from the Spark UI: a broadcast join, partition pruning, handling a skewed key. Orchestrate it with Airflow or a simple scheduled job, and document the data model. Shows: Modules 06, 07, 12 and the Spark with Scala handbook.

  2. 2
    A streaming job on Kafka with exactly-once output

    Produce a realistic event stream (clicks, orders, sensor readings) into Kafka with a small generator, then consume it with Spark Structured Streaming or fs2-kafka: windowed aggregations with watermarks for late data, output to Postgres or Delta with idempotent writes, and a checkpoint so a restart neither loses nor duplicates results. Kill the job mid-stream in the demo and show that the totals are still right. Add metrics on lag and throughput. Shows: Modules 08, 10 and the senior questions in 15.

  3. 3
    A typed HTTP service with an effect system

    A small but real API on Scala 3: bookings with no double-booking, an inventory with reservations, or a URL shortener with analytics. Use http4s with Cats Effect, or zio-http with ZIO; model the domain with case classes, enums and opaque types; return errors as a sealed ADT mapped to HTTP status codes; persist in PostgreSQL with Doobie or Skunk; derive JSON codecs. Tests: MUnit for the domain, ScalaCheck for one invariant, and integration tests with Testcontainers. Package with Docker and run CI in GitHub Actions. Shows: Modules 05, 09, 10 and 12.

Every project needs the same five things
A README with a one-command start (sbt run or docker compose up) and a short "design decisions" section · pinned sbt and Scala versions and a build with zero warnings · tests that run in CI · no secrets in the repository · and one measured result: a runtime, a throughput, a data volume, a bug the tests caught. Reviewers open the README, check build.sbt, then read one test. That is the whole audit.
Skip these
Word count on a text file, a Spark tutorial copied from a course, and "functional to-do lists" read as coursework. If you build one for learning, keep it off the resume and put the three projects above first.
04

Where the Scala jobs are, and how to read a posting

Scala is a smaller market than Java or Python, but a well-paid and specialised one. The largest share of roles is data engineering: companies running Spark on Databricks, EMR or their own clusters, often with Kafka and a lakehouse (Delta Lake or Iceberg), in fintech, ad tech, e-commerce, streaming media and telecoms. The second is backend engineering at companies that chose functional Scala for reliability: fintech and payments, trading, betting, logistics and some large consumer platforms, using Cats Effect, ZIO, Pekko or Play. Many established systems also need engineers to maintain and migrate Scala 2 code. Remote work is common, because teams hire the scarce skill wherever it is.

Read a posting's tool list as the interview syllabus and map it back to the module that covers it:

The posting says…They will testModule
"Scala", "functional programming"Immutability, case classes, pattern matching, Option/Either, HOFs01–08, 15 junior
"Collections", "algorithms"Choosing List/Vector/Map, folds, complexity06, 13, 14
"Type classes", "implicits", "Cats"Givens, using, extension methods, variance09, 15 mid
"Concurrency", "Akka/Pekko", "ZIO", "Cats Effect"Futures, thread pools, effect systems, shared state10, 15 mid
"Apache Spark", "Databricks"DataFrames and Datasets, shuffles, partitioning, skew, joins12, 15 senior, Spark handbook
"Kafka", "streaming"Consumer groups, offsets, delivery semantics, idempotency12, 15 senior
"SQL"Joins, aggregations, window functions, query plansSQL Mastery
"sbt", "CI/CD", "Docker"Builds, tests and packaging JVM services12
"Debugging", "production support"Reading JVM stack traces and compiler errors11
"Problem solving"A live coding round in Scala13, 14, 15 coding round
  • Check the Scala and Spark versions. "Scala 2.12, Spark 3" and "Scala 3, ZIO 2" are different jobs with different interviews.
  • Read the verbs. "Maintain", "support", "migrate" means an existing codebase, so reading unfamiliar code and stack traces (Module 11) is the real job. "Design", "own", "lead" means the senior questions in Module 15.
  • Years of experience are softer than they look. Scala teams often hire strong Java, Kotlin or Python engineers and train them, and a junior with a production-shaped Spark project regularly gets past a "2 to 4 years" filter.
  • Watch for the second skill. "Scala and Python" (data teams), "Scala and Java" (JVM shops), "Scala and Kubernetes" (platform teams) are the common pairs.

Match every posting against this table, then paste it with your resume into the ATS checker to see which of its tools are not on the page yet.

05

Certification exam → certificate

The Scala certification exam draws 25 questions from a bank covering Modules 01–14: 35 minutes, 70% to pass. The questions are phrased the way interviewers phrase them, and the wrong answers are the misconceptions this handbook warned about: thinking val makes an object immutable, expecting Futures in a for-comprehension to run in parallel, calling .get on an Option, or trusting the order of a groupBy. Pass it and a SolutionGigs Scala Programming certificate is issued with your name, score, date and a verifiable ID.

  1. 1
    Check the ticks

    The handbook landing page shows every lesson completed so far. Anything unticked in Modules 01–14 is a question you might miss; read it first.

  2. 2
    Sit the exam

    Sign in with Google so the certificate carries the right name. It can be retaken; the paper is drawn fresh from the bank each time.

  3. 3
    Put the certificate where it counts

    LinkedIn → Licenses & certifications, with the ID. Resume → Certifications, one line. GitHub profile README → one line with the link. The ID is what lets a recruiter verify it.

  4. 4
    Then the funnel

    ATS checker against a real posting → fix the gaps it finds → apply with the portfolio repository in the first line of the application.

What you can now say in an interview, truthfully
"I write idiomatic Scala: immutable data with case classes and sealed ADTs, exhaustive pattern matching, Option and Either instead of null and exceptions, folds and for-comprehensions. I understand type classes and givens, variance, and how Futures and thread pools behave. I pick collections by their cost, read a JVM stack trace to fix errors myself, and have built and tested Scala on real data with Spark and Kafka, in containers." That is a working Scala engineer's toolkit.
06

What to learn next

Your next step depends on the job you want. Scala engineers almost always work next to a database and the wider JVM or data ecosystem, so those are the usual first additions.

If you are aiming for…Learn nextWhy
Data engineeringSpark with Scala, SQL Mastery, then Data EngineeringSpark is the main reason companies hire Scala, every pipeline ends in SQL, and the data-engineering course covers the orchestration, modelling and lakehouse design around the code.
Lakehouse and table formatsApache IcebergModern Spark pipelines write to table formats with schema evolution, time travel and partition pruning.
The wider JVMJava or KotlinMost Scala teams sit inside JVM companies; reading Java libraries is daily work, and Kotlin shares many of Scala's ideas with a gentler learning curve.
Data science and ML pipelinesPythonData teams almost always pair Scala Spark with PySpark, notebooks and Python tooling.
Backend designDesign PatternsKnowing the classic patterns makes it easier to see how functional Scala replaces them (strategy becomes a function, visitor becomes pattern matching).

Keep the problem-solving muscle warm with graded problems in SQL practice, since SQL questions appear in almost every Scala data interview, and revisit Module 15 the week before each interview.

Frequently asked questions

What projects should a Scala developer have on a resume?
For data engineering: a Spark batch pipeline on a real public dataset with a measured optimisation, and a streaming job on Kafka that survives restarts without duplicating results. For backend roles: a typed HTTP service on Cats Effect or ZIO with PostgreSQL, property-based tests and Docker. Each should have a README, tests in CI and one measured result.
Is Scala still a good language to get a job in?
Yes, as a specialised skill. The Scala market is smaller than Java's or Python's but well paid, with steady demand in data engineering with Apache Spark and Kafka, and in functional backend teams in fintech, trading and large platforms. Pairing Scala with strong SQL and Spark knowledge widens the options considerably.
How do I get the Scala certificate?
Complete the handbook, then sit the certification exam at /learn/programming/scala/certification: 25 questions drawn from Modules 01–14, 35 minutes, 70% to pass. A passing score issues a certificate with a verifiable ID you can add to LinkedIn and your resume.

Finish the Scala handbook, then get hired

Sit the exam for your certificate, run your resume through the ATS checker, and see the jobs that ask for exactly this.

Check my resume
Found this course useful? Share it.
ShareXLinkedIn

Comments

0

Join the conversation. Sign in to leave a comment — we'd love to hear your thoughts.