shrutibeohar.com

Switching from Software Development to Program Management

Have you been considering changing career tracks from Software development to Program Management? If the thought has crossed your mind, but you are not sure what it would mean long term, here you’ll find some factors to consider:

Day to day responsibilities:

You are no longer coding a single component, but you now have to worry about at least 5 different things — all at the same time. Imagine that  — as a developer, you were the sole chef who was assigned the job of making the main dish. You get a lot of time to check out multiple recipes, collect ingredients, cook, taste, fix if things are not as expected. As a PgM, you are now responsible for serving up a 10 course meal to the top bosses / dignitaries in a high profile dinner. Though you are not individually cooking any dish, but you are responsible for ensuring that the dishes are served, the dishes are top quality, the dignitaries are happy with the food, the dinner organizers are happy and most importantly the chefs are happy with the process. While in theory, you don’t have to worry about how much rice will be needed to feed everyone whose invited, in reality every problem related to this event is your problem. Taking the example back to development and program management.

Skills:

Development vs Program Management: While the technical requirement of a PgM varies from role to role. typically, 90% of the job of a PgM entails utilizing her social skills. 10% is technical skills. Compare this to 75–80% technical skills vs 20% social skills needed for a developer. Remember, you can be a super technical person, but as a program manager, your technical skills are not valued as much as your soft skills of relationship building, communication etc. This may seem like a demotion and it is, especially if you are interested in guiding the technical aspects of projects. A program manager is rarely hired for guiding the project design. In some big tech companies, it is not considered a good etiquette for program managers to question engineers about the estimates, delays and why they chose to design the system in a certain way. An entirely different set of skills are required of a Program Manager — comfort in talking to difficult personalities, reporting status in a crisp and concise manner to leadership in non technical terminology, leading a group of quareling engineers to a peaceful outcome.

Competition:

While the competition in the development world is pretty high, it gets worse in the program management world. Every person and their mom can apply to be a program manager. A basic level of technical understanding, knowledge of agile and SDLC, and a lot of social skills are needed to be a program manager. Experience is relatively easy to transfer in case of program management. Gaining coding experience takes more time and effort. Therefore, the competition is not as fierce in the dev world.

Specialization:

As a developer, you will be restricted to the domain you have worked in. If you are in infrastructure, it will be impossible to get a job as a front end developer. If you have full stack experience, it will be difficult to get work as a machine learning engineer. You tend to get stuck to one branch. With Program Management, that happens, but lot less. You have a lot more flexibility to move around in different projects.

Breadth of knowledge:

The biggest selling point for a job as a program manager is the knowledge you gain by overseeing the breath of things, as compared to going in depth in any particular area. Developers need to go deep in to the component they are working on. It is hard to get context around what, why and how of the entire project. PMs on the other hand, know a lot more about the user requirement, project phases, implementation details, teams involved, sponsor opinions etc. They can control how projects get prioritized, they have influence over who does the work, they can request a change to the timelines.

Relationships:

With the broad nature of work PMs do, they need to interact with a variety of orgs and functions. They are involved in helping write a test plan with the QA team, they are talking to the DBAs about database slowness, they are talking to the UI team about getting a design review. They have their fingerprints on all aspects of the project development. Additionally they build relationships with external teams to borrow existing technology. Consequently, they know a lot more people. DEVs also interact with different functions, but given that they need to focus on development primarily, the human interaction is limited.

Output:

As a DEV, the output you deliver is tangible. Your code runs flawlessly in production —  your salary and presence in the org is justified. The output of a program manager is often intangible. You execute on projects and are released in production, but that doesn’t always translate to being deemed as a great program manager. That depends on a variety of aspects:

  • Team morale: Were you able to shield the team from the uncertainities of project requirements/ project funding.
  • Risk assessment: Were you able to identify and call out risks and present mitigation options.
  • People management: How effective were you in keeping the meetings well organized, what do stakeholders feel about your style, were they well informed of project developments?
  • Proactiveness and foresight: Were you able to escalate proactively? Were you able to sense how things could pan out in certain situations?

So, effectiveness, efficiency in case of Program manager is harder to guage. Therefore your stature in the org is based on your the perception you create. Similar to the adage “Customer is always right”, for program managers, the ‘stakeholders are always right”.

Outcome:

A star developer will design effectively, code flawlessly and maintain the component efficiently. A star program manager will build healthy relationships with aligned teams and functions, will prioritize the biggest return on investment projects, will smoothly execute projects, will communicate effectively, will have regular sync up with high profile staekholders to keep them in the loop and collect feedback from them, will identify risks early in the process, will devise mitigation plans. The list goes on and on. A program managers can be dinged for a multitude of reasons. On the other hand, they can get by with sloppy work, if they have good relationships.

Interview difficulty:

Most PgM interviews are full of behavioral questions. Only some big tech companies have a round or two of technical interview. So, as long as you have good stories to say and a good way of delivery — you are set for a PgM interview. Dev interviews require a lot more leetcode and system design practice. Overall the DEV interviews are much more technical and PgM interviews focus on soft skills.

Performance Reviews:

In some organizations, PMs are at the lowest rung of the ladder. Everyone else gets to be on their review board, but PM are not always present in the review committee of their developers. The PM managers are often not closely involved in the project, hence their feedback on their reportee is governed by the stakeholder feedback. On the other hand, devs have their codes as a testament to their capabilities. So, the performance reviews are not as influenced by stakeholder feedback as in the case of program managers.