Discussing Software Design Decisions Having joined a new development team recently, I found myself frequently discussing rather trivial design issues with the other team members.
I do enjoy this discussions a lot and they do provide value to the project as the design is thought through thoroughly by several people.
Nevertheless I was asking myself why we did not have these discussions in such depth in my previous teams.
My answer for now is that the teams I worked with until now fell in one of three categories:
A A chief architect, technical lead, etc. made all the design decisions down to the lowest level. His decisions where never questioned as he was considered some kind of genius who was not to be questioned.
B No one really cared about the design. Everyone just did what he thought was best or maybe was the easiest way.
C The team developed a common sense for good and bad design. Smaller design decisions did not need to be discussed as everyone had the same opinion anyway.
As much as I enjoy the discussions in my current team (category D), I think the teams in category C worked much more efficiently.
Still category D is better than A and B.
Obviously B leads to a huge pile of chunk.
A works very efficient too, but if the genius leaves the project (happened to me once) the team is left more or less clueless on how to continue. The team becomes a team of category B or D.
Category D teams should have to potential to evolve to a category C team and therefore become more efficient in creating software designs.