Magda Stożek - My Scala Story
Today in our special #scalaversary series, Magda Stożek, an experienced Software Developer working at SoftwareMill, shares her Scala Story!
How did you first get introduced to Scala, and what did you think about it?
I joined SoftwareMill as a Java developer, but I soon realised that as it’s a company with many Scala projects and many Scala experts, it could be a good opportunity to learn something new, while having some support around me. At first, I thought it was a very difficult language, especially that at the same time, I was also trying to wrap my head around functional programming principles. I kept struggling with various concepts and language constructs. This challenging phase lasted for quite some time, and only when I joined a project with a more experienced colleague who offered continuous support and pair programming did I feel like things finally started to “click” in my head. I finally felt like I was making some progress, that the language didn't slow me down in my coding, and that I was actually being productive. From that point, it has become a pleasure to write Scala code every day. That’s not to say I don’t still encounter an occasional frustrating bit!
Tell us about a moment when you realized, "Aha! Scala is awesome!" What Scala's features and capabilities made you feel that way?
I remember a pair programming session from quite an early time in my Scala journey when I was really struggling finding the right types and methods to make my code compile. The colleague who did the pair programming with me told me: “Don’t worry, it’s tough, but when you finally get Scala code to compile, it will usually work”. I wasn’t convinced about that then as I had never experienced that in another language before, but soon I realised that indeed, that is quite often the case! That got me hooked on the language and made me think of the compiler not as an enemy but as a friend who is trying to find the correct solution with me. To this day, it’s the strong type system and the possibility to model the domain in such a way that incorrect states are irrepresentable in types that I most love about Scala.
Another example I remember was when I was trying to write a piece of code as elegant and easy to read as possible so that a newcomer would instantly know what I meant by writing it. At one point, I thought, “If only there was a method with such-and-such name on this type. Wait, I can do it in Scala!” At that moment, adding a type class to extend a closed type was the answer for a real need that I had while writing that code. I still remember this feeling of pride for being able to write such beautiful code that day!
How has Scala influenced your approach to solving programming problems?
It has made me fall in love with functional programming, and since then, that’s my preferred way of writing code. I like the idea of decomposing a problem into many small, manageable steps. In functional programming, those small steps are functions that can be easily understood and tested and then, in the end, composed together to get the final solution.
What is your favourite programming meme?
It’s got to be this one:
Image source: imgur.com
It really resonates with me, and I love the feeling of constructing this elaborate mental model of the algorithm when I’m in the zone coding.
What are your go-to tools and libraries when working as a software developer?
My two favourite tools are Vim and IntelliJ IDEA. I combine those two by using the IdeaVim plugin in IntelliJ. In Vim, I love the possibility of coding as fast as I think while keeping my fingers on the home row, not needing the arrows to navigate around the code. In IntelliJ, I like that it’s really trying to keep up with developers’ needs, and I keep discovering new tool windows and capabilities so that I rarely have to change windows when writing code, which leads to less distraction - and today that’s always a good thing.
How has the Scala community impacted your programming journey? Any standout interactions or support stories to share?
Without the community, I surely wouldn’t be a Scala developer now. I have always felt very supported in my learning journey. On the one hand, I kept finding infinitely patient mentors to help me with my everyday Scala struggles. On the other hand, going to Scala conferences and seeing so many people passionate about this language has helped me keep my own enthusiasm and motivation for constant learning. Not to mention the numerous blog posts, videos, and Stack Overflow answers that have always been out there to help me every step of the way.
What advice would you give to someone just starting with Scala?
I’d recommend finding a mentor or a more experienced colleague. I have been lucky enough to have such support, and I’m not sure I would have gotten through the initial frustrations of learning a new language and a new programming paradigm without it. Books and videos are, of course, important as well, but I often found that when it came to actual, everyday Scala puzzles, sometimes I didn’t even know how to construct the right Google query, as I wasn’t sure what I was missing. In such cases, a short pair programming session would not only be much faster, but it would leave me with the feeling that the pieces are actually starting to fit together and that I understand the language idioms much better.
Check other #myscalastory