I love Legos. I got my first one when I was a kid. I remember the box had this awesome picture of a robot, so I opened it and started to play around with the pieces. It took me quite a while and I had to follow the instructions step by step, but finally I built it.
After that, I had a few more Lego and I realized that gradually I wouldn’t even need the instructions to assemble the pieces. The building mechanics became something natural: just pick one piece and connect it to the next one. It’s simple, powerful and most importantly consistent.
There are some other great building games and they are all based on the same principle: simplicity and consistency. Once that you master the mechanics of assembling the different pieces, the rest is up to your creativity!
But now, imagine that a new company offers a new building game where its pieces are mixed from other building games. Do you think it will be easy to build something with it? … Well, it will obviously be a disaster, it wouldn’t have any “Design integrity”, some pieces will be Lego, other pieces will be Meccano…you would be probably using glue to keep them together!!!
Design integrity, simplicity and consistency, play the same important role in software development.
Design integrity is about consistency, is about using always an ORM or always SQL to access the database, is also about using a the same dependency injection approach, or the same mechanism to communicate the different components of the application.
The key to create an integrated design is what Fred Brooks called in his master piece “The mythical man month”, the “Surgical Team”. The surgical Team is a small team, sometimes just one person, who supervises all the design and architectural decisions. In an ideal scenario, the surgical team has both formal and informal authority.
To success creating this surgical team, you need exceptional people, one of those 1 in 100 developers who really make a difference in the project, they also need to be excellent communicators, and they need to understand that they mainly have to coach and not impose. It is also very important that the rest of the team trust them and see them as leaders.
The main risk of failing to have an integrated design is technical debt. Technical debt is one of the biggest risks in software development: take too much debt and your project is gonna be in serious trouble.
My advice is: Get a surgical team ASAP or, if you already have one, make sure that they really are trusted by their colleagues and that they really understand the purpose of what they are doing. Having a good surgical team is one of the most valuable assets in a software development project.