However, separate teams for product and design easily leads to the organisational antipattern where every feature implemented has to go through handoff between multiple teams. First product teams decide what to do, then design teams design it and hand off to UX for testing and later hand off to dev with full specification for building. When dev find that the designed/tested approach won't work due to implementation realities then it gets handed back over to the other team and so on.
Changes can take a really long time to get implemented and often no one team is fully aware of everything from the tech challenges/limitations, the cost of different approaches, the design implications, and the value of different options. Each team also has different and often conflicting motivations. Ops teams want reliability, Product want to move fast, Design want consistency. It's challenging to make good decisions on the tradeoffs in this model.
An alternative to this is vertically sliced teams where each team has all of the specialities embedded within it in order to look after a product. That means Dev, Product, Design, UX, Ops etc specialities within the team. They can then work together to add value to the product rapidly without handoffs between teams.
When cross-functional teams work well they understand both the cost and value opportunities of things they could work on, and can propose and implement features quickly and without top-down command and control.
We're doing this at Omada Health.
It comes with its own challenges, though, as every organization:
- the leadership team needs to accept a more bottom up approach to decision making (ie LT give direction and strategy, has a power of creating teams and defining their goal, but teams decide _how_ to reach these goals)
- goals and KPIs need to be clear to everyone in the org, and in the team themselves
- you need to be clear on the values of your teams at large or individually (focus on learning/exploration? Design "quality"? Timeliness of projects?)
- you also need a certain type of teammates. Ones that sometimes can accept unclarity, ones that want to be part of whole product development lifecycle
When you have these ingredients, it's beautiful to see unfold.
Engineers dont want a "script for implementation". They want to exhibit autonomy and creativity to the product as much as everyone else, especially product managers. I am not saying they should be product managers in a vacuum, but every good CTO knows the value of ownership and autonomy of a product is extremely rewarding to engineers.
Having dedicated people understanding what users want, what competitors are doing and what are the future directions of the market is probably necessary and worth dedicating serious time to.
It is just how people organize teams right now that seems a little broken; a Product Manager and 'their' team. This leads to the Engineers who like to innovate becoming bored and finding smart ways to get out of the 'typingpool'. This innovative talent is really necessary to scale product teams though, e.g. spotting common patterns across code bases. With that loss in innovation companies suddenly find a comparable feature that took 2 weeks taking 2 months.
Also as technology evolves new features previously impossible become possible. A Product Manager probably will not see this.
Perhaps there is a more 'ownership' heavy way of organizing Engineers. Something a bit more democratic like having a pool of ideas coming from Product Designers and Engineers. Self forming teams can come together to deliver whatever motivates them.
No offense to the mentioned, but the "ideas are like assholes, everyone has one" comment seems to apply extremely accurately to non-technical design and product teams who are blessed by management to throw things over to "those technical people" without any concern.
And why would a 2 week task not take 2 months under that structure? If your high-performing, creative engineers are sisyphean implementers of someone else's features without some empowerment, ownership, and accolades for the end result, good luck retaining them.
2. Not every engineer yearns to be a Product Manager. Sure, many want to make product decisions but don't want to do the other necessary work that comes with the role (like market research, metrics and analytics, managing the schedule and budget, writing PRDs, communicating with customers and partners, dealing with Legal, making sure the user manual is accurate, coordinating releases with ops and tech support, etc.) I think some techies think being a PM means merely sitting in your cube dreaming up a feature and saying "This Shall Be".
3. Good PMs most definitely need to stay on top of technology as it evolves. They need to know their platforms' capabilities and when new things become possible.
2> Nobody is saying they should be product managers, I am just suggesting they want more direct input to the shape of the product itself (not suggesting ALL engineers either)
3> Agreed, and PMs should continue to be good at this, its a core part of their role, understanding the ecosystem
I think your comment is an (IMHO incorrect) blanket statement that is impossible to apply to all engineers.
Having communicated these to the product and design teams, the devs must understand the tasks still get prioritized according to business needs and customer measured preference. No dev team should be implementing major UX decisions that aren't supported by data.
If the solutions are technical, it makes no sense whatsoever not to include the tech team in the solutions.
I can't tell you how many times I've been given a "solution" that was needlessly complex at the technical level because the product team thought it was "easy" and were "helping" the tech team out. Product people often have no idea which approaches make sense technically, and worse, apparently no intuition about tech. It's amazing, really.
Having people from the technical side in there early also means helps to spread understanding of why something is designed as it is.
Collaboration and communication is key, but responsibility is ultimately with each group, design with design, problem prioritization with product, and technical design with the development group.
Engineering can and should have an advisory role in addition to an implementation role.
Why do you think a developer should have decision making power in the area of design? They are not trained in design and UX. Conversely would you be ok with designers or other non-technical people dictating technical decisions? Of course not!
But as a consultant, I want to actually get paid, and paid well. If I work on ill-conceived design put together by an incompetent product team or an inexperienced founder, I'm also much more likely to have to push hard to get paid for each milestone. So I only consult when it's clear that I can add strategic value and that my client really understands their market. Once I'm sure those conditions are met, I can help them on the technology side.
When I ask my clients probing questions about their product plans, they generally seem quite happy that I care. And yes, I have advised some of them that PHP would have been a terrible choice for their technical requirements. A large part of the value a senior consultant brings is knowing how far out on the bleeding edge is wise for a given company, product and team. You want a good balance of development speed and a reasonably mature ecosystem.
Every product is designed, but if you have no UX people then the design is done either by product managers or by technical people, neither of whom are qualified to be doing that.
Being good at development or some other domain doesn't necessarily correlate with being good at design. Developers understand that their trade takes time and effort to learn, it amazes me that some of them can't understand that it's the same for other domains.
As a CTO myself, I strongly disagree with this. Yes, a dev team needs to tend to it's own ideas, but no, it shouldn't be making product decisions. You should have product and design teams that tease out user problems and come up with solutions. In that sense, the dev team does simply implement the ideas of the company. They still make technical decisions of course, but not product or UX decisions.