The Programmer's Pathway
Discover your pathway to the programming career of your dreams.
In decades past, it was assumed that to advance as a software engineer, you had to become a manager. But there were two fatal flaws with this assumption:
These days, all major technology companies support extensive career advancement options for programmers who love to write software. Through decades of industry experience and continuing education, these engineers become highly effective and valuable assets, with fantastic compensation packages and some of the highest quality work.
In this post, I will outline a few of the many different paths you can take as you advance your career as a software engineer. These paths, which I’ve used to make an illustration entitled The Programmer’s Pathway, will give you a sense of the breadth and depth of software engineering careers. They will also help provide a map that helps guide you through your career.
Quite intentionally, only one of these pathways is related to engineering management. The others are all primarily individual contributor roles. Which means, if management isn’t your thing, you have a veritable buffet of other options to choose from, many of which have better total compensation packages than the typical engineering management position.
Engineering Fellow
The engineering fellow track is the primary track for generalist software engineers, but also one of the steepest and hardest to climb. A software engineer is adept at creating new systems and maintaining existing systems, including enhancing, modernizing, and troubleshooting software.
New software engineers are often fearful of working in large code bases, different programming languages, or code they didn’t write. They struggle to troubleshoot bugs that are difficult to replicate or that occur only in concurrent and distributed environments. They have no innate sense of how to organize code for cost-effective maintenance. And more often than not, new software engineers don’t optimize their choices for providing value to the business.
But as software engineers gain experience, working on code bases small and large, in many different programming languages, and across many different projects, over time frames both short and long, the best software engineers become true legends. They become fearless and adept at solving any conceivable challenge, in a way that maximizes business value.
Of course, even experienced software engineers do not immediately know how to solve every problem. But they keenly recognize the boundaries of their knowledge. They have highly-developed skills, conceptual tools, and processes that lead (slowly but surely) to success across all of the challenges inherent to software engineering. They are unstoppable.
If you love pure software engineering, this generalist software engineering track will give you a ?lifetime of opportunities for personal and professional growth, culminating in the most prestigious position a software engineer can attain.
Principal Software Architect
The software architect track has a questionable reputation in some circles. Some engineers head down this path not because they are skilled at architecture, but because they don’t want to write code, and they would prefer to tell other engineers what to do (even when they’re wrong!).
Yet, a truly skilled software architect is a force of nature, possessing encyclopedic knowledge of all possible choices in the design and development of software systems, together with a keen mind able to conceptualize and deeply understand systems at any level of scale.
The seasoned architect crafts designs that openly invite technical criticism. Why? Because their designs are technically rigorous and informed by a deep understanding of both the needs of the business and the strengths and weaknesses of different technological choices.
Rather than being limited to just system-level architecture, a software architect is also a highly skilled software engineer, and can write quality code with the best of them. Moreover, when writing code, an architect will always be thinking about the big picture—the organization, distribution, and operation of the software—with a view to how each choice impacts the whole, both now and in the future.
If you love analyzing systems from different perspectives and at varying levels of scale, have a strong sense for structure, flow, and organization, then the architecture track can provide you with an opportunity to develop your passion into an incredible career.
Principal Developer Relations Engineer
The developer relations track is a true hybrid role. While experienced and skilled at engineering, a developer relations engineer is also adept at public communication, including speaking and writing, and nurturing and growing developer communities.
Many developer relation engineers are not merely engineers, but they are also passionate technologists and marketeers. They combine their love of technology, engineering, and marketing (including community building) into careers that allow them to shine.
Compared to many other tracks, there are relatively few DevRel engineers. Indeed, a company might only have a handful, even if it has hundreds or thousands of software engineers. This can make it difficult to head down the developer relations track.
Yet, for those who are passionate about technology, and who secretly love marketing (at least, evangelism and education), there is no better track than developer relations.
Vice President of Engineering
The engineering manager track is by far the most common for engineers who prefer management to writing code, and the only track on The Programmer’s Pathway that leads to pure management positions.
Most great engineering managers have ample experience in software engineering themselves, but their day-to-day focus is not software engineering, but rather, the people, processes, and tools that structure and guide engineers to produce value for the business.
Engineering managers are great systems thinkers and superb communicators, able to identify bottlenecks, negotiate improvements, resolve conflicts, and otherwise optimize the “machine” that produces value-delivering software from business requirements.
领英推荐
The best engineering managers do leverage their ability to deeply understand software development, but only insofar as it allows them to speak the language of engineering, and translate between engineering and the rest of the business. They no longer code nor try to micromanage the professionals who code for a living (a hard lesson to learn for some!).
Managing people and processes is not for everyone. But if you find people and processes to be the most enjoyable part of your job, then consider the engineering track, which will let you hone your interests into a satisfying and impactful career.
Principal R&D Engineer
The research and development engineer track is part research and part software engineering. Some R&D engineers have a background in computer science, mathematics, physics, or some other field, which helps them push forward the frontiers of applied software engineering.
Sometimes R&D engineers take research papers and turn them into working software, discovering how to make the theories practical in a production environment. Other times, they perform novel research, directed at complex software engineering challenges.
If you find yourself reading papers (or maybe writing them), or have brought ideas introduced in academia all the way to production, there’s a good chance that the R&D engineer track could provide you with the deep intellectual and professional satisfaction you crave.
Principal DevOps Engineer
The DevOps track blends operations and software development. DevOps engineers have extensive expertise in virtualization, operating systems, and hardware, as well as in infrastructure orchestration and software engineering. The combination of these skills allows DevOps engineers to excel in areas beyond traditional IT operations roles.
Originally, DevOps was conceived as a role for software engineers tasked with leading IT operations for the software they develop. However, the scope of DevOps has since expanded. It now refers primarily to engineers who oversee the entire software development lifecycle, from development and deployment to operations and management.
A DevOps Engineer is responsible for a variety of critical functions. They automate workflows, manage CI/CD pipelines, oversee version control, and monitor the health of applications and systems. Additionally, they focus on optimizing performance, ensuring security, promoting collaboration across teams, and provisioning infrastructure through code.
If you love to use your engineering skills to operate and optimize the systems by which software is developed, deployed, executed, and managed, then the DevOps track is a great fit for you.
Principal Solutions Engineer
The solutions engineer track is of critical importance in many organizations that sell software or technology services to other organizations.
A solutions engineer directly interacts with customers, and understands both the technological aspects of any given challenge, but also the business aspects, and strives to make technology work for the business, rather than against the business (as it sometimes does).
Early in their career, solutions engineers do a lot of hands-on and sometimes low-level programming. As they rise through the ranks, however, solutions engineers spend more time communicating with key stakeholders to gather requirements and understand capabilities, analyzing existing assets, and designing and assisting with the implementation of solutions.
If you love being close to the customer, and using your engineering, communication, and growing business skills to help the customer achieve success with technology, then the track of the solutions engineer is a perfect for you.
Principal Sales Engineer
Most engineers hate both sides of the sales process. But every once in a while, an engineer enjoys (or at least tolerates) sales enough to head down the sales engineering track.
The sales engineer track is a highly specialized role that exists in companies that sell technology to other companies. Typically, this technology is complex (or used to solve complex problems), and evaluating the technology requires the skills of a software engineer.
Sales engineers assist in the pre-sales process, providing hands-on support to prospects for evaluating technology, interfacing with technologists inside the organization, and fielding questions that are too technical for salespeople to answer.
The best sales engineers earn commissions for participating in a successful sales process, which means they can have a very nice total compensation package.
While not for everyone, if you love constant variety and don’t mind (or even enjoy) the sales process, then the sales engineer track is a great choice for you.
Summary
In summary, software engineers have more options than ever before. The old notion that you need to become an engineering manager as you advance your programming career is as outdated as floppy disks.
In this article, I presented a variety of career tracks for engineers who love to code, solve problems, or combine engineering with other skills, like marketing, business, or sales—all without the need to switch to a pure management role.
Your career in software engineering is yours to own. Become a legendary coder, a master architect, a community hero, or an innovation champion (among others).
All you need is ambition, hard work, and a roadmap to get there. Now you have the roadmap, so the rest is up to you!