This pithy phrase may seem like a defeatist, cynical dismissal of product design reality, but it actually refers to the title of a noteworthy book written by Henry Petroski, the brilliant and instructive structural engineer. Everyone should read that book! It is also one of my favorite tenets as a designer, as it speaks to the very nature of designing, particular in complex multi-disciplinary situations.
Design operates amid a complex milieu of opinion, politics, argument, ego, power, control, ego, and of course limits: budgets, resources, timelines. Not to mention competing and often conflicting (or contradictory) priorities held by various departments like QA, Engineering, Customer Service, Documentation, and Human Factors. (the core elements of a product’s lifecycle)
In order for the designer (and rest of the team) to preserve their sanity and achieve shipping goals so as to produce a product that generates meaningful revenue/profit, everyone has to recognize that a design is never 100% perfectly done and is always open to discussion and improvement, due to all the various perspectives and stakeholders. From the smallest tweak to the greatest strategic alignment, improvements are always possible to make it “more perfect”. The challenge is deciding when the design is considered sufficiently ready for sale and use. Product lifecycles cannot continue infinitely iterating…
This relates to something Steve Jobs famously said: “Real artists ship”. It’s not about achieving perfection, whatever that concept means. Who decides what is perfect anyway? Users? The designer? The product manager? The CEO? That’s a whole other discussion about organizational decison-making and political cultures, power structures, etc. Whew…
Back to the topic at hand, in the world of software development, in particuar, there is always a version 2. Tough choices have to be made to ensure a version 1 actually ships. And those ideas that didn’t make the cut the first time around (based upon criteria consensually agreed upon by designer and PM and Dev leads) can still inform the next iteration. This is also related to the issue of dealing with edge cases. There is no perfect design. No design will satisfy 100% of users’ needs. No design will pass all usability tests perfectly. You can’t please everyone all the time.
The sooner the designer and the entire product development team (and their respective allies) accept this truth, the better off everyone will be in making the necessary choices upfront to better secure and sustain productive (and happier) design efforts over the long-run.