In the past two podcast episodes, we’ve covered how to know if tech is for you and some of the careers you can pursue. But before you can dive in, there’s one more burning question to answer…what programming language should I learn!?
Obviously, the specifics depend on what direction you’re pointing in. But how do you begin to figure that out?
This week’s guest, David Clinton, writes technology books, articles, and training materials, in addition to teaching courses on Pluralsight. His own career transition was sparked while he was teaching at a school in the 90s and searching for a good video conferencing tool to create a virtual classroom. His search led him to Amazon Web Services, which is a large part of his career specialty today.
But sometimes, you don’t stumble onto your own “ah-ha!” moment that organically — and that’s okay too! There are proactive things you can do to help give yourself a direction and, from there, choose what programming language to learn first.
Disclosure: I’m a proud affiliate for some of the resources mentioned in this article. If you buy a product through my links on this page, I may get a small commission for referring you. Thanks!
Narrowing Down What to Learn: First Steps
The very first step, David says, is to choose one of the broad categories of technology. He highlights four:
- Coding: “The broad spectrum of coding, Python and Java, HTML, CSS, bash scripting, or even PowerShell.”
- System administration: “Cloud computing like AWS, a whole world of network administration under the banner of Cisco.”
- Data science, machine learning, artificial intelligence: “These skillsets overlap with one another.”
- DevOps: “And finally, there's the DevOps world, which is related to the continuous integration, continuous deployment, the technology, the techniques for bringing applications and software to actual deployment in the real world, which again, overlaps with other domains, but is its own world.”
Chances are, you’ll be instinctively interested in one of these categories. “A lot of people have a natural leaning towards one or the other of these technologies,” says David. “They may have a little bit of experience, or they have a relative who's involved. So leverage that advantage of any entry you already have.” If you don’t, it’s fine to explore them all; it’ll just take a little longer.
Then, dive into further research, using books, articles, and Wikipedia pages to learn more about your chosen area. Check out introductory tutorials and projects to get a taste of what the learning process will be like. Sometimes a good way to answer “What programming language should I learn?” is to just spend a week on three or four of them and see which clicks.
“It's so easy to try new things safely, without a great investment of time, effort, or money,” David says. “You can create these virtual sandbox environments on your PC or laptop using Virtual Box, where you can experiment with administrating a particular version of an operating system, or coding, or running an application experiment. And if you make a terrible mistake and you break the whole thing, you can start a new one in seconds.”
That said, David cautions against using personal enjoyment as the only metric for your decision. “Try to understand what the strengths of each programming language or environment are,” he advises. “For example, Fortran is a great language. But I wouldn't recommend a lot of people learn it right now. You may enjoy it. But it's not going to lead you to a lot of employment.”
One important question to answer for yourself is why you want to learn a certain technology or skill. Sketching out your goals will help you stay motivated and on track. For instance, if your goal is to build a future-proof career, consult the Occupational Outlook Handbook from the Bureau of Labor Statistics, which uses statistical analysis to determine the future viability of various careers.
Or, if you have your eye on a certain company or role, look into what languages and tools they will most likely require. “So if you want to learn the Linux administration or Windows administration, understand the strengths and weaknesses of each platform, of each environment, and how they may lend themselves well or not well to the particular career or job you're looking for.”
Monitoring Technology Trends and Industry Professionals
To make wise decisions for your own career, it helps to have a broader sense of the trends in the tech industry at large. “I regularly follow technology news feeds like ZDNet or Ars Technica,” says David. Spending just 10-15 minutes a day reading tech news gives you that sense, plus “a little bit of a head start when something new is on the on the horizon.”
Specifically, follow people working at jobs you’re interested in. “Finding the news feeds that speak to your specific interest is important. You get perspective from reading people who do it all day.”
This is particularly important when you’re in the tech industry, because of the speed at which things can change. As David says, “Keep your eyes open, because there's always something new that's coming down the line.”
When you’re still deciding what to learn, doing this can also help you identify areas where demand is high for a certain skill or language.
Figuring Out How and Where to Learn
Once you’ve answered “Which programming language should I learn?” the obvious next question is “How do I learn it?”
And while this is another question that must be tailored to your individual situation, there is some general knowledge that will help.
Two options for more “formal” training are bootcamps and traditional colleges. Triplebyte compares these options here. Notably, computer science graduates tend to be better at algorithms and data structures, while bootcamp grads shone at web programming and certain practical skills. (Sidenote: you can hear my interview with the co-founder of Triplebyte here!)
The advantage of bootcamps is that they’re cheaper and faster than college, while still getting you job-ready. If you’re interested in a bootcamp, check out my ultimate guide to online coding bootcamps here.
However, you can certainly learn on your own by combining the excellent tools and resources out there. It’s almost always better to start with these, rather than committing to a costly and time-intensive program.
Books: Don’t rule out the old-fashioned way! As a technical author himself, David loves learning from books. He specifically recommends books from Manning Publications, which focuses on computer-related content. (Or check out David’s books, like Linux in Action (Amazon affiliate link)!)
Online courses: There are free and paid online courses out there for just about every tech topic under the sun. When you’re just experimenting or learning beginner concepts, free resources are fantastic (see: 71 of the Best Places to Learn to Code for Free). Once you begin leveling up, you might notice that the free content doesn’t cut it anymore. When that happens, it’s time to explore paid platforms (see: The Best Places to Learn Web Development Online).
Forums and documentation: Consider these two things as more supplemental learning rather than your primary source. “Companies/products like AWS and Microsoft have their own documentation stores which can be very good although a bit long but well-maintained,” says David. As for forums (like Stack Overflow), they’re great for crowd-sourcing solutions to problems…but prepare with a thick skin. “Make sure you've done your homework and make sure you're emotionally prepared…but it's worth a little public shaming to get the information you need.”
The Importance of Focusing on One Topic at a Time
While you should certainly explore different topics during your selection process, once you’ve chosen what programming language to learn, it’s important to hone in. “Don't jump out of one study to start something new, until you've mastered the first one,” David says. “Have something under your belt and then move on to something else.”
Why? Because it allows you a deeper focus and knowledge of that language. You won’t get your wires crossed by trying to learn four at once. Think of it like trying to learn French, German, Chinese, and Spanish all at once: it’s just confusing and more difficult to gain mastery of one.
Plus, there’s the time factor to consider. “You can't jeopardize your current job, or family, by learning loads of new careers all at once. You have to balance it with everything else going on in your life.”
However, if you’ve dedicated your full focus to learning one thing and it just isn’t working for you, you can absolutely pivot. Maybe you’ve realized the demand isn’t there, or you’re interested in something else, or the challenges are burning you out.
In that case, moving on to a new focus is wise. “There is a point where the Law of Diminishing Returns tells you that the more effort you put in is not going to pay off in the end,” says David. “It's hard to tell you when that you've reached that point. Ask somebody who can give you an objective answer, like a mentor, or post on Stack Overflow or Reddit. If you get two or three objective opinions saying it's time to bail out, it probably is time. Cut your losses, break out and try something else.”
That’s also the benefit of starting with free or cheap resources: it gives you the flexibility to change your path if you need to.
“What programming language should I learn?” is obviously a personalized question requiring a personalized answer. But these strategies and resources should get you started on the right path.
Links and mentions from the episode:
- Bootcamps vs. College
- Occupational Outlook Handbook
- David’s website
- David’s books
- David’s courses
- Solving for Technology
- David on Medium
- Big Blue Button
- Amazon Web Services
- Linux Professional Institute
- Stack Overflow
- Linux in Action (Amazon affiliate link)
- Ars Technica
Where to listen to the podcast
You can listen to the Learn to Code With Me podcast on the following platforms:
If you have a few extra minutes, please rate and review the show in iTunes. Ratings and reviews are extremely helpful when it comes to the ranking of the show. I would really, really appreciate it!
Special thanks to this episode’s sponsors
Xojo: Want to create native apps for desktop, mobile, web, and Raspberry Pi–all at the same time!? Xojo is a cross-platform development tool that makes building apps easier and faster than ever. Check out xojo.com/learntocode and get 20% off with the coupon code ICANCODE.