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.

Getting started in software development: the majority of software development is not web development

Frontend dev gets a lot of traffic in software development online communities where new developers are just getting started. That’s understandable, since if you have a computer with a web browser, you only need a text editor of some kind and you’ve got all you need to start writing and running code. It’s arguably the most accessible area of software development to get started with.

The fact is though that the majority of software development is not web dev, and most is not even backend apis to support frontend apps either. If you think about the electronic devices that fill our lives nowadays, our phones, tablets, watches, laptops, even household appliances like clothes washers, microwave ovens, all these devices run software. Modern cars have multiple systems that are comprised of millions of lines code. And this is not even thinking about the business systems that are behind the curtain and invisible to most people, financial and accounting systems, payroll processing, all quietly running 24/7

There is no golden rule that says you should start your career by learning frontend dev first and then moving into other areas. Pursue what is interesting to you. Over their careers some developers may move back and forth between roles, some may only ever work on backemd dev and never write a line of HTML Find what interests you and go for it!