Are you considering a career in software development? Or are you currently struggling to keep up? Achieving your goals is both easier and harder than you think.

I recently participated in a coding dojo as a teacher and I was really surprised to see how some of the participants, most of them with no prior exposure to programming, got hooked up extremely quickly to the world of software development.

The question that pushed me to write this article was asked by one of the enthusiasts on the day: “Do you think I could be able to learn to program and become good enough to make a career out of it?”. The only possible answer to the question is: it depends.

Cultivating a problem-solving mindset

A programming career is quite accessible in comparison to other careers. Do you have a working computer and a decent internet connection? Good, that’s all you really need to get started. Nowadays, there is an endless amount of learning resources online, you can begin learning or improving your skills right away.

If you are having doubts about pursuing or continuing to pursue a career in this space, there are a few important questions to answer.

Are you up for learning new things for most of your career? Are you able to cope with pressure and frustration? Do you enjoy problem-solving or you find it a burden? Are you willing to be disciplined about your work and ways of working? Are you a creator and in general passionate about building things?

If you answered yes to most of those questions you’re up to a good start. Otherwise, a career in programming might just not be right for you.

Some people just can’t bear with the struggles of an engineer.

You’ll have to be drawn to solve problems without any recipe and you’ll have to find your own ways to learn the skills you lack in order to solve them. You’ll have to be willing to commit some real time towards finding, building, and continuously improving your solutions. You’ll have to be disciplined and always collaborative. You’ll have to be prepared to bang your head against a problem for an extended period of time.

If you are expecting me to give you a list of 5 easy steps you need to go through in order to become an amazing software developer, you’re off on the wrong foot, it’s not that simple. Get out there, start your research, talk with people, get your hands dirty and come up with a plan that works for you.

Well, I’m actually going to talk about a list of things… so please keep reading.

Set your career goals

Depending on how ambitious you are, your software development career goals will either be rather easy to achieve or might require a change of lifestyle.

Not every programming job out there requires an insane amount of skills and mastery. If your goal is to get a decent programming job with some good career perspective, it won’t require a lot of skills, but it will still require some considerable time investment upfront in order for you to become good enough to be considered useful by an employer. On the other hand, if you are seeking to be one of the best out there, you’ll need to put in a serious amount of effort, and for quite a long time.

Most of this article will assume you are willing to go the extra mile to get the best out of this career.

Learn the tricks behind the magic

If you are staring at some new technology, whether it’s a new language or a framework, and it looks like magic to you, you might just be lacking some basics. Maybe you have missed some of the language features or it’s just a new programming paradigm you haven’t seen before, just look into it.

Learning the fundamentals is important. Make sure you’ll find some time to fill your knowledge gaps about the basics as soon as you can, or they will keep coming back to haunt you over time.

Choose the right tech stack for your goals

Choosing a technology stack mostly depends on your situation. If you are looking for a job and moving is not an option, base your choice on your local job market. If you want to improve your skills further and you don’t mind some competition, you might need to be prepared to move to a city with better tech jobs.

After you get comfortable with one technology stack, learn another one, even if you have to do it in your own time. After that, focus on learning how to effectively learn new technologies in a faster and smarter way. Again, do what works for you, some people prefer to learn from books or online resources, some others prefer building real projects. I would suggest doing both.

Being a fast learner will give you an edge when you’ll be required to learn new languages, frameworks, or paradigms in the future. Different technology stacks will also start to look familiar after getting comfortable with a few of them.

Nail that job interview

If you are struggling to get your first job or just a better one, the honest truth is that you are probably not good enough. If you attend an interview and you are better than everyone else you’ll be much more likely to get the job, it’s as simple as that.

It’s true that sometimes other factors might affect the outcome of interviews, like bad timing or a flawed interview process. Leave these excuses aside, you should just focus on building the best you, show your passion and make sure you look collaborative.

Do you suck at coding tests? Practice online on sites like HackerRank until you get comfortable with them. Do you get really nervous during interviews? Just go through a bunch of them until you get the necessary confidence. Do you have gaps in a particular area and it often comes up in interviews? Work on filling those gaps!

If you are not willing to do all of these things the other candidates will.

Put in the work

Once you have a good career plan in mind, all you need to do next is to put in the work. You won’t become a superstar overnight, so here’s where discipline becomes important. You will learn a lot but you will still fail to see some substantial results in the short-term, it might take some time but you’ll have to keep going.

Build software for your own use, work on some open source projects, read books and articles, watch talks and presentations, read other people’s code. Do endless research about topics you are ignorant about and don’t settle for solutions that “just work” if something is telling you that there must be a better way.

Remember to take a break when you need it, let your brain rest when it’s clearly telling you: “I am done”.

Brain shutting down…

Sometimes solutions aren’t easy to find, it could take days, weeks, or months to get to a proper solution for some of the hardest problems. Don’t expect to be able to go home every day having accomplished something, some days you might just make things worse.

To reiterate, spending a lot of time studying and practising is the most effective way to improve your programming skills or any other skill for that matter.

Use some of your extra time to write blog posts about what you think you know well, it will force you to validate your knowledge before writing about it. Unless you are ok with writing about things you don’t really know well (some people are). Learn to accept criticism on your articles and don’t let it undermine your motivation.

Use some of your spare time and money towards self-improvement. Buy books, attend courses, go to conferences. Some employers will also offer to pay for it, so don’t forget to ask.

Be in for the long run

Make it absolutely clear to yourself that getting really good at something requires time and effort. The more time you dedicate to something the faster you’ll improve. If you code and study 12 hours a day instead of 8 you will outpace your competition pretty quickly. Over the years this time adds up and makes a real difference.

I’m not encouraging working unsustainable hours but top achievers around the world didn’t just happen to be better than others, they’ve put in a lot of time and effort together with a high level of discipline.

Don’t overwork yourself up to the point it becomes counterproductive or causes a burnout, but be prepared to work long hours if you are striving to be the best and accept that mastery will take time, an awful lot of it.

You are not just a coding machine

Not everything needs to be about the actual act of coding. You’ll probably need to develop a bunch of other skills as well. Most developers don’t like to hear this, but soft skills will help you achieve your career goals.

Make sure you interact with people and learn to communicate effectively. Try to solve bigger problems, not only the ones related to your code. Learn to unblock yourself and stop asking your managers: “Can you go and figure this out?”. Build strong relationships with people who inspire you, and ask them questions, lots of them.

Don’t just write the code, learn about testing it and assuring its quality, learn how to deploy it to your production environment, learn about monitoring your applications, and most importantly, learn about security.

Challenge yourself to improve non-technical skills. Improve your public speaking, improve your writing skills, improve your management and leadership skills. You might end up realising that the problem-solving skills you are acquiring over time can be applied to a lot more than just your code. Keep expanding your horizons and become a learning machine.

Try to be the right kind of smart

We are only humans, after all. Some people are smarter than others, that’s a fact, but to develop a competitive advantage hard work and discipline go a long way. The question is: “Are you willing to do what it takes to make it as a Software Developer?”.