
The Problem With Software: Why Smart Engineers Write Bad Code (The MIT Press)


More software projects have gone awry for lack of calendar time than for all other causes combined. Why is this cause of disaster so common? First, our techniques of estimating are poorly developed. More seriously, they reflect an unvoiced assumption which is quite untrue, i.e., that all will go well. Second, our estimating techniques fallaciously
... See moreFrederick P. Brooks Jr. • Mythical Man-Month, Anniversary Edition, The: Essays On Software Engineering
The whole development team didn’t understand the reasons behind the technical practices. They ended up cutting corners here or gaming the system there, creating little sub-teams—or even “teams of one”—operating with a different set of standards and an incomplete view of the whole system. This made integrating code a nightmare-like experience that n
... See moreDavid Scott Bernstein • Beyond Legacy Code: Nine Practices to Extend the Life (and Value) of Your Software
Many poor systems come from an attempt to salvage a bad basic design and patch it with all kinds of cosmetic relief. Top-down design reduces the temptation. I am persuaded that top-down design is the most important new programming formalization of the decade.