Over the years, I’ve found that many software engineers either aren’t familiar with other roles at their organization or are often confused by them. This is by no fault of their own because managerial roles differ from company to company and often people overextend their responsibilities to make up for a deficiency in the organization.
It also doesn’t help that so many of them have roughly the same abbreviation: PM.
While I haven’t been in industry a very long time, I have had the privilege of working at companies of various sizes and market positions. The most insight came from working at a startup and watching it grow from 15 people to about 150 (and subsequently at the acquiring company that is larger than 15,000 people). At the time of writing this, I’ve personally worked as an engineer and a product manager, so most of these descriptions come from my experience collaborating with these roles and not being employed as them.
Project Manager (PM)
A project manager is responsible for planning and making sure that initiatives are continuing to make progress. They organize meetings, determine cross-team dependencies, define deliverables, project timelines, regularly check in with those involved, and keep everyone honest by enforcing deadlines. If something falls through the cracks, it often ultimately falls on the project manager. In some industries, project managers have more direct contact with customers/users, but in the software industry, I’ve only seen them as a purely internal role. In my experience, project managers report up the engineering management chain because they are the ones with their finger on the pulse of health and output of engineering. I believe this to be because a small number of project managers can manage many teams, thus you don’t see dedicated management chain or departments even at large companies.
Product Manager (PM)
A product manager is responsible for being a liaison between engineers and customers/users to determine what the product needs to be and how to prioritize the desired functionality. They visit customers, create product road-maps, prioritize development, collaborate on campaigns with marketing, determine pricing strategy, and pretty much anything to shield engineering from the toil involved in non-technical decision-making. Product managers are sometimes likened to a mini-CEO, which can sometimes be a fair representation depending on how independent products are developed within an organization. Product management is often its own chain of command, parallel to engineering, that can often have all of the other departments eventually reporting into it at the executive level.
Program Manager (PM)
A program manager is responsible for the larger workflow of a product release or deployment. Program managers often consider the cohesion across a series of products and work on projects that unify similar processes across the business. This role can be technical or non-technical and sometimes fills in gaps for other roles like marketing, product, or project managers. Small businesses usually do not have such a role because they do not have more than a few products. There is a large tech company that happens to call everything in this document some form of program manager; this only adds to the confusion.
Product Marketing Manager (PMM)
A product marketing manager is responsible for creating and contributing to the execution of marketing campaigns for a particular product. Organizations with PMMs usually have them acting as a liaison for a marketing department that has its own independent workflow rather than being tightly coupled with engineering of the product itself. This role collaborates with product management to understand the values of a product and can provide feedback feedback based on their market research. When a product is nearing release, PMMs may find themselves collaborating with program management as press and marketing may be a standard part of releases across the organization.
An engineering manager is the bastion of engineering health and culture. Ensuring career growth opportunities and happiness are some of their core objectives. They conduct regular one-on-one meetings where they attempt to gain a social understanding of their reports. Because stress and problems can arise from other disciplines, engineering managers work to shield their reports by sometimes filling in the gaps or making up for other managerial roles. Engineering managers should have their own chain of reporting that is entirely separate from engineering. However, this is often not the case, which leads to many engineers thinking that they need to take on a managerial role to progress in their career. Ironically, it’s the job of an engineering manager to help identify when an engineer would be a good fit for transitioning to a managerial role rather than staying in the pure engineering career track.
These are the handful of roles that I thought would be most important to cover. Let me know if I should add any other roles or if I’ve grossly mischaracterized one of them. I’ve also considered doing the opposite and explaining all the engineering roles (e.g. support engineer, site reliability engineer, field engineers, sales engineers).