I have been having some thoughts about the state of the software industry recently and I decided to try to put those thoughts into writing.
I'm doing this instead of a video because I don't think it fits in the niche of my channel, so I thought it would be interesting to try to write an opinion piece.
I have been working in the software industry for around 11 years now, most of the roles have been for SaaS companies, which is the model that the vast majority of software companies follow these days.
In all these years in the industry, I have had this weird feeling of emptiness and lack of satisfaction about my work which the source I could never pinpoint.
That changed when I recently started working on YouTube videos and I think I can now articulate where that feeling comes from.
When you work on a video, like any piece of work, there are many things you need to do to get it done. Depending on the project, it can be A LOT of work. But here's the thing, eventually, you do get it done! Then you get to publish it and that's it, the job is finished, you can now enjoy the sense of achievement that you get from that and move on to something else.
Most lines of work give you that sense of finality and achievement.
If you work in the film industry or the music industry, your job is done when your work is released; tours are basically you sharing your work after that. If you are a lawyer, you get the satisfaction from maybe winning a case. If you are a real-estate agent, you get it from selling a house. If you are a civil engineer, you get it from finishing that bridge, or road, or building. An architect is when their design is turned into a building. A doctor is when they get someone back to health. An author is when their book is published. A woodworker is when their piece is finished. You get the idea.
That's not the case with software engineering. At most companies, the product is never done, you're always working on new features, reworking areas of the product, fixing issues and putting out fires.
You could argue that you can get that satisfaction from fixing a bug or finishing a feature, but the reality is that those are small parts of the product and even then, with the increasing speed we need to work and the constant changing of requirements, we often ship unfinished, half-baked, not fully thought-out features or worse, we move on to something else and never finish that work. All of that because the priorities have changed.
Things didn't use to be like that. In the 90's, for example, software was sold as packages. If you were a software engineer working on a product, you'd finish that version and then that'd be packaged and distributed. You'd always have that version of the product and something concrete that was proof of your and your team's work. Something tangible that gave you satisfaction of a job well done.
That's gone with Software as a Service. All the code you wrote for those poorly finished features of a product that is never going to be finished will eventually be modified enough that it will be gone, not to be ever seen again.
You could also argue that you can get satisfaction from solving complex problems. But the reality is, unlike job listings wants us to believe, most of us are rarely doing that. Most of the time we're making a button call a function that makes a call to a server and returns some data to the user.
Especially when you're more senior. At least when you're a junior you have a lot more to learn, and everything is cool and new.
The more senior you get, the more repetitive your work ends up being. You go to meetings, define your features, tickets, acceptance criteria, work on that feature until you release it or the requirements change and then repeat the whole process again… forever… because the product is never finished.
Of course, I'm not going to pretend this problem is exclusive to software engineering, there are probably other fields of work that have this same problem. But this is the field I have experience with.
Now you might be asking: Hey Eric, nice complaining, do you have a solution for it?
But I think this realization can help me find ways improve this situation for myself specifically.
And as much as I think this might resonate with a lot of people, ultimately this is my opinion and what I described here might not be the case for you, maybe you are an engineer that found other ways to get satisfaction from your work. Or maybe you do enjoy this open-ended nature of the products we work on.
If that's the case, I'd love to hear from you. Leave a comment below if you feel like it.