A Developer without Programming Language
Explore why developers stick with their favorite programming languages and how language choice impacts development approaches and personal growth.
Nowadays, I am a little bit more involved in History lessons. And those are also from Computer Science only. Specifically from a programming language perspective. Why on earth I am doing this—I guess the answer is given by Douglas Crockford over the Hanselminutes podcast. And personally, I love this part of learning. It is so delightful to know different languages and why languages emerge the way they do.
That is one part of the story. Now, I was talking with my friend about different ways of rapid game development, as we both like playing and making games. (Nothing reached the release level yet though :P). It is fun always. Now, he is working with C++ and I am a .Net guy until now. Recently, I became a web guy on paper with JavaScript skills, again on paper :P. But as I mentioned, I have a special love for languages.
Here comes the twist. As I have tried my hand at functional programming languages, there is one sentence about functional languages that stuck with me: "it is useful to develop algorithms." And it is like that only—it is very easy to develop algorithms with functional programming languages because of features like pattern matching, pipelining functions, higher-order functions, and other function-oriented facilities that are normally only possible with functional languages. So, I suggested that normally games should be done in some functional languages only, as it would be a lot easier.
But he is like NOPE!!!
No matter how many frameworks he needs to throw in to make the task easier, it should be done in C++ only. The only reason is he is so involved—or I must say in love with—C++ that he can't just leave it off. And I am just putting his example here, but I have seen this a lot. Not only C or C++ people, but also with C#, Java people. And there are other people who say that they are using open source, but basically they are just using free stuff, nothing else. People working with Linux-based technology and advocating free stuff—I am not saying this just like that because every argument ends with the sentence "And finally, it's free." But normally, C and C++ people are so tightly attached to the language in a way that normally no one else is.
Even on Twitter, there is one highly respected person who moved away from C# and the Microsoft stack to Ruby. And I also like Ruby—there is no doubt in that. But then there is no need to bash C# or the Microsoft stack. But he never misses a chance. Technically speaking, compiled languages are better in performance than transpiled languages. But does it matter??? It is just like—what is good for that specific point in time.
If I am loving something, it does not give me any right to bash the other thing.
And more importantly, we are developers. We develop things, and languages are just part of the tools we are using. And tools must be chosen according to the problem. We are in an industry where there is not the liberty to choose problems according to our tools. And the rigidity and reluctance about the choice of language, IDE, or even OS make things more miserable while solving real problems.
This lesson I learned from people like Demis Bellot and Amir Rajan, who always give priority to the problem over the language. You think Demis will stop working with ServiceStack as he also likes Dart, or that as Amir is more and more working with Node.js, he will not love Oak as he normally does? I don't think so. Everything is designed with some problem in mind. There is nothing that is just like that.
I am lucky enough to have friends who always crash my reluctance and push me hard to make me more flexible, and that helps to make the right decision for the right problem. And now I am also trying the same with others.
I am trying hard to become a polyglot developer, but I guess I have become a developer without any programming language. Just a pure developer.
Today's article is inspired by a wonderful write-up by Phil Haacked and today's conversation with Jessica Kerr.
@kunjee They have their identity tied up with "I'm a C# developer." To switch languages would be to change their self-image.
— Jessica Kerr (@jessitron) November 13, 2013
Frequently Asked Questions
Functional programming languages excel at algorithm development due to features like pattern matching, pipelining functions, and higher-order functions. These function-oriented facilities make it significantly easier to write and reason about algorithms compared to traditional imperative languages.
Developers should choose programming languages based on the specific problem they're solving, not personal preference. While it's natural to develop expertise in certain languages, languages are ultimately tools that should be selected according to project requirements and constraints, not emotional attachment to a particular technology.
Compiled languages are technically better in performance than transpiled languages. However, this performance advantage may not always matter depending on the project requirements and the specific point in time in which you're developing, making language choice dependent on actual needs rather than theoretical advantages.
No, switching to a different programming language doesn't give developers the right to bash or criticize their previous technology. Advocating for what works best for your current project is reasonable, but unnecessary criticism of other languages or stacks is unprofessional and doesn't reflect the collaborative nature of software development.