Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Under-engineering is far more common than over-engineering. We under-engineer when we produce poorly designed software. This may occur for several reasons.
We don't have time, don't make time, or aren't given time to refactor.
We aren't knowledgeable about good software design.
We're expected to quickly add new features to existing systems.
We're made to work on too many projects at once.