Erik Engheim
4 min readJun 1, 2021

--

Nirmalya, the point of this story was really about trying to get people to focus on debating the merits of different technology rather than focus on the author of an opinion. I don't care about people having different opinions than me. In fact I strongly disagree with people who want harmony at any cost. The world moves forward because we challenge each others ideas and opinions. Some of my best discussion have been with people I disagree with.

As for programming languages I don't advocate any particular style of coding. I think when you see some Java code I am writing, that I am suggesting: This is how you should write Java code. No, not at all. I am showing people the kind of code practices which is being presented to beginners in the Java community. I am not presenting my ideas of how to code Java. I am presenting the ideas of the community.

I do in fact think criticism of mainstream languages and practices are in order. I have seen so many mindless and idiotic technical choices through my whole career. I began with the attitude: "Oh, they probably had a good reason to do it in this covoluted and overengineered way," only to eventually realize that there almost never was a good reason for the many idiotic solutions I have seen. The nobody-gets-fired-for-chosing-IBM kind of attitude is all too common. People go with whatever is big and well known. No matter how shitty the solution is. That something is widely used is not a mark of exellence. Sometimes it is just an outcome of flock mentality.

One of my biggest issues with Java is in fact not the language itself, but the type of solutions and practices it pushes. Community matters. Programming culture matters. I am not the only one who has observed that. Linus Thorvalds has made the same argument for why he objects to C++ code in the Linux kernel.

I don't get why we should stick to one single language. Surely learning best practices and becoming a good developer is not only about learning best pratices in a given language but also learning about different languages and their strengths. How is picking a different language to solve your problem different from picking another IDE or tool to go with Java or whatever language you use? A language is a tool like any other tool. There are tools that make you more productive and tools that get in your way.

Yes, an average developer is going to pick up the style that dominates in a language community and they are even likely to be force to follow that style. Most of us don't work as lone wolf developers. Others will use that code or you will be in a team. E.g. the Java community has IMHO lots of bad practices which you cannot escape without risking the wrath of fellow developers. Java is not alone in this. Try writing a class without setters and getters in C++, C# or Java. You can bet your code review will not go down well afterwards. Doens't matter if you have better ideas. The ideas of the commuity will be forced down your throat.

In fact an excellent argument in favor of ditching a particular language is to avoid the bad enforced practices that exist within that community. One of the beauties of Go, is that he language simply make it impossible to follow a lot of idiotic practices which have come to dominate in the Java and C++ world. Nobody can force you to follow an idiot practice if the language doesn't allow that very thing to be done.

You have to consider human psychology. It is not so straightforward that we are always pursuing the the most effective, simple and elegant solution. Often we are pursuing the solution which makes us look smartest. Many don't dear criticize overcomplicated solutions, because they are afraid of being called stupid or to just offend people. Despite how opinionated I sound in my writing, I mostly keep my mouth shut about terrible solutions which I see co-workers do. You don't want to offend people you know. Also there is a question of confidence. It is hard to know anything with absolute certainty in this industry. I don't want to come out with my guns blazing and later realize I was wrong.

You can read about that same psychology discussed around the Space Shuttle Challenger disaster. Nobody wanted to stick their head out and appear as the difficult person sabotaging the launch. Because so many were afraid of being wrong, 7 crew members died. Thankfully the consequences are not as sever for the the rest of us when we keep out mouth shut.

As for the importance of programming languages. To your maxim: There is nothing called good or bad languages. I wonder how willing you would be to accept the same argument about other developer tools? Is there no such thing as a good IDE or coding editor either? Just good or bad developers? If we followed that line of reasoning we would end up with coding by rubbing rocks against each other. Tools matter, and programming languages are tools like any other tool. A great language can make up for a shitty IDE. Just like a shitty language can be somewhat fixed by a great IDE.

Anyway, I liked this exchange. This is the kind of feedback and arguments I am more than happy to receive. You made arguments related to what I wrote rather than about me as a person and what I should or should not know. Hopefully I was not crossing any of your boundaries either.

Cheers,

Erik

--

--

Erik Engheim
Erik Engheim

Written by Erik Engheim

Geek dad, living in Oslo, Norway with passion for UX, Julia programming, science, teaching, reading and writing.

No responses yet