Monica McGuigan - My Scala Story
Scala experts share their Scala Stories to celebrate the 20th anniversary of Scala in 2024. Meet Monica McGuigan, and follow her on LinkedIn.
How did you first get introduced to Scala, and what did you think about it?
I started properly learning Scala in 2022 when I joined my current team for my first developer job out of university. My experience in software before this was C#, C++, and some front-end technologies. So, switching to the world of functional programming was not without its challenges.
Initially, I found the learning curve pretty steep; there was a huge amount to understand and a lot of confusing concepts to take on board pretty quickly. Slowly but surely, I started to get my head around writing Scala code, and haven’t looked back since!
How has Scala influenced your approach to solving programming problems?
I would say the main influence on how I problem-solve would have to be Scalas’ type system. Being able to rely on it so consistently, in my experience, has been great. For example, when you’re pattern matching, you know with its exhaustivity that you are covering all bases. This is in stark contrast to my front-end experience in JavaScript, where you just had to hope what you were writing was correct, and you’d find out at runtime whether or not that's true. Having compile-time confidence in your code is far more enjoyable.
Learning Scala has been my first interaction with FP, so I can definitely see where the influence of this paradigm on how I write code comes from. It feels very natural to decompose problems into discrete functions you chain together, with an emphasis on what the input and output types are.
I also like how Scala isn’t strictly a pure functional language, and when you need to use imperative techniques, it’s flexible enough to allow you to, e.g., using local mutability when it makes the most sense to do so.
What is your favourite programming meme?
Image source
I mean, this really says it all...
What are your go-to tools and libraries when working as a software developer?
For development, I use IntelliJ with SBT.
Something so simple yet so helpful that I’ve come to rely on are the context actions. The two I use the most are the type hints and the collection inspections.
Specifically, when I’m working with chaining lots of functions together, getting type hints helps to keep me sane and focused on the problem. Then, I find it incredibly helpful getting suggestions for writing more readable and idiomatic code from the collection inspections, especially as I’m refactoring code that is a little messy from the process of being written.
And then for libraries, my team mostly uses the Typelevel ecosystem: including Cats, Cats-Effect and Http4s.
How has the Scala community impacted your programming journey? Any standout interactions or support stories to share?
The impact of the Scala community on my learning journey so far cannot be overstated. From the very first few weeks of my graduate job, I was supported and encouraged by senior developers in my team. They spent the time and effort to prepare training materials, run mob programming sessions, and thoroughly review PRs. Without them, my experience learning Scala would have been wildly different and probably a lot less enjoyable.
Outside of my job, I was encouraged to apply for conferences and share my experience as a junior developer. I had the perception that speaking at conferences was something reserved for those with far more technical knowledge and development experience than I had. Turns out that was an incorrect assumption. As a result of going to conferences, I’ve also gotten involved with the London Scala community, which has been super welcoming.
It’s been great joining an inclusive community that has put an emphasis on the importance of hearing from all members, not just those with the most experience. And then hopefully, as a result, learning how we can improve the experience of learning Scala for newcomers.
A special thanks to Nicolas Rinaudo, Sophie Collard, and Zainab Ali for their mentorship, support, and encouragement. My experience so far in Scala would not be the same without them!
Did you have any hilarious or embarrassing moments while learning Scala?
Oh, I’ve had plenty of embarrassing moments in the short time I’ve been working with Scala. There have been lots of mistakes and plenty of glaringly obvious questions, but everyone has been in that position at some point or another (at least that’s what I tell myself!).
What advice would you give to someone just starting with Scala?
So, a few things come to mind.
First, if you’re a junior developer, find what method of learning works for you, whether that’s through books, courses, or just diving into some real-life examples. Figuring out what’s the most effective way for you to learn will make your life a whole lot easier.
Second, don’t be discouraged when things get hard and you feel like you’ve hit a wall. This is the point at which you should reach out to your community. This can be to colleagues, mentors, or the wider Scala community. I’ve found people tend to be very generous with their time and are keen to share their hard-earned knowledge, you just need to ask them.
And finally, there’s a lot out there in the Scala ecosystem to learn. In the beginning, try to get the basics down. It’ll give you a solid foundation to go from when you start diving into all the cool libraries there are.
How have you seen Scala evolve over the years, especially in your field of work?
Although I’ve only been writing Scala for about 5% of the time it’s existed, there seems to be an increased focus on improving the user experience for developers. Scala is doing this by improving existing tools and creating new tooling to make developers’ lives a little easier, and giving more focus to how we reduce the steep curve that comes with learning Scala.
What are your predictions for the future of Scala in the next decade?
Put simply, being at the start of my career, I have no idea what the future holds for this language. However, what I do know is how much I’ve enjoyed developing in Scala thus far and how much I’d like to continue to do so for years to come.
SCALA is celebrating its 20th anniversary!
We're celebrating a big milestone, and we want you to join us! Follow #scalaversary on X and Mastodon to keep up with all the festivities. Also, make sure you don't miss the Scalar Conference 2024 – it's going to be a Scala Fiesta! For two action-packed days, you'll be immersed in functional programming insights shared by a vibrant community of IT professionals. This is a great opportunity to network with like-minded individuals, gain expert knowledge, and make new friends.
Secure your spot now, and we look forward to seeing you in Warsaw!