Farewell Note to Programming Language

In this article, I would like to share with the Habrahabr community the verse “Onegin’s Letter to Tatiana”, a translation of the article from Matthias Nehlsen “ “ A farewell note to a programming language ” . The author talks about his development experience on Scala in the style of "I am writing to you - why more?"



A small departure from the translator:


When I start to study new technologies, I try to pay attention to the trend of this technology in the labor market, complexity, interest, opinion on the Internet, etc. Recently, I'm hooked on Scala. For me personally, after more than one year of developing in Java, approaches to writing code in Scala were something new and changing my mind.

Hands are scratching more and more to try this interesting language in one of their next projects. But articles like these make one doubt: “Yes, Virginia, Scala is complicated!” , “Scala is worse than Java. At least for half of Java projects ” , “ OMG Scala is a complex language! ” . The post of Matthias is also from this repertoire, only with a large emotional color. In general, I will not torment, we will pass to the translation.

Farewell Note to Programming Language


Dear Scala,

Do you remember how we first met back in 2012? Your functional approach seemed fresh and unusual to me. For some time I believed that we were made for each other. My first project was successful, I was comfortable working using the best that you have. But as soon as I started working in teams using Scala, your complex syntax began to drown me. At first, it seemed very pleasant to me that you are offering me to complete the tasks in exactly the way that I like. But after some time I noticed that you are offering this not only to me. Instead, you want to please everyone, while offering all the programming paradigms known to mankind.

This was most terrible when working with experienced Java developers. Yes, of course, they had been doing OOP for a very long time and probably it was worth it. But that doesn’t mean at all that trying to recreate Java on Scala with slightly less boilerplate code is a good idea. For more than a year of working in teams using Scala, there has not been a single day when I would feel that we have a common understanding of how to develop a system or at least a unified approach to solving problems.

All this is not to say that a person cannot create powerful systems with your help; there is a wealth of evidence to the contrary, but my heart no longer belongs to you, and I'm not even sure what it has ever been.

Last year, using Scala and the Play Framework, I wrote a small application called BirdWatch, which was originally created just to show something during a job interview. But then everything acquired its meaning. It looked as though a small and cute stray dog ​​suddenly suddenly appeared on your porch. And you did not know what to do with her, but she looked so hungry that you decided to feed her; she decided to stay and stick around, and before you understood this, you noticed behind yourself that you were looking for constant meetings with this dog. You know about stories like that, that's nice; however, I am not complaining.

But I never felt obligated to work hard on the implementation of the server side, in particular, because I had already spent enough time writing in Scala. In addition, while the server-side implementation looks deceptively simple, in reality, everything is difficult to understand in detail, because it requires an implementation on the Iteratee library. In my opinion, this library is difficult to understand; it’s even harder to explain it to other people and it’s almost impossible to understand the source code. For the purpose of due diligence, I prefer to rely only on the source code of the library, which I read and understood well. In the same case, I could not fix even the smallest bug, and it was a red light for me.

I spent a lot of time working with various clients. I initially worked with a version of AngularJS / JavaScript, then with a different version of ReactJS / JavaScript, and even with ReactJS / ScalaJS.

All this time I flirted with Clojure, so for me it was the next logical step to write a client using ClojureScript and Om. I immediately abandoned the previous one. Not because I didn’t like him, but because I liked the experience of using ClojureScript so much that I completely wanted to abandon you, dear Scala, in favor of all-Clojure.

Therefore, everything is so. I discovered a different programming language for myself, and for the first time I feel like I have found my soul mate, exactly what a programming language can become. I'm sorry, but I have to follow the call of my heart.
You may ask, why am I writing all this here? Good question. The other day a recruiter approached me about a project on Scala, it happens so often that I do not even care to take a look at who this project is for. But this time it was different. I felt it was necessary to end this completely. Taking into account my career, I decided that you, Scala, will no longer be part of it, no matter how high the demand is and how impressive the bet on the freelancer site will be.

I will be happier working with Clojure projects. Although this leads me to disappointing observations made on Conj. I was surprised by the number of people who said they were sorry that they could not code on Clojure to at least pay rent.

To summarize, dear Scala, I can say that it's all over between us. It's not about a break at all, I found a better partner. And this does not mean that someone else should blindly follow my example. All this so that people can think about what language they are currently using for work, and if they are unhappy, they can look for something else that is suitable for themselves. I don’t know anything about other people's lives, but my life is too short to spend it on work that I don’t like.

Thanks, Matthias.


PS .

It seems to me that the majority of these articles were not written by the authors in order to scare away people who are interested in Scala. Rather, to make you think that it is not just “Java with a different syntax”. These are completely different paradigms and approaches. Or maybe even niches of application.

% HabraUser% , what do you think about this?

[UPD]:
I corrected the translation with the comments of the habruiser @Vedomir , for which he thanks.

Also popular now: