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.

Software development is hard. Don’t let anyone tell you it’s easy.

For new developers getting started learning their first programming language and software development in general, it’s common to find it difficult to get started. It’s also common to struggle to get beyond the point of the simplest ‘hello world’ app, because building anything more than this requires significantly more understanding of key concepts, like boolean logic and iteration.

I see too many posts shared online where new developers are asking how can they get started quickly, or questioning how long it takes to develop skills to some level of competence. What these new developers tend to have not realized yet is that learning a programming language, learning tools and frameworks, learning software development in general is not a finite activity. There is no definite answer to these questions, because you will always be learning something new throughout your career, and you need to make a conscious and ongoing effort to make sure you keep your skills upto date and relevant.

At it’s core, there is no escaping the fact that software development is a complex and difficult activity. It requires a combination of many skills, from understanding a problem, finding effective solutions to a problem, and implementing a solution by converting concepts into instructions that can be executed by a computer. Learning a programming language is just one small part of this, but the process and speed that a developer can learn a language can vary dramatically – it could take a few months to a couple of years, at least to get to a point where you can comfortably use the features of the language to implement a solution. It doesn’t stop there though, at this point you have an understanding of the bare minimum, because software development as part of a team usually involves a much larger ecosystem of supporting tools, like issue trackers, version control, build and deploy tools, and runtime platforms.

If you are just starting out and are intimidated by the seemingly impossible task to learn how to develop software, stick with it. It will take a commitment of time to build up your skills and experience – you need to be thinking in terms of months to 1 to 2 years. If you’re looking at this and thinking this is something you can pick up in a couple of weeks, that’s completely unrealistic and it’s not going to happen. As long as you are dedicated and committed to learning, and have enough time and realize that it will take time, you will get there.

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.

It takes time to learn your first programming language

New developers frequently post online questions like “how long does it take to learn JavaScript” or “how long to become proficient with Java”. The thing is, everyone is different, we all learn differently, we all learn at different rates. Don’t pay any attention to whether some other developer learned language xyz in 1 week or whatever time they say.

Rather than focus on fixed time goals, it’s important that learning to develop software is an ongoing and continuous activity. You don’t ‘finish’ learning how to code, there is always something new to learn because the industry is still evolving, or tools, libraries and frameworks are always evolving. Trends also change. What’s the hot new frontend framework today may be replaced with something completely new 6 months from now.

It’s impossible to give a precise answer to ‘how long will it take me to learn language xyz’. Instead of thinking about a finite journey, you need to accept that a career in software development is a career of continuous and endless learning, and to keep your skills relevant and up to date you need to commit time and effort to your skills development.