avatarMike Sage

Summary

The web content outlines the roles and collaborative dynamics between Engineering Managers, Product Owners, and Technical Leads within a software development team.

Abstract

The article discusses the interplay between the roles of Engineering Manager, Product Owner, and Technical Lead within a software development team. It emphasizes the importance of collaboration and balanced responsibilities, with the Engineering Manager focusing on team management and technical direction, the Product Owner owning product-related decisions and customer engagement, and the Technical Lead ensuring high code quality and technical problem-solving. The author, drawing from personal experience, provides insights into how these roles can effectively partner to create a successful and high-performing team environment.

Opinions

  • The author suggests that a literal interpretation of role definitions (Product Owner owning 'what', Engineering Manager owning 'how', and Technical Lead owning 'huh?') does not foster a balanced partnership.
  • Successful partnership between an Engineering Manager and a Product Owner involves the Product Owner being deeply involved in the product, including understanding technical components and managing customer support.
  • The Engineering Manager is expected to handle people management, attend meetings on behalf of the team, and ensure the team has a big-picture view of the product.
  • A good Product Owner should manage the delivery timeline, push back on scope creep, communicate the product roadmap, and be responsible for releases.
  • The author believes that an Engineering Manager should not abdicate responsibilities but delegate tasks while maintaining standards and following up.
  • The presence of a Technical Lead becomes vital as the team grows, with the role being pivotal in leading technical discussions, resolving problems, and maintaining code quality.
  • The Engineering Manager should foster a strong relationship with the Technical Lead, involving them in sensitive communications and career growth opportunities.
  • The author advocates for the Technical Lead to be responsible for code reviews and to act as a mentor to other team members.

Working Together: Engineering Manager / Product Owner / Technical Lead

image: Mizuno K Pexels

There are many guides that explain what each role does, but how do you actually work with other roles on your team? This guide is aimed at helping you answer that question.

I’ve seen a variety of different implementations of the engineering manager / product owner roles on teams. Some have been successful, others less so. Most likely, you’ve heard this:

  • Product owners own the ‘what’ (what the team will be doing)
  • Engineering managers own the ‘how’ (how the team will be doing it)
  • Technical Leads own the ‘huh?’ (the deep technical pieces)

I’ve mentioned before in this article that this definition, if taken literally, doesn’t sound like much of a partnership. When one partner decides 100% of the things everyone will be doing, that isn’t balanced. Imagine if you had a partner and your partner always decided what you would do every single day of your life, but you had to pay for everything. Sounds very one-sided.

The previous arrangement is something like that, but it doesn’t have to be.

To all product owners reading this, I must commend you for reading this but also be warned: what follows is from the perspective of a (fairly) successful engineering manager. Everything herein is my own experience and what has worked for me over the years. Your experiences may be different and I’d LOVE to hear about them (No really, I would).

Product Owner — Partnering with an engineering manager

Let’s start with what is (sometimes) an elephant in the room: scrum makes no mention of an Engineering Manager on your team. What is this person even supposed to be doing and how are they valuable to ME? My thoughts on this are:

  • teams don’t naturally gravitate toward either self-organizing or high-performing. These outcomes are the intentioned result of energy, focus, and effort.
  • teams still have management responsibilities that need to be handled. That can be an inexperienced team member, or an experienced manager. It cannot be the product owner.
  • Teams can struggle to have a big-picture view of the product. An engineering manager can make sure the ship is steered in the right direction (technically)

Your next question is perhaps, what can I expect an engineering manager to DO on my team? You can expect an engineering manager to:

  • Handle all people management related tasks such as feedback, performance management, coaching / mentoring, hiring & termination , onboarding
  • Handle the management of ‘things’ (laptops and IT related items, software procurement, etc..)
  • Attend meetings on behalf of the team as appropriate (the demand here will depend on your company’s maturity with agile. Your teams may be agile but the rest of your company likely isn’t, which will result in many meetings that team members would view as time-wasting / blockers)

So as a product owner, what does your engineering manager expect you to be doing? Simply put, anything related to the product is your domain. When my boss asks me specifics of this feature or that feature, I’ll be asking my product owner those questions or pointing my boss toward the product owner to ask them directly.

You should be running refinement meetings and creating all documents and materials related to requirements (user stories) in a way that the team can easily consume. You should be answering questions as they arise and joining impromptu meetings with team members to go over your vision of the feature and answer specific questions.

A good product manager will manage the delivery timeline in a way that the team can achieve with reasonable effort. You’ll push back on scope creep and unexpected requests that arise during a sprint. The team can work on them, sure!

Next sprint, that is.

A good product manager will communicate the product roadmap so the team has a big-picture idea of what’s on the horizon. A good product manager manages the product itself and collaborates with the team to build it.

Lastly, a good product owner will listen to their team and their engineering manager on technical matters, such as technical debt. However, you’ll also ask good questions about why it needs done, and you’ll do it in a way that challenges the team to rethink their goals and approach.

As you can see, being a good product manager is a lot of hard work.

Product Owner — Pitfalls and Failures

image: wikimedia commons

I’ve seen product owners not work with their engineering manager on presentations, and then been painfully humbled when they didn’t really understand some of the technical components. Work with your engineering manager on all your presentations. I promise you’ll find it valuable and so will your counterpart.

Be engaged in customer support. I’ve seen product owners completely disengaged and uncaring when it comes to customer issues and support. This is a big, big, BIG part of your product. Own it. Care about it.

Be responsible for releases. When a deploy is going out to production, you should know what’s in it. You should be testing it and approving it for release in some kind of acceptance environment. Nothing should go to production that you haven’t reviewed and approved. Don’t be surprised that something was released…incorrectly…and now you are the one that needs to answer for why to our clients.

