Or learn how to become a master of your own faith.
The goal of every successful team is to eliminate the dependence on single individuals. This applies to software teams as well. A good software team is like well-designed software. It is coherent and has loose couplings among the individual members. Removing a team member, even the most senior one shouldn't be felt throughout the team.
This is why I often frown when approached by a recruiter or some mid-level manager wanting me to "help build the future vision" of their company. I wish, they were honest and admitted they need someone to either:
- Keep an existing piece of software alive
- Fix an issue that prevents the business from reaping the profits it projected.
- Extend a legacy system that's about to become a bottleneck.
An established company will rarely hire a software developer to do a job different from the ones listed above. Yet, recruiters keep pitching those jobs, as if one were supposed to find the miracle answer to all answers in the Universe. It appeals to the ego and personality of the engineering mind but it also sets forward a path of false expectations. Each new opportunity presents a chance to work on something "different", to change the status quo, only to let one down a few years after. Burning out is becoming commonplace. I have worked in the industry during the past decade, but I have not seen so many fellows willing to change their careers as these days.
It is hard to blame it on businesses though. Businesses have problems that require a pragmatic solution, not necessarily the most elegant or aesthetically pleasing one. A solution, first and foremost, about the people and products involved, not about the technology.
Unless a business is profiting directly from selling software, its tech stack is just a tool that facilitates processes. An enabler of options, a means to an end, but not the end goal in an of itself. Take a company like Uber. Software is mission critical for the present and future success of the company, but still not its main mission - make affordable, autonomous transportation available to anyone. Every business has a mission and ways to achieve it. Technology can help make those shorter, but beyond that, it's all about people, vision, politics, etc.
Light at the End of the Tunnel
It's not all doomed though. The first step towards a healthy life as a software developer is to understand everything I wrote above. Once your thoughts have settled down, you can start looking beyond the filter bubble. The way I see it, there are three options:
Keep doing the same thing you have done so far, but adjust your expectations. You will certainly advance in both pay grade and company ranks, but don't expect your internal drive to get stronger over time. That's perfectly normal. Pick an individual from any other profession, and you'll see the exact same thing. A job is a job is a job, and that's OK.
Understand the role technology plays in established businesses and become a consultant. While you won't become the next VP of Something at Choose Your Favorite Corp, your role might be vital for its future direction. Most businesses get advice from consultants, and while NDAs often prevent the latter to boast whom they worked for, the job comes with other perks.
If you are good at what you do, consulting rates are exorbitant. Many even achieve the dream of making the job adapt to their lifestyles, not the other way around. The downside is that you have to give up the idea of software being an art. Pick one stack, become the best, and stomach the fact that you would mostly work with legacy versions of it.
Get off the beaten path. Build your own thing. This is the option most people fantasize about when the phrase "software developer" gets mentioned. Yet, it's the option that involves the biggest amount of risk. The one that requires getting out of the bubble the most. It is not enough to understand the role of technology in any business. It is about understanding its role in your business.
This would require frequently switching your "engineer hat", or getting rid of it altogether. If your business starts thriving, you won't be able to program all the time (or at all). But hey, that's the way things go. No one wants to be a programmer forever, right? If that's how you envisioned it when you took that programming course, it's all good. Otherwise, get ready for a mental readjustment.
Choose your adventure!