What programming language should I learn first?

Jason Slusarchuk
Ambitions of a Recovering Salesman

--

Most career paths seem to be fairly straight forward when it comes to choosing the tools of the trade you need to learn. Want to become a doctor? You learn how to use a stethoscope, a scalpel, and how interpret x-rays. Want to become a salesperson? You learn how to use PowerPoint and a CRM application. Want to become an architect? You’ll probably want learn how to use a drafting table and AutoCAD.

When it comes to developing software however, there are about as many languages, frameworks and tools that you could learn as there are applications you could choose to build.​ Selecting the right set of tools for a project can be a formidable task and that’s assuming you already have a good grasp on the strengths and weakness of the myriad options. So how, as a programming neophyte, does one choose their first language to learn?

What I’ve quickly discovered is that there are many, many opinions on the subject. And to be honest, it can be a bit overwhelming as it does seem as though each unique perspective argues legitimate points. But they can’t all be right, can they? If one person says I should learn the MEAN stack first and another says I should learn Ruby/Rail first, who’s right?

Well, after sifting through a bunch of these opinions and looking over the job boards, it’s my opinion that it generally doesn’t matter which language you choose when you’re just starting out.

Here are three observations I’ve made that have led me to this conclusion:

1. ALL programming languages have strengths and weakness

It’s easy to get caught in the trap of thinking that one programming language is intrinsically better than another. That perhaps — to borrow a quote from the Lord of the Rings — there is “one [language] to rule them all”. Well, this just doesn’t appear to be true.

Every programming language is opinionated to some degree it seems. For example, C++ prioritized computational performance, JavaScript was designed to work in browsers and make websites more dynamic, and Ruby was designed to make coding more enjoyable for humans by using syntax that is easier to read and write for humans. All of these attributes could be considered desirable, but I do not believe they all exist within one programming language.

And while it may appear that some languages are better suited for certain purposes on the surface, the whole point of writing code is to develop actual software and modern applications are complex and multi-faceted. For example, you might have an application that uses JavaScript on the front-end, Ruby on the back-end, and C++ or Scala to build high performance components. This application might also offer a mobile experience, in which case you can throw Swift or Java into the mix as well. And after working for software companies for the past 14 years, I can tell you this approach is very common.

So does that mean you need to know all of these languages to get hired? No. Eventually, you’re going to have to be multilingual, but you don’t need to worry about that yet. No one enters the workforce knowing everything about everything in their chosen field of work. Breadth of knowledge comes only with time.

2. The law of supply and demand apply to all industries

It’s true that the popularity of programming languages ebbs and flows. Right now, JavaScript seems to be really hot. 10 years ago, Ruby/Rails was the in thing. 10 years from now it’ll probably be something different. It can be easy to worry excessively about whether or not your investing your time wisely.

“Did I pick the wrong language?”

“Will it be obsolete in x years?”

“What’s that new thing over there?!”

As these shifts occur, it’s important to remember that as “legacy” languages and frameworks make way for the shiny new up-and-comers, they leave in their wake an entire generation of applications that were built with those tools. Applications that will continue to run and will still need to be supported by people who are proficient with those tools. Also remember that older, established languages are often considered a safer bet, especially by large organizations. They have fewer bugs, better documentation, larger libraries of pre-written code, and in general, are a known entity.

And guess what else happens when the developer zeitgeist moves on the next big thing? The supply of new programmers who seek to learn those older, more established languages and frameworks goes down. They’re boring right? Well, that may be debatable, but what isn’t debatable is the economic theory of supply and demand: When the supply of something goes down in relation to demand for that something, the price goes up. So while there might not be quite as many jobs out there as there once was for the older languages, those jobs will likely pay better.

A good example is the programming language, FORTRAN. FORTRAN is one of the oldest programming languages out there, first released commercially in 1957. And while certainly not as popular as a modern language like JavaScript, a quick search for jobs on Indeed requiring FORTRAN experience will net you 845 listings. 157 of which pay more than $110,000 per year. Not too shabby, eh?

3. Being a good software developer isn’t about the language

Great artists are not recognized for the medium they use, they are recognized for their knowledge and understanding of universally important skills of the craft such as lighting, perspective, composition and proportion. All of this shaped through thousands of hours of practice.

It seems to me that software development and programming follows a very similar paradigm. Take for example this technical interview example from Google:

The problem presented is actually quite easy to understand, even to someone who has little to no experience with programming. So if the language was that important, why would a company like Google ask a question that requires little knowledge of programming in a technical engineering interview?

The reason is that Google cares more about how you think. They’re hiring engineers for their ability to design efficient solutions to challenging logical problems; a skill that has little to do with any one particular programming language. It’s only after the solution concept is designed that the interviewer asks the candidate to write out some code. And did you notice she didn’t really care what language he chose? She left the choice up to him.

Now I’m obviously not suggesting that a programming language or framework has absolutely no bearing on designing efficient solutions in software development. As previously discussed, we know that every language and framework was designed to make some facet of programming life easier or better. There are indeed pros and cons to the tools used based on the project outcomes that are desired. But what I am saying is that when you’re just getting started out, it’s far more important for you to focus on the fundamentals first, and you can learn those in any language. Only once you are well on your way to mastering the fundamentals will you then be able to effectively compare and contrast the strengths and weakness of multiple software development tools based on the nuances of their design.

Picking a language to learn when you’re just getting started feels like a monumental task. I know how you feel, I’m going through that experience right now too! With so many potential starting points and so many opinions, it can be easy to second guess yourself into doing nothing at all.

So I say, don’t worry about all that noise! As pre-junior software developers, we don’t know enough yet to even make sense of all that deeper level (sometimes philosophical) discussion surrounding this topic.

Instead, focus on learning one language, any language, really deep. JavaScript? Sure. Ruby/Rails? Sure. Java? Sure. Python? Sure. They can all generally do the same things.

Get to know your language inside and out so that you know it like the back of your hand. Only then can you begin to explore and practice the skills that make a software developer truly great: logical thinking and the ability to solve problems efficiently. And once you have those skills, learning a new language is as simple as memorizing the new syntax and perhaps a few extra design patterns. Much easier by comparison.

So remember, while knowing programming languages is important, the best employers are looking for a different set of skills. Problem solving skills. And that can only be learned by going deep into a language. Pretty much any language. So pick the one you’re most drawn to and don’t look back!

--

--