Engineering Manager — partnering with a product owner

image: pavel danilyuk Pexels

Now that we’ve learned how a product owner can partner with an engineering manager, how you should collaborate with them should be obvious, right?

Well, not entirely. There are some secrets here to go over, just as I’m sure there are secrets on the Product Owner side that I don’t know about.

First — You are a manager and possibly the only one on the team. At many companies this comes with extra responsibilities and requirements. Understand that your Product Owner may not have these responsibilities. It’s a good idea to nail down what your responsibilities are exactly, with regards to team management, and make sure your product owner is aware of these responsibilities.

These responsibilities are typically:

  • Hiring and Termination of team members
  • Performance Management — Feedback, Reviews, any interpersonal issues
  • Budgetary creation and approval (this is an uncommon requirement)
  • Technical roadmaps and timelines for initiatives

If you are THE manager for the team, then understand that you are ultimately responsible for what happens on the team, including your product owner. There’s a grey area here that you should actively work to maintain, but your bosses may push you to own / be accountable for things that are your product owner’s responsibility.

Consider the following:

- You should delegate, not abdicate. Make sure tasks are being accomplished to your standards regardless of who you are delegating the task to. Some tasks you’ll delegate to your product owner to accomplish, and you need to follow-up and monitor just as you would with any other task.

- Part of your job is to maintain and improve the management position that you’re in. Leave it stronger than you found it. Leave it at least as well formed. There’s a level of respect that you need to cultivate to put future engineering managers at a good starting point.

- Encourage and praise the work your Product Owner is doing. It isn’t easy and you don’t want to be the one doing it.

- It’s okay to have some overlapping responsibilities. Some things will not fit neatly in either role and may seem that they could belong to either of you. This is a good thing. Those items should be shared and you should each own and ensure that they’re completed adequately. This is a situation where two heads are better than one. The only important part here is to discuss areas of shared ownership.

Engineering Manager — partnering with your technical lead

Not all teams have a technical lead, in which case the engineering manager will typically fill this role until you determine that your team needs a permanent tech lead role. Not everyone agrees that such a role should exist on a team. I am in the opposite camp. I believe that once a team reaches a certain size, having a strong technical lead is vital to the success of your team.

In my experience, here are the early team sizes and how they relate to the need for a technical lead:

  • 1 to 2 team members — You are the technical lead
  • 3 team members — You should begin to grow a technical lead on your team if possible. You will still have some tech lead responsibilities.
  • 4+ team members — You need to have a tech lead that isn’t you. You’ll find yourself too busy to handle many of the tech lead responsibilities

Now, let’s presume that you do need a technical lead. What do they do exactly? Like many things on software teams…it depends.

To use my oldest trick of using your title to define what your role does: A technical lead, leads technical things.

If there is a technical conversation, I expect the technical lead to play a key role in guiding and shaping the discussion. If there is a problem, I expect the technical lead to play a key role in resolving the problem. If there are technical concerns in the product, I expect the technical lead to notice them and bring them up to the team and myself for discussion. Perhaps you are beginning to detect a pattern.

I should also note that I try to form a strong relationship with my technical leads as I view their contributions as critical to the success of the team. You can expect me to communicate and meet with you regularly and to share more confidential information than I will with other team members. This is part of helping you grow in your career. Forming strong, trusting relationships, and handling sensitive information are important skills to experience and master.

To be a bit more specific though on expectations, here are my typical requirements:

Code Reviews

A touchy subject, but I’m in the camp where the engineering manager for a team should NOT be responsible for code reviews.

I’m a fill-in at best. I still consider myself a very solid developer but the tech lead is in a better position to provide quality code reviews. This is what I did when I was the tech lead for a team, so why wouldn’t I expect this of my own technical leads?

Part of deciding what a tech lead should do really just involves self-reflection of what YOU did as a technical lead, followed quickly by the realization that you should stop doing those things (if you’re like me and weren’t letting go of your legos).

Code Quality

Work with your technical lead to own the quality of the code base. They’re the front line of defense against bad code getting into the repository. They should be a champion, holding the torch for code quality and best practices. This is a mindset that they should have and a thing that they should care about.

If they don’t care about code quality, then…are they really a technical lead?

General Knowledge and Ownership

I rely on all my team members to answer questions about the product and the underlying code, but I lean more heavily on the tech lead for this. I understand that they can’t know EVERYTHING, but they should know most things. They should know what all the major pieces are and how they fit together. If they simply lack the communicative skills to explain it, then as their manager you should coach them in this valuable skill.

Team member feedback and some review

The number of direct reports you have will determine how involved your tech lead need be in the feedback and review process. For example, currently I only have five reports so I’ll only expect my tech lead to provide feedback for their team members. When I ran three teams and had eighteen reports, I needed to rely on my technical leads to provide both feedback and even share in some of the performance management tasks.

Mentoring

I believe this is a pretty universally agreed upon responsibility for your tech leads. Share your knowledge and experience with your peers. Help them grow from developers to Sr. Software Developers Engineers. Someday, they may also be technical leads, thanks to you!

Conclusions

We’ve covered a lot of ground in a short period of time, touching on topics such as:

  • How a product owner interacts with an Engineering Manager
  • How an Engineering Manager interacts with a Product owner
  • How an Engineering Manager and Technical Lead interact with each other

In my experience, it’s best for the Engineering Manager to guide the team, while the product owner guides the product and the technical lead guides sprint delivery.

Engineering Mangement
Management
Scrum
Agile
Software Development
Recommended from ReadMedium