The best teams I have worked in and with are those that defy the traditional roles and responsibilities. Putting up artificial walls between extremely closely related disciplines can only be detrimental to getting great team work. Any given set of devs, testers and PMs working on a feature have a different set of skills and experience they bring to the team. Putting in place a structured set of expectations denies this fact. If the developer is more senior and experienced in an area, then you may want them leading more of the design of the feature, not just the implementation. Likewise if the PM is very senior and an experienced software architect, you may want them to have more of an input in the actual implementation decisions.
내가 함께 일했던 최고의 팀들은 전통적인 역할과 책임에 반하는 팀들이었다. 서로 밀접한 관련을 갖는 분야들 사이에 장벽을 세우는 것은 팀워크에 방해가 될 뿐이다. 하나의 기능을 위해 모인 개발자, 테스터, PM들로 구성된 팀은 서로 다른 기술과 경험의 집합을 보유하고 있다. 정해진 역할과 책임을 강제하는 것은 이러한 사실을 부인하는 것이다. 개발자가 해당 분야에 있어서 경험이 깊다면, 구현 뿐만 아니라 좀 더 많은 기능 설계를 이끌어가기를 바랄 것이다. 마찬가지로, PM이 매우 숙련된 소프트웨어 아키텍트라면, 실제 구현 결정에 있어서 좀 더 관여하기를 원할 것이다.
— quoted from ‘Great teams have members that defy roles‘ by Brad Adams