I’m first going to answer the question, then I’m going to give you my thoughts on Software Professionals, career progression, management and leadership.
Typical Software Engineering Career Paths
Software Engineerings or Developers are typically promoted based on their technical skills. As you improve and add to your skills, you are promoted through the typical technical “ranks”, which typically are Jr. SW Developer, Intermediate SW Developer and Sr. SW Developer. Different organizations may have different names and different qualifications for each role, but generally, they have roughly the same guidelines.
As you move towards the Senior roles, you typically have a couple options:
- Most organizations (Google is one example) offer a technical lead role, which is a mix of technical with some management aspects. This is usually considered the best way to try out management-type work without being fully committed. From this role, most organizations allow progression into either a full-manager role or a senior technical role (see #2 below). I personally found this one of the most difficult roles in my career because the technical and management roles are very different and require lots of mind-shifting (more on that later)
- Senior software professionals typically can also become a technical guru. Different organizations have different names for this title that range from “Architect” to “Sr. Software Developer” to “Technical Director”. It’s basically a senior designation for technical roles. This role typically doesn’t have any direct reports, but has technical ownership of a product or piece of software. The role is a technical leadership role where mentorship and support of more junior software professionals is expected.
Now that I’ve outlined the options, let me say my two cents about software professionals and management.
Great Software Developers Don’t Equal Great Managers
Management requires a completely different skill-set than building software products. If you’re interested in the differences, I can share them with you — needless to say, the skills are different. It’s dangerous to assume that a great software developer can be a great manager, because the skills that make them a great software professional don’t automatically make them great managers. To complete the argument, great managers aren’t necessarily great software developers either, for the very same reason.
Management and Leadership Are Not The Same Thing
One of the biggest mistakes that most junior people (and some senior people) think, is that leadership comes with management. That is utterly false. Leadership is not the same as management. Management is about managing resources, whether it’s people, products, finances, programs, etc. Leadership is about inspiring, supporting, developing and bringing out the best in people. By that definition, you don’t need to manage people to be lead them. So while you’re considering your career progression and growth, think about what you want to do as a senior person. You can very well lead your team without managing them (see option #2 above).