Reflections on Becoming a Self-Taught Software Developer
03/07/24
It doesn’t matter what gender you are, what the colour of your skin is or how old you are - there is always an option to become a software developer. Just as there is always a way to become a writer or painter. Software development is similar, because it’s a creative process, and you don’t need to invest anything but time to get started. It’s also very low risk - if you realize it’s not for you, you don’t have to recover from a large pile of debt or material investments.
In this post I will share with you some reflections on my own self-taught software developer journey.
The most important part is making the decision that you want to try becoming a software developer. If you read this you might already be at the next step. If not, you might wonder if coding works for you at all. This doesn’t need to be a hard decision, and there is always the option to just try it out and if it doesn’t work out, no harm done. Learning to embrace failure is a core skill of successful developers.
Bare Minimum Requirements
Software development doesn’t require much to get started, except a lot of long-term motivation. Additionally, you need a computer and access to the internet. Staying motivated is the hardest part of that journey. It will help a lot if you don’t have a strong aversion towards computers and if you enjoy solving problems, especially the mathematical kind.
The key to getting started is a smooth transition into coding. You shouldn’t jump into a programming boot-camp, quit your job and try to immediately hit a full-time job at a Fortune-500 company. Don’t enrol in a five-year software development college degree. You learn best by completing small projects, let’s do that instead. Start small and slowly grow taller.
Reading
You will read extremely much. Reading is pretty much all I’m doing the whole work day. You will read code, your own as well as others, you will read the company chat, you will read industry related news and blogs. I highly recommend you get comfortable reading a lot of technical books as well, that will carry you a long way.
If you don’t like reading at all, you might want to overthink the idea.
There are some widely recommended books for developers, that are very easy to find by googling a bit. You can also ask a chat AI.
Use the Technology That’s Available
And by technology I mean AI. I can recommend grabbing yourself a Github Copilot subscription, or at least try it out, they offer a free month for testing. GPT, Gemini or whatever AI is popular at the moment, will boost your learning effectiveness a lot.
Always keep in mind that the answers AIs offer can be plain wrong and the code it generates can be faulty. Even so, it’s very good with explaining code and concepts in programming, giving advice on books to read or podcasts to follow. GPT can be integrated nicely in VSCode nowadays, which will make it very convenient for you to ask code-related questions.
Start Projects You Can Actually Finish
The projects you will learn most from are the ones that you finish and fail. That’s why it’s most important to choose things you can finish. The hype for a prestige project will slowly fade away, and you will get demotivated in the long run. Don’t fall for the stories of people who started that exciting large project idea, finished a successful product and learned to code along the way. Don’t start with a novel, start with many bad and a few good short-stories.
Talent doesn’t matter. Don’t let anyone tell you that you are not talented enough to become a software developer. It’s all experience and practice. Choose your learning projects depending on your experience. It should be on the difficult side, but not impossible. The harder it is, the better it will feel once you finish it, but the higher the chance you get demotivated and not finish it at all. If you constantly feel bored, don’t bother finishing it. Drop it and pick something more difficult.
Compromise and Trust Your Instincts
At some point you will start your first real programming gig. It could be a small one-time project, an internship, or an actual full-time employment. It will most certainly not work out like you think it would. You will probably be paid much less than you should be paid. And that’s fine.
If you have little experience it’s okay to get started with projects that don’t pay well, yet you should always strive to avoid being exploited. Once you’re starting to work for real-world projects, you will slowly get an understanding of how much your peers are getting paid.
You should trust your instincts, show some boldness, but also know that you have to compromise. Sometimes a high salary comes with a price tag. Don’t just follow the money, but choose the job that makes you do what you like to do. Never cut back at your moral principles, only at the salary.
Long-Term vs. Short-Term Gains
If you are young and a bit like me in my early developer days, you might fall into the trap of prioritizing your career above everything else. This is to be avoided. It’s easy to fall for the short-term gains, but there are other priorities that are far more important. Your children and family are more important. Your physical and mental health, your financial stability, your pension plan and living situation, they are all more important than climbing the career ladder.
Working too much is a big problem in our society. Against what most people intuitively think, you actually get more done when working less. I used to work 50 hours a week in my job and used my free-time to learn and study. I did this for more than a year, and although I had a bit more income, I was not in a good mental state. Mistakes happened more often and my social life was in regress. It was only a few years later when I realized that.
Now I work 32 hours a week and I still use my free-time to study, but not as excessively. I just feel so much better now, live in a happy marriage, and I feel like I get even more quality work done than before. I urge you to try out the 32-hour work week, it’s awesome.
Your Company is not Your family
Companies often want to build a sort of family/clan environment. I can understand where this is coming from, but I don’t think this is a good thing, because it’s a tool that only benefits your management, not you. The company management can use this to increase your feeling of belonging, and with that put pressure on you, without giving your anything in return. It’s also used to create feelings of guilt towards “the family”.
You should value your company, and especially your colleagues. It’s a good thing to be a motivated employee and to work responsibly. Always try to be aware that it’s a business, not a family. You can be friends with your peers of course, but keep your relations to your managers and bosses on a strict business level.
Have a Pension Plan
Don’t rely on governments to take care of your pension. Demographics show that the pension system will get much worse in the future, and it’s already in a bad state. Put a small amount of money into an ETF portfolio each month. It should be an index fund, or a mix of them, with a large amount of different shares. A good solution is a so-called “world portfolio” with ETFs like the MSCI World and MSCI Emerging Markets indexes.
Try to avoid trading single stocks, or speculation in general, as this is the same as gambling away your money. The portfolio should be a very-long-term investment. Only do some rebalancing once in a while and sit out regressions.
Don’t listen to financial consultants that want to sell you investments. Managed funds don’t beat index funds in the long run. You will have smaller gains and your consultant will even get paid for that.
First Steps
If you don’t know how to get started, how about heading over to freecodecamp.org and learn responsive web design for free?