Engineering <> Product interactions at tech companies are susceptible to common (albeit sometimes valid) stereotypes. Product Managers (PMs) might complain about engineers not acting with the right urgency or not understanding the priority; they might grumble about estimates being off and constant delays in shipping etc. Engineers, for their part, might complain about not having enough context or rationale for a given feature or deadline; they might grumble about PMs always wanting too much (everything!) and not understanding technical debt or foundational work etc.
Here are 8 tips to foster an effective engagement between Engineering and Product organizations. Many of them are applicable more generally as well.
🤲🏽 1. Establish an expectation of collaboration
Any organizational structure ultimately is in the service of some common business objectives. To that end, set a clear intention and explicit expectation at the outset that Engineering and Product (and indeed, Design) are all part of a larger body that together, is accountable for business outcomes. Underscore this often.
At Dropbox, we had a moniker "EPD" (for Engineering, Product, Design) that was pervasive: from EPD All Hands, to EPD mailing lists, to EPD OKRs, to EPD hiring, to EPD re-orgs etc etc. This EPD trifecta made it clear that these 3 functions are part of a 3-legged stool, with equal footing when it comes to strategy and decision-making. The shorthand was a constant reminder for everyone.
🎯 2. Align on mission, goals, metrics continuously
Teams that have strong alignment on a shared mission (why) and goals (what) tend to be more effective in handling all of the downstream micro-decisions (how). But teams often make the mistake of thinking that "alignment" is a point-in-time exercise. Reality is that you need to continuously and constantly re-align – depending on the maturity of the product(s) and/or organization, you may need to do this every month or every quarter or every year.
Note that this isn't isolated to new products or newly formed teams. "Ossified" teams with well established products or services tend to feel lost, doing maintenance without a clear sense of direction or purpose.
🔎 3. Clarify roles and responsibilities
We all walk into situations with our biases. Everyone has some mental model of a PM is supposed to do, what a tech lead (TL) is supposed to do; what an Engineering Manager (EM) is accountable for etc. Reality is that each team, each organization is unique. Especially in a chaotic situation with rapidly shifting priorities, it is critical that the roles and responsibilities of various individuals are clear, and accountability is made explicit.
Don't assume, clarify! Some prompts: who owns the roadmap? who runs the sprints and retros? who owns the KPIs? who is accountable for velocity? who is accountable for quality and managing technical debt?
Pay special attention to decision-making. Consider instituting a formal decision-making framework like RACI/DACI or SPADE. A transparent and inclusive process that sometimes makes wrong decisions is much better than a perfect but opaque process that excludes people.
💗 4. Build empathy
Foster a culture of healthy debate and collaboration to help build empathy. Have engineers sit in on user-research sessions, write product-briefs, participate in roadmap reviews. Have PMs participate in Hackathons, run sprints, sit on design reviews etc. Don't leave out PMs and designers on an engineering offsite. Create forums and spaces to safely discuss thorny issues, like technical debt.
💖 5. Create a culture of appreciation
Engineers often don't have visibility into what PMs do, how they spend their time, and how they drive impact. PMs often feel frustrated by engineering constraints, slipping deadlines and "unplanned" work (like an outage). Both sides feel under-appreciated.
Create a culture of appreciation, with a lens towards shining a light on the type of work that tends to get over looked by the other side. Give kudos in your All Hands or sprint meetings or Slack channels. Gratitude is the ultimate grease.
🗣️ 6. Invest in communication skills
Most conflict and friction in organizations is due to misalignment, unsaid expectations or implicit assumptions. The ability to effectively communicate is crucial, especially now that we're all working remotely. Invest in this skill across the board, ideally incorporate it in your career progression framework.
Engineers should be able to clearly articulate trade-offs. PMs should be able to clearly articulate impact. Clear writing can be a force multiplier, making product briefs, design docs, code comments, retros etc. highly leveraged.
🔁 7. Establish team rituals
Counter-intuitively, sometimes adding more process enables an organization to operate more effectively. Established and well-understood team rituals with predictable cadence for driving alignment, managing execution, handling conflicts, setting direction will reduce the overall, ambient anxiety, especially between Product and Engineering.
A non-exhaustive list (remember, each team is unique, so craft rituals that will work for your teams): daily standups, weekly sprint meetings, sprint retros, monthly metric reviews, quarterly OKR planning, twice a year roadmap reviews, offsites, show and tells sessions, Hackathons.
🎉 8. Surface and celebrate successes together
(h/t to my colleague Mark for this suggestion!)
If a shared struggle helps forge strong bonds, celebrating successes together helps cement and reinforce those bonds. Mark says "experiencing the impact of their work together on a regular basis" can help bring together product and engineering teams.
Create opportunities to do this wherever you can, whether it's a formal product metric review or Slacking a Tweet from a happy customer or whatever else. Mark again: "It helps infuse what can otherwise become a daily collaborative grind with a palpable sense of purpose."