Monoglots vs. Polyglots

Monoglots vs. Polyglots

When I speak with code school students, I often get asked some variation of, "What technology should I learn to be more marketable?" It is a fair question that I wrestled with as a code school student as well.

In 2016 I was enrolled in the Turing School of Software and Design's Backend Program, which taught Ruby. I had heard rumors that Ruby was a dying language and that it was impossible to get a job let alone grow a career only knowing Ruby.

Prior to 2016 I had some self-taught experience with Javascript. At the time that I was doing some initial job searching I had also heard that to get a job as a web developer you really needed to know React. As a result, I taught myself some rudimentary React by building a photo app, which I used to post daily photos of my newborn twins.

All that is to say that coming out of Turing I was pretty good at Ruby, okay at Javascript, and had some very basic understanding of React.

I ended up getting a job working on a Rails app with no React front end. So much for that! In hindsight, knowing what job I had I can easily list the precise technologies I used and wish I had taken time at Turing to dive into. But, every job is different.

Back to the question - which and how many languages should you learn? There are two totally viable strategies. The first strategy I think is more popular and it is that of the polyglot. If you are in the backend program at Turing, learn Ruby and get okay at Javascript. If you are in the frontend program at Turing, learn Javascript, and get okay at a second language like Ruby or Python (Python is more popular, but I do love Ruby).

The benefits for the polyglot approach is that by learning a second language that is not necessarily taught to you directly through a code school curriculum, you demonstrate that you can learn new things. You can advertise this skill by showing off demo projects and casually mentioning your experience with X during an interview. Less directly, proving to yourself that you can learn a new language may quiet the imposter syndrome demons.

The second strategy is the monoglot approach. Here you go as deep as possible in Ruby or Javascript if you are a Turing student - or whatever other language your code school is teaching. The benefit of going deep is increased proficiency and fluency. This might help you do better on technical interviews, which in my experience are typically language agnostic.

You may have more luck in a technical interview if you are highly fluent in a language such as Javascript, Python, or Ruby - all of which are great for string manipulation which is very common in interviews. These languages also are fairly succinct compared to some other language so it may be possible to answer an interview question with fewer typed characters with one of these languages than choosing Java or C++.

To be clear I'm not recommending only ever learning one language. Personally I know all computer programming languages. If you follow the monoglot strategy, though, the goal is total fluency in service of acing the technical interview.

It is sometimes shocking what candidates will have to Google in a technical interview. I've seen candidates Google things like "How do I define a function in X language" and "How do I do a for each loop." Why a person would choose to interview in a language that they'd need to look up these basics in is beyond me. On the flip side, I've seen other candidates choose languages that they are absolute scholars of and in those interviews I usually learn something.

The real answer is that it depends. It depends on which strategy seems more compelling to you. It depends on which will lead you to actually practice your new craft - learning another language or focusing on the one you are starting with. It depends on whether or not you think you can parlay experience with a few technologies into a job offer more successfully than you would with just one language fluency in your toolkit.

Good question and in a year when you are working at your first dev job you can compile a list of technologies that would have perfectly prepared you for your current role.