Pursuit of Perfection – Design, Architecture, and Re-architecture in the world of software

Excellence is a Journey. Perection is the destination.

target_for_perfectionOften we have deep discussions about the desire to pursue perfection.

An engineer walks up and says “I really do not like these shortcuts, I have this full design and I want to implement it.”

The leader responds, “Yes, I understand. How long will it take to implement your solution.”

Engineer says “Well! if I am not distracted by other things, I can get it done in two weeks.”

Okay we had seen that movie play out sometimes, thinks the leader in his own mind. And the leader asks, “What can you do if you only have a week instead of two?”

Engineer is not happy with the response, but still goes along and says, “I can get a quarter of it done and will have to pursue the rest later.”

“Would you rather do the quarter or none at all?” comes another question quickly from the leader.

Engineer recognizes the opportunity and jumps in to tell, “I would rather do the quarter instead of the full solution. At least I can fix the top issues.”

“So be it. Go ahead and get the quarter done.” approves the leader. 

Both parties here agreed to find a middle ground to settle on. The leader knows from his/her experience that any architecture change will take a long time. And the leader also knows that the engineer is probably telling the right thing he/she wants to do. Unfortunately the leader often does not have luxury to spare two weeks while also handling other business needs. So they found a middle ground.

I had seen this play out many times in my career. I am a big fan of clean architecture. At the same time, I also am very pragmatic to ensure we do not over reach to perfection. Recently I am reading “The Lean Startup” book; Eric Ries gives several example to suggest finding simpler and easy ways to get work done to validate the benefits early on.

One aspect that I found useful in my career with architecture and rearchitecture work is to write goals and measures of success down. Having a written record allows us to have thoughtful discussion and careful prioritization. And also keeps all parties honest about achiveable results. Turning the so called wishlist of clean architecture into iterative refinement and reactoring exercise helps!

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *