O'Reilly logo

97 Things Every Software Architect Should Know by Richard Monson-Haefel

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 70. "Perfect" Is the Enemy of "Good Enough"

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).

Greg Nyberg
image with no caption

SOFTWARE DESIGNERS, and architects in particular, tend to evaluate solutions 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 implementation, 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, ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required