As a scaling start-up we often hit hard engineering problems. Taking a collaborative approach to solving these problems has huge positive outcomes.
We have codified these outcomes as a set of technical and social requirements. We have also developed a process to ensure an architectural solution meets these requirements.
Group Architecture originated from an organic rhythm we got into when we were a small team.
Step 1: Describe the problem thoroughly without architectural bias in written form.
Step 2: Discuss the problem. Get the engineering team together and discuss the problem. Come to a common understanding of the problem. This may mean your description changes as new information and ideas come to light.
Step 3: Come up with alternatives. Encourage people to think about possible solutions to the problem asynchronously. Ensure there is enough time to plan possible approaches.
Step 4: Agree on an initial approach. Re-group and weight the options people have come up with. Deciding on a solution will often include a mix of approaches. Record each option, why it was not chosen. For the final approach, record why it won.
Step 5: Keep iterating the architecture. Have two engineers, one senior, iterate the architecture into a formal solution design. When the gist of the solution design is formed get together as a team once more.
Step 6: Re-validate the solution. Look for:
Record all improvement vectors. The small group continues to flesh out the solution design, incorporating the feedback.
Step 7: Rinse and repeat steps 5 and 6 until the architecture solution design finishes.
Some guidelines are: