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
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
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
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
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