Most of the content on software development will tell you how great it is to be a software developer.
You can earn a ton of money, you get to work remotely, and if you are in the office there is free food and drink and even pool tables and games consoles.
What is there not to love about being a software developer?
Well for one, you aren’t going to have time to play on that PS5 sitting in the lunch room and as it turns out, there are quite a few things that no one is telling you about a career in software development.
There is so much to learn in software development that it is impossible to be an expert in anything beyond a very specific field.
You essentially have 2 options:
Personally, I prefer option 2. I would much rather be a generalist that can easily adapt as new technologies come out than throw all my eggs in one basket and become good at just one thing.
You will likely suffer from imposter syndrome at some point in your career. Even if you do become an expert at one particular thing, you will also likely be acutely aware of everything you don’t know at the same time.
If you are trying to learn as much as you can about multiple areas in tech it is important not to get too distracted by shiny objects. New programming languages and frameworks come out all the time, but only a handful ever stick around.
You might never become an expert in a certain field, but if you are constantly switching to every new thing that comes out, you won’t even get to achieve a level of proficiency that you can be proud of.
With everything there is to learn in tech it is no wonder that burnout is such a big issue.
There is constant pressure to keep up to date with new technologies and updates. For example, C# is soon to release C# 12 with more syntax changes to the programming language but it was only 6 months ago that C# 11 came out.
On top of that, when you are working as a developer, there seems to be an endless backlog of work to complete, and companies never seem to have enough developers to keep up with the amount of work they want to do.
This often results in tight deadlines and additional stress for all the developers involved. Some industries are worse than others for this. Game development is particularly bad as can be fast-paced startups.
I have suffered from burnout once and I got very close a second time but I started to recognise the signs and made some changes before it was too late.
In some cases, burnout can be somewhat self-inflicted. When I look back over my career it is often me that is pushing myself to work harder, trying to learn as much as I can and trying to prove to myself and others, that I deserve the success that I have received.
Imposter syndrome is real and it is not healthy if you end up pushing yourself to burnout to overcome it.
Take a look at the career website for any of the top tech companies and you will see a vast mix of ages, races and gender in the photos they are showing.
In some cases, they aren’t even that subtle and will just have an illustration instead.
However, if you are reading this then there is a 95% chance that you are male between the ages of 18 and 35. I know this from looking at my YouTube stats of the audience that watches my videos but it is also typical in a lot of tech companies as well.
In nearly every tech job I have had there has only ever been a handful of women among the software engineers and all of us have been either in our 20s or 30s.
This is a massive issue.
I have said it before and I will say it again. Software development is mostly about solving problems rather than writing code.
Studies have shown that the more diverse a group is, the quicker and more creative they are at solving problems. They have shown that diverse groups are 6x more innovative and agile, and 8x more likely to achieve better business outcomes.
If you are not one of the 95% then please give us a wave in the comments I would love to hear about your experience working in tech.
If you look at the senior engineering managers, the VPs of engineering or even the CTO. Chances are it won’t be their technical skills that got them to where they are today.
Most people in these positions are generalists rather than specialists. They have a large knowledge of lots of different technologies but aren’t an expert in any one of them.
This is what you want from someone in this position. It isn’t likely that they will be writing much code anyway and you want them to have an understanding of as much of the business as possible.
Equally, they need to be good communicators capable of talking to both the business and the developers.
So if you have your sights set on being the next CTO then you need to be working on your communication and social skills more than your technical skills. It doesn’t matter how good a programmer you are, if people don’t like working with you, you aren’t going to get very far in tech.
If you are a perfectionist, then you may find software development incredibly hard.
There are always going to be parts of your application that you aren’t happy with. When you are working for a company you need to find the right balance between speed and quality.
There will be things that you have to compromise on just to get a feature released, which is where most of the tech debt comes from.
You can tell yourself that you will go back and make it better later but realistically you probably won’t get time.
No matter how well you test your application there are inevitably going to be bugs in your code. It is just the nature of the game and you just need to do your best to avoid them.
A good product that you can release this week is much better than a perfect product that will take 6 months.