From Scala to Kotlin: A Frustrated Engineer's Honest Take
Briefly

From Scala to Kotlin: A Frustrated Engineer's Honest Take
"Over the past months, I've watched two clients move from Scala (Play, Slick, Akka, Akka Http ... ) to Kotlin (Spring, JPA/Hibernate). In my current role, an engineering decision was made to move away from Scala. The decision was driven less by Scala's shortcomings and more by long-term career risk management: leaders understandably favor stacks (Java/Kotlin) that maximize hiring flexibility in a volatile market."
"This sounds pragmatic, but it's also shallow. What this really means is: The hiring pipeline is optimized for Java/Spring, not for learning Short‑term staffing convenience is prioritized over long‑term system quality Good engineers learn. Scala is not some alien technology - it's a JVM language with deep academic and practical foundations. Replacing a language because managers can't hire or up skill effectively is an organizational failure, not a technical one."
"Scala's type system is not just "strong" - it's expressive. In Scala, types are: With Scala, I can encode: ...directly into the type system. But there is a more practical, everyday benefit that often gets overlooked: local reasoning. In real systems, engineers spend far more time reading code than writing it - easily 80% of the time. Strong type signatures reduce cognitive load: Either[Error, T] tells me failures are explicit"
Engineering teams are migrating Scala stacks (Play, Slick, Akka) to Kotlin frameworks (Spring, JPA/Hibernate) mainly to maximize hiring flexibility and reduce perceived career risk. Leaders favor Java/Kotlin stacks to ease staffing in a volatile market. Kotlin is a capable JVM language and merits learning and experimentation. However, these migrations often prioritize short-term staffing convenience over long-term system quality. Hiring pipelines are optimized for Java/Spring rather than for upskilling developers. Scala's expressive type system and support for local reasoning reduce cognitive load when reading code. Replacing a language due to hiring limitations is an organizational failure, not a technical one.
Read at Medium
Unable to calculate read time
[
|
]