“Perfect” Is the Enemy of“Good Enough”
来源:互联网 发布:少儿编程培训机构地址 编辑:程序博客网 时间:2024/05/16 11:22

“Perfect” Is the Enemy of“Good Enough”
Greg Nyberg
SoFTWARE dESignERS, and architects in particular, tend to evaluate solu- tions by how elegant and optimum they are for a given problem. Like judges at a beauty contest, we look at a design or implementation and immediately see minor flaws or warts that could be eliminated with just a few more changes or refactoring iterations. Domain models simply beg for one more pass to see if there are any common attributes or functions that can be moved into base classes. Services duplicated in multiple implementations cry out their need to become web services. Queries complain about “buffer gets” and nonunique indexes, and demand attention.
My advice: don’t give in to the temptation to make your design, or your imple- mentation, perfect! Aim for “good enough” and stop when you’ve achieved it.
What exactly is “good enough,” you might ask? Good enough means that the remaining imperfections do not impact system functionality, maintainability, or performance in any meaningful way. The architecture and design hangs together. The implementation works and meets the performance require- ments. Code is clear, concise, and well documented. Could it be better? Sure, but it is good enough, so stop. Declare victory and move on to the next task.
The search for perfection in design and implementation leads, in my opin- ion, to overdesigned and obfuscated solutions that are, in the end, harder to maintain.

A number of the axioms in this book caution designers to avoid unnecessary abstraction or complexity. Why do we have problems keeping things simple? Because we are seeking the perfect solution! Why else would an architect introduce complexity in a workable solution except to address a perceived imperfection in the simpler design?
Remember that application development is not a beauty contest, so stop look- ing for flaws and wasting time chasing perfection.
Greg Nyberg is currently an independent J2EE computer consultant with 18 years’ experience designing, building, testing, and deploying large, high-volume, transactional applications such as reservation systems, call centers, and consumer websites. He is the author of the WebLogic companion workbook for Enterprise JavaBeans, Third Edition, (O’Reilly), and the lead author of the book Mastering WebLogic Server (Wiley).
- “Perfect” Is the Enemy of“Good Enough”
- Scope Is the Enemy of Success
- Complexity is The Enemy
- Making AI Fun: When Good Enough is Good Enough
- The world is not enough
- 100. Complacency is the enemy of study. 学习的敌人是自己的满足
- The feeling is good
- Is Good Code Enough for a Project to Be Successful?
- How lighter is good enough for a color?
- Hope is a good thing, maybe the best of things and no good thing ever dies !
- Perfect or Good Enough – 关于测试程度的一些探讨
- If the Dream is Big Enough
- The Fallacy of Perfect Execution
- Yiwu is still the good place of the global business investment and start
- Good Enough Quality
- Good Enough Quality
- Threading lightly, Part 1: Synchronization is not the enemy
- We Have Met the Enemy...and He Is Us
- Windows下TexLive2015 TeXstudio 和SumatraPDF安装配置
- axis2 weibservice 入门
- TQ2440 学习笔记—— 13、GPIO 接口【实验:用汇编语言实现】
- 研究传销骗局
- Android 打造形形色色的进度条 实现可以如此简单
- “Perfect” Is the Enemy of“Good Enough”
- Socket通信---网络通信学习笔记(一)
- Sql Server 保留几位小数的三种做法
- Avoid “Good Ideas”
- Android Buledroid (一) 蓝牙简介
- Android - 卡片式布局 Fragment 详细回顾 (三)
- 开放ubuntu 1404的root帐户ssh远程登录
- GridView内存泄露以及显示自定义类型的资源
- ubuntu 文件夹内打开终端的方法