If everything works perfectly, little is learned. Learning occurs when there are difficulties. The hardest part of design is getting the requirements right, which means ensuring that the right problem is being solved, as well as that the solution is appropriate.