I started a new job in November 2019, about 6 months ago.
In my previous jobs, I had been an application developer and an application architect. Apart from a few quarters, where I worked on Adobe Experience Manager, and Salesforce with Vlocity, I have primarily been a Java+Spring developer over the past decade.
During onboarding, I was to work with a team that was using Scala as its primary language to process hundreds of thousands to multiple million messages per day.
I had never used Scala, and had to make a decision, whether to give it a try, or whether to continue with the team I had interviewed.
I thought I will give it a month and decide what to do. Thus, began my tryst with Scala. I am writing this with an expectation that I can track my progress in another 6 months or a year, and see if I am still writing Scala.
The team recommended I go through Essential Scala and join a weekly Scala Learners community that a few of the colleagues were going through.
Unfortunately for me, I do not learn well in communal environments, and was not really willing to dive into a book unless I knew how I could leverage my existing knowledge to figure out what I needed to unlearn and learn.
I liked how the page provided information, so started to explore more on the same site.
The next stop was Getting Started on the same site.
This helped me setup my system for hands-on, and I went through the Tour of Scala guide, also on the same site.
Going through this gave me enough confidence to start looking at books I could read.
The challenge with this was that I got nearly as many recommendations as there were people on the team. My takeaway was that I need to figure out one or two books that will suit me.
Based on what I felt after writing the few snippets to get familiar with Scala, I wanted to understand functional programming better, and I wanted to become productive quick enough. So, my choices were:
I went through the 1st book in a weekend. I started through the 2nd book, but only skimmed it as I thought I had already gained what I needed to know in between the scala-lang pages and the functional programming book.
After a few sprints of productive work beginning January, I realized I could just continue working in Scala and pickup Java if I had to find a new project or a job in a week or two. So I started looking for a more robust foundation, and came across a Functional Programming in Scala Specialization on Coursera that has some courses delivered by Mr. Odersky himself. I thought it would be helpful to get a sense of what the author actually meant when creating the language.
So, I started the course, but it soon became laborious. The lectures delivered by Mr. Odersky were great, but the exercises were dissonant from the lecture. It felt the course needed me to think as well research outside the course material itself which I was not prepared to do. After all, coursera courses are pretty expensive and I had hoped to be spoon-fed. Similar to what I had found on udemy for AWS-SAA certifications (yes, I am AWS-SAA!).
Anyway, this was March, and I think this is all the “textbook” learning I have done so far. However, I have been diving into production code every day, at least 6-7 hours, so I have been reading a lot of Scala code.
So, now to the main intent of this article, here are my observations so far in the last 6 months.