Part IV: Product Developers Integrate to Collaborate and Collaborate to Integrate
In the first three parts of The Rise of Product Developers series, we delved into understanding users’ problems, becoming domain experts, and the dual responsibility of validation and preservation to achieve their missions of enabling a responsive organization and paving the way for accelerated product innovation. We now focus on another crucial aspect of their work: how Product Developers integrate and collaborate.
Integration drives coordination. Coordination result in integration
To fulfill their validation responsibility, Product Developers prioritize maintaining a fully integrated and delivered product consistently. This approach ensures that the entire organization benefits from receiving accurate and timely feedback, enabling the early detection and resolution of issues. Product Developers utilize modern technology and practices to achieve continuous integration and avoid potential pitfalls, such as relying on “integration tests” as an excuse for incomplete integration.
Conway’s Law, or more precisely, Conway’s Observation, posits that the structure of a software system inevitably reflects the communication structure of the organization that builds it.
“Always be leaving” Product Developers don’t use this observation as an excuse to organize themselves strictly around the software structure. Instead, they recognize the need for collaboration to achieve continuous integration. Integration drives collaboration and coordination, while effective collaboration leads to a seamlessly integrated product, resulting in a truly fruitful development process. The Large-Scale Scrum framework further observes this strong overlap of coordination and integration, providing guidelines for it.
There appears to be some need for coordination that is.
Both collective code ownership and emergent design are ways to democratize the decision-making process. The word “decentralization” is chosen in the title to avoid implication to the political label.
Product Developers employ two communication patterns depending on the topic: Contextual and Solution-oriented.
Contextual communication revolves around the “What,” “Why,” and “Scope” of a project. It involves open discussions, often originating externally. Product Developers organize centralized workshops with all relevant individuals to address these questions. These time-boxed, regular meetings have clear short-term goals as outcomes, such as a set of Acceptance Criteria. Exploratory tests conducted by Product Developers also follow a similar pattern.
Solution-oriented communication focuses on the “How” when the problem scope is already defined. It encompasses finding solutions, designing and implementing features, and further clarifying the user’s need or obtaining confirmation. Product Developers realize the need for collaboration through continuously solving customer-centric problems and integrating code on the same branch of the version control system. This communication style is often decentralized, emergent, and reciprocal.