Investing in your skills development – how do you choose where to invest? (part 2).

I’ve written before about the importance of keeping your skills up to date, and this is a followup to a previous post, answering the question ‘how do you decide where you should spend your time?’

You can never keep up with everything, every new programming language, every new tech stack, every new trend; you need to understand and acknowledge that first.

Next, decide what matters to you, and where you want to spend your (limited) time keeping up to date. This is different for everyone, but it could be any combination of:

– keeping up to date with the tech you’re currently working with (all or parts of)

– keeping (or getting) up to date with ‘something else’ that maybe next on your horizon

– keeping an eye on upcoming and emerging tech trends. Trends come and go over time, some last longer than others. You can’t jump on every new thing that comes up, so you need to make your own decisions on whether something is likely to be part of your future or not. In other words, would it be worth investing your time in this trend or not?

The last point is hard when starting out because you have no past experience to compare against, but spending some time reading the chatter online will give you a rough feeling of whether something is increasing in popularity or not.

As with everything, you need to sensibly assess tech trends in order to work out what is pure hype and will never go anywhere, vs things where there’s some substance and is likely to evolve into something you should get more familiar with.

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.