Weekly Byte: Seeking Paragon
A recent conversation with a colleague got me thinking about the pursuit of perfection. He mentioned the old adage, “Perfection is the enemy of good,” and I found it struck a chord with me.
A paragon is defined as a person or thing regarded as a perfect example of a particular quality. It’s also defined as a perfect diamond, flawless and without inclusions. The largest flawless diamond ever found is known as The Paragon. Eventually it was acquired by a jeweler and cut into a seven sided jewel and set in a necklace. They say that having a higher quality cut removes rough material from a diamond and improves it. What, then, if the diamond is already perfect? Why change it?
Seeking perfection so often leads to endless rework, especially in software design and development. An overused phrase amongst developers is “this needs to be refactored.” What they really mean is, “I think this code is less than perfect and I'm going to improve it.”
Refactoring can be an important and useful tool, but it is also an exercise that can be detrimental to achieving the “good.” By definition, refactoring does not change the external behavior or functionality of the software. Its main purpose is to improve the internal properties of the software. Structure, readability, and ultimately maintainability are all potentially improved by refactoring. It's important to keep in mind the law of diminishing returns and strive for an effective creative process.
At pMD we encourage simplification and have a code review process that is part of every release. Every change we make is thoughtfully added and then reviewed by our peers. Ideally, we make incremental improvements to the areas of the software that we are working on and very rarely would we tear something down seeking perfection.
Our team at pMD is wholeheartedly committed to being creators of great software. My colleague’s statement that “Perfection is the enemy of good” served as a reminder that we can be trapped by the idea that things must be perfect. At some point, changes we make to our creations no longer make them better but rather different, and many times worse. Instead, it's best to leverage our desire for perfection to spur us toward better quality, no matter what form that takes. Perfection is a subjective concept and sometimes our first attempt is the best one, and for the time being, overworking something may be just as bad as failing to polish it.
A paragon is defined as a person or thing regarded as a perfect example of a particular quality. It’s also defined as a perfect diamond, flawless and without inclusions. The largest flawless diamond ever found is known as The Paragon. Eventually it was acquired by a jeweler and cut into a seven sided jewel and set in a necklace. They say that having a higher quality cut removes rough material from a diamond and improves it. What, then, if the diamond is already perfect? Why change it?
Seeking perfection so often leads to endless rework, especially in software design and development. An overused phrase amongst developers is “this needs to be refactored.” What they really mean is, “I think this code is less than perfect and I'm going to improve it.”
Refactoring can be an important and useful tool, but it is also an exercise that can be detrimental to achieving the “good.” By definition, refactoring does not change the external behavior or functionality of the software. Its main purpose is to improve the internal properties of the software. Structure, readability, and ultimately maintainability are all potentially improved by refactoring. It's important to keep in mind the law of diminishing returns and strive for an effective creative process.
At pMD we encourage simplification and have a code review process that is part of every release. Every change we make is thoughtfully added and then reviewed by our peers. Ideally, we make incremental improvements to the areas of the software that we are working on and very rarely would we tear something down seeking perfection.
Our team at pMD is wholeheartedly committed to being creators of great software. My colleague’s statement that “Perfection is the enemy of good” served as a reminder that we can be trapped by the idea that things must be perfect. At some point, changes we make to our creations no longer make them better but rather different, and many times worse. Instead, it's best to leverage our desire for perfection to spur us toward better quality, no matter what form that takes. Perfection is a subjective concept and sometimes our first attempt is the best one, and for the time being, overworking something may be just as bad as failing to polish it.