May 26, 2021

Polyglots are all you need

It can be difficult to plan your next development step, or know who to hire. How do you build and recognize the good from the mediocre experience? Consider polyglots: People that can program in multiple languages.

Polyglots are all you need

Experience is an elusive thing in our industry. From people in their late twenties who are obviously senior, to veterans who still don't understand the business of managing complexity. There are people who barely finished high school that write beautiful code in circles around PhDs in Computer Science. Not all experience is created equal. Ultimately, what you want in your team(s), is people that "understand code", but how do you get hired on, or recruit for, such a vague notion? What you want to be, or hire, is a polyglot.

Writing code well means translating business requirements into the right granularity of abstractions. That is what managing complexity means: Creating abstractions that are easy to interpret, adapt and remove. People that understand code have a knack for this process. They will not complain about reasonably shifting requirements, because they maintain a structure of abstractions that can be reshaped with the least amount of effort.

The best way to get exposed to a variety of patterns is to learn multiple programming languages throughout your career, i.e. to become a polyglot.  The cross-pollination between languages will bring the understanding of the craft to new heights. High level or low level, common or obscure, things you learn in a new language will also propagate back to the languages you already know.

On average it seems better to hire a polyglot, than someone with a similar amount of experience in the same environment. Of course, domain knowledge matters a lot, but (in this author's experience) it is usually a better investment to onboard a polyglot into your environment, than, for example, have a programmer who has been beaten up by the gang of four adapt to functional programming, or worse, have to explain data engineering to someone who never saw anything outside of the IO-driven event loop (sure, turtles all the way down).

Polyglotism solidifies the appreciation that a variable is a variable, a loop is a loop, a function is a function and a module is a module, across all languages, on every von Neumann architecture and beyond.

This seems to happen on top of the fact that any new language comes with its own set of frameworks, so new frameworks in general become easier to grasp. One gets an intuition about how a certain API should be behaving, because that's how you would implement it yourself and (to paraphrase a favorite German proverb) everyone cooks with water. Having more refined hypotheses to test during experimenting with a new framework accelerates learning.

In conclusion, it seems that our industry could benefit from celebrating polyglots more. Both on the side of the engineer that wants to hone her skills, as for the hiring manager that has trouble seeing through the buzzword-riddled resume jungle.