DEV Community

Cover image for 5 Hard Truths No-One Is Telling You About Software Engineering
Alex Hyett
Alex Hyett

Posted on • Originally published at alexhyett.com

5 Hard Truths No-One Is Telling You About Software Engineering

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?

Subscribe for more video content

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.

1. You are never going to be an expert

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:

  1. Niche down and learn as much as possible about one topic and remain relatively clueless about everything else.
  2. Learn as much as you can about lots of different areas but get comfortable with the fact you will never be an expert.

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.

2. Burnout is very common

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.

3. Diversity is a huge issue

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.

Slack Careers Page Illustration

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.

4. Social skills matter more than technical skills

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.

5. Your software will never be perfect

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.


📨 Are you looking to level up your skills in the tech industry?

My weekly newsletter is written for engineers like you, providing you with the tools you need to excel in your career. Join here for free →

Top comments (8)

Collapse
 
almostconverge profile image
Peter Ellis

I'd add one thing to point 4 if I may.

Social skills are important EVEN IF you don't plan or want to become a CTO. A lot of software development is about modelling human problems with no exact solutions, at least none that are immediately apparent. The quality of your software will therefore depend heavily on you as a developer understanding the problem space, and your likely source for that understanding is...other people.

You also need to be able to express your ideas and solutions to people, be they fellow techies or non-tech members of your company, or even customers/users. You need to be able to explain and justify decisions you make, you need to demonstrate that you've understood the problem and so on.

Of course not all of these apply all the time in every developer/tech job, but a lot of them do a lot of the time.

And that's before we get into how having healthy, respectful relationships with your co-workers can affect other areas mentioned here, like burnout or imposter syndrome. But that should be its own post, one which (ironically) I'm not qualified enough to write.

Collapse
 
alexhyettdev profile image
Alex Hyett

Very good point Peter. Yes the stereotypical developer who lives like a hermit rarely does well in a career in tech.

I would say a good 80% of my success in tech has come from being able to communicate, understand and explain problems to non-tech people in the company.

Thanks for your comment!

Collapse
 
almostconverge profile image
Peter Ellis

One clarification I would add to my own comment is that if you struggle with social contact for some reason, that's perfectly fine. You can be socially awkward, autistic, speaking in a foreign language and lacking in confidence, or anything and could do exceedingly well in the job at the same time. Don't force yourself to do things you personally aren't comfortable with doing. I think it's important to state this as there's a risk of simply replacing one type of gatekeeping with another type.

What I meant was: if you have the chance to improve your social skills, don't pass up on it just because you're trying to conform to a stereotypical image of how a developer should behave.

Collapse
 
ant_f_dev profile image
Anthony Fung

You're not kidding about new things coming and going - I still remember when Backbone.js was supposed to be the best way to develop Web apps.

Also, I agree with the generalist thing. Programming languages are different, but they aren't that much different on the whole. Gaining a solid foundation (and I don't mean the acronym in this instance) should open up possibilities to learn something else without too much trouble: not in a instant, but certainly faster than initially learning to program.

Collapse
 
devarzia profile image
Devarzia Barkins

Alex,

I absolutely love this article. Every bit of information that you shared here is true. The diversity part is spot on. I try to make the companies I work for aware of diversity issues all the time.

Thank you for sharing this.

Collapse
 
marissab profile image
Marissa B

People are saying these everywhere and they're not exactly new concepts...

Collapse
 
virtualmachine profile image
ByteCodeProcessor

People not processes -- Agile Manifesto
You see it in blogs, you see it in YouTube videos. YouTubers don't really talk in great detail about how the software engineering process used by their company from hiring to architecture to planning etc. If they do talk about it it's as anecdotes. I want a Google YouTuber to talk about how they plan, architect, design and the work flow of Google employees not make another day in the life video.

Collapse
 
alexhyettdev profile image
Alex Hyett

I am sure there are a few videos out there that go through the actual processes at companies however they don't always do well on YouTube so people don't bother making them.

To prove a point, the video for this article has had nearly 2,000 views in the first 3 days. Compare this to my video on Domain Driven Design which has had only 500 views in 10 days.

I have not worked at Google but from what I have seen many don't actually have insights into much of the engineering processes. They get given a very small task to work on and don't have much freedom beyond that.

I save my deep dives on particular topics for my newsletter as video is too much of a time commitment for no one to watch.