&gt;Good developers know how things work.<p>&gt;Great developers know why things work.<p>I disagree. I don&#x27;t think anyone who knows the how but not the why ought to be calling themselves a developer at all. Knowing why an application is laid out the way it is a key prerequisite for knowing what parts of the application you can change easily, and which parts will require careful regression testing.