DEV Community

Ben Halpern
Ben Halpern

Posted on

Just learn a language. Popularity be darned.

Tell me if you have heard this premise before:

The poster, Abisekh subedi is dealing specifically with the paralyzing uncertainty that comes with breaking into software development or taking an career leap. There are so many options, and plenty of devs to tell you why each is the best. How can a newer dev possibly be sure of their choice when every one is met with a million voices prescribing an alternate path, pointing you to another, only to find the same voices when you venture down the other direction.

I thought this comment was the perfect response:

The solution is simple.

Ignore literally everything people have ever told you to learn, pick one programming language that looks interesting, and Google for its official tutorial.

Can't decide? Then just write all of the languages you're considering on slips of paper, put 'em in a hat, and draw one.

Above all, just learn a language. Popularity be darned.

I'm not sure the official tutorial is always the right place per se. Your mileage may vary on that part, but the advice is appropriate: There are many correct answers in software development. Diversity of languages and domains means there is opportunity for growth in many directions and your choice isn't that important.

In addition to ample career potential in mastering a pretty much any technology in our field, the important part about learning a language, popularity be damned is that the act of learning something all the way through is the actual skill you'll be using throughout your career. There are many stages of learning and making use of the tools in software development including reading the docs, debugging your issues, combing through codebases, contacting members of the community, attending workshops and conferences, blogging and teaching others and everything in between. Gaining experience in all of these areas is what you are really learning. The technology is simply a detail at this point. You are learning to learn.

All this being said, you need not go in completely blindfolded. Do some basic advice-seeking and figure out what fits your approach and feel free to keep experimenting as you go, but in Abisekh's case and many others, they have some idea of what they might be into, and at that point they can jump in and get going.

But aren't there some dying technologies I should avoid?

There are a few languages and domains truly fading away, but the rumors of most software demise is grossly exaggerated. A lot of times "dying" just means "mature" or "boring". Boring is often a good thing. I write a lot of Ruby code, and I've had my concerns about its future place in the word, but I've come to realize that its benefits are as true today as they always were and the future is bright—even if it's fading away from the front page of Hacker News. It seems like Ruby when from "hectic and unstable" to "old and dying" with about five minutes of prominence in-between. But this is all a mirage I assure you.

Here are some great comments from a thread I started on the topic a little while back:

I think the one thing that will always keep Ruby around is how easy it is to start off with when you're first learning to code. The readability of it, its elegance, the Ruby community -- these things lower the barrier of entry when it comes to being able to pick up a language, its associated framework, and the different contexts in which it ends up being the right tool for the job. It makes it really easy to hit the ground running and start being productive, particularly if you're still fairly new to the field.

Ultimately, though, I see Ruby + Rails being used more and more as an API layer. While the JavaScript wars mean that front end frameworks are in flux all the time, Ruby feels like a far more stable choice for architecting an API that people will be able to work on and contribute to easily. I'll be interested to see how Ruby adapts and changes to high-performing (read: much faster) languages, like Rust. Personally, I'm keeping my eye on things like Helix, which makes the future of Ruby seem super bright.

Ruby's decline was predicted in 2006 in a blog post by David Megginson (a Python programmer) about "the programming language cycle". In that blog post, David outlined a theory that programming languages are invented by elite programmers trying to differentiate themselves from the 'riff-raff'. David concluded his blog post by writing:

The final and most important point here is that a programming language’s perceived coolness will always suffer from its success. Java cannot possibly still be cool when there are thousands of regular developers slaving away in the bowels of ACME Widgets using it to write enterprise applications. If, in fact, Ruby displaces Java in the enterprise (which may not happen, since Ruby has no advantage over Java to match Java’s memory-management advantage over C++), it will suffer precisely the same fate, and we can expect Bruce Tate to write a book Beyond Ruby in five years or so.

By that measure, Python’s very failure is a kind of success — as long as it never really becomes takes hold in the workplace it will always carry a small degree of distinction with it, and at least a few elite developers won’t feel pressured to move on. Like a movie or band that never becomes too popular, Python will hang onto its snob appeal.

The implication of David's blog post though is that new programming languages aren't solely (or even primarily) motivated by technical concerns, but by elite programmers' desire to retain their social standing. So even though Ruby may have "declined", it is still a great language...just like PHP...just like Java...just like C++...etc., etc..


It's not going to be easy, and the word just should perhaps be avoided when describing a lengthy and taxing journey. Basically this is what I'm talking about:

Top comments (18)

kaydacode profile image
Kim Arnett 

Yay! Yes!
Just get started. You’ll start to find what you like, what you don’t like about a technology, and then you can do research to find what your going to learn next to fill whatever you’re not enjoying about language 1!

It’s not a death sentence, you can change if you don’t like it. 🙃🙃 theres Jobs in every tech stack.

ben profile image
Ben Halpern

ky1e_s profile image
Kyle Stephens • Edited

To be successful you MUST:

  • Write a blog
  • Have many personal projects on github
  • Know X, Y, Z technologies

Nope, nope and nope.

Just get out there and have fun. There are fundamentals that will always ring true, no matter the technology or the domain you are applying the technology to.

Read, learn, have fun and enjoy.

mortoray profile image
edA‑qa mort‑ora‑y

Check. Check. And Check.

Oh wait, that's a list of stuff I don't need to do. :)

Realistically, the amount of stuff I do "publically" is far outweighed by the amount of stuff I just do on the side. So yes, just do something and don't worry about its relevance.

