Designing and implementing software is a complex and intricate process that requires careful planning and execution. One of the most critical decisions that a software development team must make is who will design the architecture and who will implement it in code. Robert L. Glass, a prominent software engineering author, argues that it is essential that the same person design and implement the architecture to avoid trouble and friction in the development process.

Glass’s assertion is based on the fact that the tools and methods that a software engineer uses to design the architecture can differ from the tools and methods that a coder uses to implement it. As a result, the implementation may not match the original architectural design, leading to inefficiencies and difficulties in the development process. The problem is compounded when the designer is inexperienced, creating significant social engineering challenges.

Having experienced such difficulties firsthand, I can attest to the chaos that can result from separating the designer from the coder in a software development project. The disempowerment caused by a design that does not meet the real business problems at hand can be overwhelming, leading to delays, rework, and a lack of progress.

To avoid such chaos, it is crucial that software development teams avoid separating the designer from the coder. Instead, the team should ensure that the person who designs the architecture is the same person who implements it in code. This approach allows the designer to have a clear understanding of the tools and methods available to the coder, making it easier to ensure that the implementation matches the original architectural design.

Separating designer from coder in software development projects should be avoided at all costs. Glass’s assertion that such separation creates enormous friction is supported by both the literature and anecdotal evidence. By ensuring that the person who designs the architecture is the same person who implements it in code, software development teams can avoid the inefficiencies and difficulties that can arise from such separation and ensure a smoother development process.