@1link @bagder
Same. Overdesigning is sure bad — rookie programmers do this all the time: implementing all the layers of abstraction, and never getting to implementing actual useful features. But underdesigning might also be bad — especially in the commercial projects, when people are time constrained and extensibility was never in mind, some high-priority features often get slapped over in a manner that they look alien to otherwise very neat software.