Jakub Kozłowski - My Scala Story
How did you first get introduced to Scala, and what did you think about it?
I first learned about Scala sometime in high school. That must've been around 2014. It didn't make much of an impression back then, but I was still trying to wrap my head around Java and its limited functional programming capabilities, so I needed time for the paradigm shift ;)
Tell us about a moment when you realized, "Aha! Scala is awesome!" What Scala's features and capabilities made you feel that way?
It was when I realized how expressive the language is, especially when using its collections library. Even a basic task, like going through a sequence of numbers with a few transformations, became straightforward and clear! From there, it just got more thrilling: pattern matching was unlike anything I'd seen, and higher-kinded types completely blew my mind.
How has Scala influenced your approach to solving programming problems?
It definitely taught me to approach a problem from various perspectives. One such perspective is to find a smaller problem and rephrase the bigger one in terms of that one, then solve the small problem.
Scala made this kind of experimentation easy - you can quickly move between various designs, thanks to the concise syntax and lack of ceremony around datatype definitions.
If you could add a new feature to Scala, what would it be, and how would it benefit developers?
I'm not sure Scala needs new features. I'm pretty happy with the existing ones, although I would welcome some improvements for a couple of them. One example is named tuples (which are being worked on!), and the other would be better integration between opaque types and typeclass derivation (like Haskell's
What is your favourite programming meme?
The one I post every first working day of January.
What are your go-to tools and libraries when working as a software developer?
- Tools: an editor that doesn’t get in your way (Metals), a (good) debugger (IntelliJ’s), and a fast feedback loop (automated tests and scala-cli scripts). Can’t get anything done if it takes 5 minutes to try it out every time!
- Libraries: depends on the task, but I usually don’t go anywhere without Cats - sooner or later, I know I’m going to need
Tell us about a time when Scala proved to be a game-changer in a real-world project.
Probably thousands of times it didn’t blow up.
How has the Scala community impacted your programming journey? Any standout interactions or support stories to share?
The Scala community has transformed my life in ways I couldn't have imagined. Despite being reserved and generally introverted, this community has made me feel accepted and allowed me to break out of my shell to enjoy meeting new people.
Once I could afford it, I started attending conferences and networking whenever I could, and my only regret is not doing more of it! Every interaction, whether in the hallways or after parties, is a chance to learn and be inspired to create something new.
Over the years, I've built lasting connections through offline conferences, Twitter threads, and Spatial chats during the pandemic. Some of these connections turned into professional relationships, providing job referrals or recommendations, while others broadened my perspectives. Traveling to conferences was especially rewarding, allowing me to meet people from different continents, backgrounds, and cultures, and hear their inspiring stories.
Did you have any hilarious or embarrassing moments while learning Scala?
Every time I see my code from a couple years back, it makes me cringe - but also appreciate the progress I’ve made since writing it. As for other amusing moments related to Scala, one that stands out is randomly encountering another speaker on a flight from Frankfurt to a conference in Boulder, US. And it wasn't even during the peak conference season!
What advice would you give to someone just starting with Scala?
Give it a go and don’t give up. It’s a lifelong adventure of continuously learning how to build great software!
How have you seen Scala evolve over the years, especially in your field of work?
In recent years, I've noticed a welcome change - believe it or not - stability. We used to have a new effect system every year, and we’ve seen a lot of toil from Scala 2 minor version updates, and obviously we’ve been looking for the perfect JSON / HTTP libraries. Recently, it feels like a lot of the churn is gone.
In my niche (distributed systems), we seem to have standardized on one or two common ways to architect applications. People now realize that the HTTP or JSON library is often not the bottleneck, allowing us to focus more on what our applications actually need to do.
While tooling had a bumpy ride with the all-breaking Scala 3 release, it appears to be in a good place now. The compiler quickly suggests completions as you work through a problem, there's no longer a new build tool every month, and we have two reliable IDE choices.
What are your predictions for the future of Scala in the next decade?
I hope Scala 3 becomes the industry standard. It would be great to see libraries shift away from 2.x and fully embrace Scala 3's features. This move would make them more user-friendly and likely lead to the development of more libraries addressing common problems.
There has been significant effort to make learning Scala easier, with tools like scala-cli, Scastie, and improved documentation. These initiatives should help attract the attention of newcomers.
Regardless of whether Scala becomes a top 10 language, its had a lasting impact on me and reignited my love for programming. Scala is here to stay, and it will continue to be a part of our programming landscape, supporting us and paying our bills for a long time.
Celebrate Scala's 20th anniversary at Scalar 2024!
Get ready for two days of immersive functional programming experience full of learning, networking, and fun! Grab your ticket here, and see you in March!