avatar

Wojtek Erbetowski

Pain of a polyglot programmer

Couple of year ago it was quite rare to meet a developer, who would be fluent in more that one programming language. There was no need for that. The only need was to know basic JavaScript to be able to add simple transitions on a website, which you most likely generated with languages like Ruby, Java, Python, PHP, etc. Even then some developers tried to fix that "problem" of using JavaScript by creating solution porting their language to JavaScript (e.g. GWT).

Back then a term 'Polyglot Programmer' was created (by Neal Ford, I believe) and, step by step, using multiple technologies began to be cool. I was always a fan of learning new things, especially languages.

I began my programming career as a Java developer. Soon I discovered Groovy and truly loved it. I was using two os these in parallel (popular duet - Java for production and Groovy for testing and scripting). After a longer while I had the chance to join a project written in Scala, which I took. I was stunned by how much I got used to the former technologies, how hard it was to shift my mindset.

I promised myself to change my environment even more often. This was a promise of the New Years resolution - I forgot it nearly right away. Some of the following projects took me through Python and Node.js ecosystems.

And by the time I went back to Java (fancy Spring boot app), my concerns confirmed - I was a beginner once more. It was easier to recall things, than to learn them again, but for weeks I wasn't fluent at all.

Couple of days ago my colleague asked me, whether she would get to appropriate level of knowledge changing technologies so faster (I asked her to join Node.js project right after Java project) and I wasn't able to answer.

It's great to be fluent in a technology. It's also great to be good at several ecosystems and have a wide overview. My problem is - I cannot have both.

Where to go next? There's a couple of options.

JavaScript All the Things!

I heard lately (as an anegdote) that in 5 years from now, we will send rockets into space on JavaScript. While it sounds funny, JavaScript is getting everywhere it can - Server-Side, mobile (both Android and iOS), web (of course) and IoT. The downside is what evangelists were trying to tell - this way you won't learn new paradigms nor ways to accomplish certain tasks better.

Distinct languages you maintain

As Martin Mazur mentioned in his talk from DevDay - he is maintaining his knowledge in some languages (five - wow!), and only learns more for new ideas and more context.

Standards and unification

Or maybe developers will be more into unifying things, and more and more technologies would share syntax, practices as much ass possible? Matt Asay sees a natural process in consolidate options.

What about you? Do you have a single strong skill, or are actively maintaining several? What's your solution?