Scala in the swedish buffet of programming languages

Living in New York means there are always things to do: be it concerts, shows, meetups or classes. Once in a while I will check Skillshare listings or go to the General Assembly site and see what people are teaching and learning.

That is how I found myself at the Intro to Scala class at General Assembly last night. I have no background in Scala or Java, and my main motivation was to go and learn why it’s great and why the instructor and other attendees (along with companies like Twitter and foursquare) chose to use this language.

The class was pretty good, from its convenient location in the newly opened second Assembly’s location, to the instructor Toby who was very knowledgeable, enthusiastic and friendly. There were about 6 – 8 people (=men) in the room, and they did look like typical Java programmers (no offense, they all looked quite nice, just noting my impression). Toby talked about what makes Scala better than Java (concurrency, scalability, functional capabilities), and showed very detailed examples of most interesting features (actors, immutable variables, for-comprehensions). All in all, a good, informative class.

Now to the “but” thoughts that popped into my head as I was trying to grasp everything. First “but”: it seemed over-complicated to me. And not knowing Java (for that very same reason, over-coimplexity), it seemed even more strange and dense. Second “but”, which is a flipside of the first one, is that it did not seem like fun. Perhaps I’m biased coming from web development perspective, when you have poky little puppy online ease Online Pokies and speed of development as you main deciding factors. But seriously – wouldn’t you want to have fun with your language (and I’m thinking node.js or Python)? It could be, of course, that extreme mental gymnastics is your definition of fun, I just don’t have enough patience to go dig through complex syntax and hierarchies of classes…. especially when I can do it in Javascript in 1/10 of that time.

I realize certain problems like scalability and concurrency need languages and tools that can handle heavy lifting, so in this case Scala and Go might be valid choices for huge Google-scale apps. So before choosing a language or platform, read Mike’s post (that he coincidentally wrote just a couple of days ago):

There is no one true enlightened path for programming languages. That is because different programming languages have different strengthes. Your choice of programming language should align to both your personal strengths and the types of problems you’re going to be working on.

So don’t be afraid to try out different languages and find what’s right for you, just make sure of one thing – that you learn Unix, learn it real well!

PS: While I was looking for a photo for this post that shows a swedish buffet, a funny thought came to mind: Unix would be this necessary, good-for-you item (like eat your veggies thing), then Java and .NET would be some boring, solid, heavy items like meats, and node.js would be like this delicious dessert, a fruit tart or a honey cake. Yum!