What it is
Scala runs on the same JVM as Java and adds the two things Java was slowest to grow: first-class functional programming, and a type system strong enough to make some wrong states impossible to write. It is what much of the data world is written in, and it is at its best where correctness matters more than the size of the hiring pool.
What we do with it
- Data and stream processing. Spark jobs, streaming pipelines, and the batch work around them - including the tests and reruns that make a pipeline trustworthy rather than merely fast.
- Services where the domain is the hard part. Types that say what the business actually means, so the compiler catches the case somebody forgot rather than a customer finding it.
- Scala 2 to Scala 3. An incremental migration, the library decisions it forces, and a build laid out so that both can live side by side while it happens.
- Interop with a Java estate. Scala services that share protocols, secrets, pipelines and on-call with the Java ones you already run, rather than being a world of their own.
- When the answer is not Scala. If the team that inherits the work writes Java, that belongs in the decision, and we will say so before it is built rather than after.
How it starts
Bring us the data, the shapes it comes in, and what has to happen to it. If Scala is the right tool we will say what we would build with it; if a Java service and a scheduled query would do, we will say that instead.
