Paweł Marks - My Scala Story
Another day, another My Scala Story episode! Read the #scalaversary-inspired relation about his Scala journey by Paweł Marks. Paweł is the Team Leader of the Scala Compiler Team at VirtusLab and the Release Officer of Scala 3.
How did you first get introduced to Scala, and what did you think about it?
Shortly before going to the university, I learned Haskell. I had yet to learn what the industry looked like and just wanted to be cool and unique and use a programming language as different as possible from the ones covered in introductory courses. It was a great decision, as knowing some simple functional patterns gave me a significant advantage in solving more complex assignments, even when using C. Haskell itself back then was not very practical, even for smaller university projects. When I heard about a language that allows you to write functional code, like Haskell but runs on JVM, I needed to know more about it. I still remember reading Scala tutorials instead of listening to the physics lecture.
Tell us about a moment when you realized, "Aha! Scala is awesome!" What Scala's features and capabilities made you feel that way?
The first such moment happened many years ago during a course on computational geometry. Every two weeks, we were tasked with implementing algorithms, analyzing their properties, and creating visualizations. While everyone in my group opted for Python, I stayed with Scala. Thanks to my chosen language, I could easily model those algorithms as lazy streams of immutable state objects representing consecutive steps. This way, the analysis and visualization were straightforward. This advantage became even more useful as the course progressed, and algorithms became more complex and required things like backtracking. Of course, I could have also implemented that in Python, but I would be struggling with the language and adding a lot of boilerplate code that would turn out to be beneficial only in the long run. Scala was fantastic because it enabled me to express my code seamlessly in the way I wanted it.
The last such moment occurred only a few weeks ago. I was reading about functional frameworks for TypeScript. While structural typing provides some intriguing benefits when paired with functional programming, I wasn't fond of how everything seemed overly verbose and noisy. It was then that I realized it wasn't TypeScript at fault but Scala 3, which is truly remarkable. The using / given mechanism is ingeniously crafted. It enables the code to be distilled down to only the essential elements without any extraneous noise.
How has Scala influenced your approach to solving programming problems?
First, Scala taught me to clearly distinguish between the input and output of an operation and its environment. Even before I started using any effect system, Scala itself encouraged me to think about it and organize the code accordingly. This mindset transfers to other languages and technologies, often enabling the creation of very modular and maintainable code.
Additionally, thanks to Scala's extremely expressive type system, whenever I need to write something in a dynamically typed language, I feel like I'm coding blindfolded.
What is your favourite programming meme?
It is not strictly speaking a meme, but a comic strip, and originally it had nothing to do with programming. Nevertheless, I used it a lot in programming discussions. Figuring out what I was arguing is left as an exercise for the reader ;)
What are your go-to tools and libraries when working as a software developer?
Nowadays, I rarely work as a software developer, but I still often need to automate lots of things. Scala CLI makes Scala the absolute best language for scripting out there. Apart from that, I only need Scala Toolkit as sttp, uPickle, and os-lib are enough for 90% of my work.
What are your predictions for the future of Scala in the next decade?
I believe that Scala is currently close to reaching the Plateau of Productivity in the often-cited Gartner Hype Cycle. I foresee that Scala will keep dominating some niche use cases, such as scalable systems processing large amounts of events. Additionally, I believe that Scala's popularity may steadily climb in some other areas, such as scripting, dev-process automation, and, most importantly, infrastructure-as-code.
Join Scala Fiesta!
Scalar Conference 2024 is coming! Celebrate Scala's birthday with us - we announced the agenda, and soon we'll reveal more of our exciting plans and surprises! Follow our social media and #scalaversary hashtag to be updated!