When you enter the software engineering or development profession, you might wonder about the long-term career path. It’s quite different from a typical “corporate ladder” career path where you start in the mailroom (literally or metaphorically) and work your way up to senior executive.
Instead, the career path for a software engineer can go in many different directions, starting with junior developer. Let’s look at the possibilities so you can decide which one is best for you.
Large Corporations and the “C” Level
Large corporations have struggled with the question of upward mobility among tech positions, because people in tech usually don’t want to move into management. In terms of salaries, the tech people often hit a dead end, maxing out as a team member doing coding, while their friends on the business side moved up the ranks and surpassed the techies in salaries, first to director and maybe even the C-suite (CEO, etc.).
Moving out of tech and into management to climb the ladder is certainly a viable option; but arguably the majority of techie people aren’t interested in this. Starting 20 years ago, large corporations experimented with tech tracks that led to a senior level, which was mainly a pay raise. That system is often still in place today, with engineers becoming distinguished specialists.
Setting Your Own Course
Beyond the large corporations, there are many options for career progression. First, you need to decide on your goals. Where do you ultimately want to end up? Here are some possibilities:
- Non-technical management
- Chief Technical Officer (CTO)
- Owner of a tech company you spent years growing
- Owner of a tech company after having sold several other tech companies
- Consultant helping company after company (as a software developer, software architect, cloud consultant, etc.)
- Teacher (share what you’ve learned!)
- Keep coding because you love it (after progressing from junior to mid-level to senior level)
All of these are viable. We already looked at a shift to management. Now let’s look at the others.
Chief Technical Officer (CTO)
This one would require an entire book rather than this short article (and if this is your goal, books are your friend). Be forewarned: This isn’t a cushy job, and it features a good number of non-tech management duties. Also, these jobs are hard to land: There just aren’t many CTO positions open compared to, say, mid-level programmers, and the competition is high.
You’ll also need a strong, proven track record before companies will hire you, and that takes many years to develop. You also must be familiar with many different technologies, especially those involving software architecture, as you’ll be making important decisions that could help a company grow enormously… or crash and burn. (And if your company crashes and burns, you’re going to have a very hard time finding another CTO position.)
So, while CTO is an admirable career goal, you might want to have some other ideas in mind as a fallback.
Owner of a Tech Company
A lot of your programmers dream of having their own company and growing it. After you’ve built the product and launched the company and created a strong business plan and mastered the sale of your product (which you’ll be doing before you can afford to hire salespeople), you’ll find you’re doing mostly business work, not programming. Although you could keep your fingers in the code, doing so would mean less time to run the company, and possibly having to hire a business partner, meaning less control over the company.
But if you enjoy the idea of building a great product and then most likely transitioning to running a business, this can be a great career path. But remember: Businesses can fail. You might have to change your career plans depending on market conditions and twists of fate.,
And once you’ve built a successful company, what next? You either keep it growing or you sell it.
If you choose to sell the company, you could get a nice chunk of cash, which you could use to launch another company. There are “serial entrepreneurs” who do exactly that. And if you’re an idea person, you probably have several plans for what the next app will be. Then you grow the next company, sell it, and so on until you retire.
Another option is to go from company to company, helping with specific sets of needs. For example, they might need a large amount of code written in a particular language. Or they might need help architecting their system to work with the cloud. Whatever the scenario, they don’t want to bring somebody on permanently.
That translates to very large hourly rates. But the downside is you could potentially go a few months in between gigs, sometimes even more than that. And since you’re self-employed, you could get hit with higher taxes (specifically the self-employment tax) and higher health insurance premiums. The high hourly rate doesn’t necessarily mean a higher net income.
To be a successful consultant, you also need some business skills, such as the ability to invoice and track your work. Set aside money to pay quarterly taxes, and develop a willingness to sell yourself.
Any consultant needs to become a true expert in a few areas, and you don’t want to be too broad. For example, you don’t want to claim to be an expert in eight programming languages and six platforms and five database systems. While your customers might believe you when they hire you, once you’re there, you will likely find you’re not as advanced in each topic as you hoped to be. It’s better to pick two or three topics and learn as much as you possibly can. However, bear in mind that technology evolves and changes, which means you’ll have to always stay on top of new technology and keep learning, meaning you’ll periodically “replace” your expertise with newer technologies.
Teaching is a great profession, and many people really enjoy it. After years of coding, some people simply get burned out from it. They don’t want to move into management or run their own company. They grow tired of the marketing aspects of consulting. And they decide it’s time to pass the torch and teach a new generation. The only downside: You’ll likely take a huge pay cut. But if you love teaching (and can afford to do it), there are many opportunities out there.
If you love coding and want to do it for the rest of your life, then go for it! There are some options here.
- Continue learning new technologies as you leave the old technologies behind. This requires lifelong learning, possibly changing technologies every decade (or sooner).
- Stick to the same technology and plan to eventually be the older specialist paid a huge hourly amount to maintain the old systems. Right now, there are elderly people fixing bugs in old COBOL mainframes and living quite comfortably, and not having to keep up with new technology.
For this option of “keep coding,” you can either stay with the same company over many years (assuming the company lives on), and probably max out in terms of seniority (probably at senior developer or senior architect), or you can move from company to company.
Periodically moving to a new company usually comes with quicker pay raises and seniority. This is probably one of the most common career paths. You do eventually top out in terms of rank as either a senior developer or software architect, but if you enjoy coding and aren’t interested in business and management, this can be an ideal path.
The goal is to have a plan in place and set a direction. Bear in mind that, over the years, you may well change your mind, and you might want to have some backup plans in place. But in almost all cases, you’ll likely want to commit to learning new technologies as the tech world evolves.