New developers: “How do I know what to learn and when I’ve learned ‘enough’ ?”

A question frequently asked by new developers is what to learn, how much to learn, and how do you know when you’ve learned enough?

Learn what you need to solve the current problem and then repeat for the next problem.

Don’t think about his as a finite set of knowledge that you need to learn and then that’s it, that’s the end. That’s not how it works. There’s always something new to learn, and there’s always something you’ll find that you don’t know.

Adjust your mindset to keep this in mind and you’ll be ok.

Programming Languages are tools. Learning a tool doesn’t make you a developer – more analogies

In Reddit programming subreddits there are never ending questions about how to learn a programming language to get rich, or how to learn language XYZ because ‘I need to get a job next month’. If the people posting these questions did only a few minutes of research by reading previous similar questions (you don’t have to scroll back too far before you’ll find another similar question) they’d realize how unrealistic their expectations are.

Learning a programming language doesn’t make you a developer. The analogy I like to use to answer these questions is that learning to use a hammer by itself does not mean you can build a timber framed house. I summarized this before in this post:

I have another analogy that maybe is more relatable given that some people are attracted to the Gold Rush of software development. Doctors make a lot of money. If you learn how to slice open someone’s chest to do open heart surgery then you’ll be able to get a job as a surgeon right? If course not, that’s not how it works. Similarly, learning a programming language by itself will not help you get a job as a software developer.

Principals and techniques are more valuable that specific skills

It seems like everyone wants to learn to program and become a developer nowdays, which is great, but there’s a noticeable trend online of people asking how to learn language xyz in the shortest amount of time imaginable and get a job by next month, which is a completely unrealistic expectation.

We all have bills to pay, I get it. However, whereas learning how to build a simple HTML page today may get you your first job and keep you busy for a few months, it may not keep you employed for long if you’re not prepared to keep your skills up to date and keep up with the industry trends.

Technologies in software development change quick. What’s hot this year may be out of date the next year. You need to commit to investing in keeping your skills up to date and to stay current with the current skill demands. If you’re a relatively new developer or are just getting started, it would help to do some research about programming languages and frameworks to get an understanding of how quickly things have changed in the past. In the early 2000s for example, every Java based web application was built with Apache Struts and it was replaced with Spring MVC (and a few others) in the space of a couple of years. Web frameworks have a significantly quick turnover. JavaScript based web frameworks and libraries have come and gone in the last few years at an alarming rate – jQuery used to be everywhere and is now is a second choice (or not even considered) over the main frameworks dominating this space, Angular, React and Vue.

It’s important to keep in perspective that programming languages are tools, and learning a programming language alone does not make you a developer. A comparison is learning to use a hammer when intending to get a job as a framer building houses – it’s more obvious to see how ridiculous that expectation is, but the same thing applies to only learning a programming language.

Principals and techniques are reusable and transferrable skills, no matter what programming language you are using. Focus on developing your software development skills first, and secondly a programming language.

A career in software development is a career of continual learning and keeping your skills up to date. Regularly invest in your skills and you’ll be able to enjoy a long and rewarding career in software development.

Invest in your skills development

Software development is an industry still in it’s infancy. Technologies are continually evolving, and trend come and go. What’s hot today can quickly get replace by something new tomorrow.

It’s foolish to think that you can learn one thing and then be done with your learning and continue in your software development career for the next couple of decades without learning anything new. The past decades have already shown that what’s the hot in-demand tech skill now is likely to be in demand several years from now. That said, there have been programming languages that have stood the test of time: COBOL. C, and Java are some examples.

In order to stay relevant, it’s important that you spend time to keep your skills up to date. Make a commitment to learn something new (a new language, a new framework) every several months. As you gain more experience you’ll start to make better decisions on new trends that you think will stay around for longer, or those which seem like they’re likely to disappear within a few years.

Bottom line: expect and and plan to keep your tech skills up to date.