richjdsmith profile image
Rich Smith

I spent 4 anxious months researching, deciding, doubting myself, then doing more research into languages.

Boy do I ever regret not just starting 4 months earlier. 😬

With the world of JavaScript screaming at you about how TheLatestGreatJS.js™ is the future of all web development and development in general (hello react native you frustrating thing, you!), it's easy to get swept up in perpetual doubt.

Stop. Take a breath. It will be fine.

Honestly, if you're learning to code, you'll hear it a dozen times "it doesn't matter which language you learn, once you learn one, you can easily learn another". That's because it's true. An if statement is an if statement, regardless which language it's in. I spent a long weekend playing around with Python a few weeks back and boom, I can use python. Am I great? Nope, but now I get the joy of getting better :)

This is one of the best articles I've seen on this subject, thanks for writing it Ben, I hope beginners everywhere see it and read it, then reread it regularly.

For what it's worth, I learnt Ruby (and rails, because who doesn't?) first, then got sucked into JS (well, js hell imho), then got pretty good with Elixir and Phoenix. All are great, all have faults. In the end, and as of last week, I'm back to using Ruby and Rails because it's my favorite. Sure Elixir is lightning fast, but I like the joy that comes with Rails thank you very much.

restoreddev profile image
Andrew Davis

I agree! The pressure to know the hit, most popular language can be frustrating. If you pick a language by looking at Hacker News you will be using Rust and have no job prospects. In reality if you want a programming job, one of the simple ways to pick a language is to look at what is most popular in your area and just pick the one you like the best. You can learn other languages later.

moe64 profile image
Moe • Edited

:pray: Once you know one language really well, picking up other languages (as needed) will be easier.

thatjoemoore profile image
Joseph Moore

More than learning language X or framework Y, the most important thing to learn is how to learn. Even if two projects use the exact same language, framework, etc., they're still likely going to have different business domains that you need to quickly learn about.

It takes a lot of time and self-awareness to learn this skill, especially since your most effective style of leaning probably won't match mine. It's also likely that the most effective learning strategy for you will vary over time and from subject to subject, so it's important to, through trial and error, assemble a toolbox of learning strategies.

The best part of learning how to learn is that it's a skill that will also help you in life in general, not just in your career. Both our field and our world are changing rapidly, and the ability to learn and adapt are quickly becoming the most valuable skills you can have.

I've been programming for about 15 years now, and I've learned a lot of languages and tools. I've only actually used a handful of them in my job (try convincing your workmates that using a Lisp is the best solution to their problems. I dare you.), but I have also learned how to quickly identify the things I can learn that will have the most immediate positive impact on my job.

One thing that, as I've gotten faster at picking up new things, has come in handy is the idea of "lazy" or "just-in-time" learning. I don't try to learn every new thing, I just try to be aware of what new things are coming down the pipeline and have a rudimentary understanding of their strengths and weaknesses. Then, when I need to use some new thing, I dive in and learn the relevant parts for the task at hand.

alephnaught2tog profile image
Max Cerrina

One thing that, as I've gotten faster at picking up new things, has come in handy is the idea of "lazy" or "just-in-time" learning. I don't try to learn every new thing, I just try to be aware of what new things are coming down the pipeline and have a rudimentary understanding of their strengths and weaknesses. Then, when I need to use some new thing, I dive in and learn the relevant parts for the task at hand.

Ooooooh, I really like that.

northgoingzax profile image

Reminds me of the phrase:

What do you call someone who is good at PHP? Employed.

Or that other phrase:

What do you call someone who is good at Python? Employed.

What do you call someone who is good at Ruby? Employed.

What do you call someone who is good at .NET? Employed.

What do you call someone who is good at Java? Employed.

What do you ca...

codemouse92 profile image
Jason C. McDonald

Heh! Never thought a comment I'd write as I was running out the door would inspire such an EPIC article! Bravo, Ben.

The only reason I said "official tutorial" was because the poster was already flooded with course recommendations. The official tutorial may not be optimal, but it's a starting position! That said, I agree with you...if you know of a better resource, start with that instead. :)

And, haha, nice catch on the word "JUST". There ain't no just about it, is there?

maxwell_dev profile image
Max Antonucci

Another point about why your first programming language shouldn't be such a paralyzing choice: once you learn one language, all the basics and principles will carry over to the next. The first language I really learned was JavaScript. When I started learning Ruby at least half of that knowledge (variables, functions, conditionals) carried over, and the only really big change was learning classes and the object-oriented thinking.

So basically it's a similar point of not learning a specific language, it's learning programming as a whole. Once you do that, picking up specific languages and frameworks as you need them is simply part of your daily routine.

stefandorresteijn profile image
Stefan Dorresteijn

To be fair, this depends entirely on what you're looking to achieve. If you just want to learn "software development" as a whole, yes, just learn whatever you think looks most fun/interesting.
However, if you're on a budget and need to find a job with the language you're learning very quickly, there are languages you should avoid.

dopamine0 profile image
Roee Fl

Good post

dddddannnnn profile image
Dan Buben | StartupNews

Great post! Too many people google stuff like "top programming language to learn in 2018". That is NOT a sustainable career entry point.

wesnetmo profile image

and don't let other people tell you what's good and what's bad.
we got plenty of fanboys in our industry.
learn as much as you can and develop your own opinion about stuff

jjsantos profile image
Juan De los santos

Couldn't be more right... Focus in a single language or environment is the best way (in my opinion) to learn something properly.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.