The team put together a working agreement for design. It requires two design reviewers and the author to engage and determine the extent of the design.
I see design as an important component of implementation. It promotes knowledge transfer and better solutions.
I think this agreement should be applied to every implementation undertaken by the team. A single line of code qualifies as an implementation. It’s my perspective on the line of code that ruffles feathers.
Why is a line of code important? Because the intent of the working agreement is to ensure a few team members think about the implementation before any code is written.
I value the opportunity for people to engage on an idea and develop it. The agreement doesn’t dictate a requirement for the design. It requires agreement on the extent of the design.
The team used examples from Leslie Lamport’s talk Thinking for Programmers to develop the working agreement.
Thinking for Programmers says the degree of specification of a program should reflect the complexity and subtlety of what you are trying to achieve. A design might be a couple of lines of prose.
One argument put forth by a team member opposed this approach is that it’s too heavy. It will slow things down. That’s right–their argument was that a discussion whose duration should reflect the complexity of the thing being programmed is too expensive to undertake so we shouldn’t do it.
The argument isn’t against design or the design output. It can’t be. It’s against the required interaction. Since it’s against the required interaction either the interaction is unhealthy or the people making the argument don’t want to interact.
Is there any other way to see this?