John Ousterhout
A Philosophy of Software Design
Writing computer software is one of the purest creative activities in the history of the human race. (Location 254)
Tags: pink
All programming requires is a creative mind and the ability to organize your thoughts. (Location 256)
Tags: pink
The first approach is to eliminate complexity by making code simpler and more obvious. (Location 267)
Tags: pink
The second approach to complexity is to encapsulate it, so that programmers can work on a system without being exposed to all of its complexity at once. This approach is called modular design. (Location 268)
Tags: pink
The extreme of this approach is called the waterfall model, in which a project is divided into discrete phases such as requirements definition, design, coding, testing, and maintenance. In the waterfall model, each phase completes before the next phase starts; (Location 275)
Tags: pink
the waterfall model rarely works well for software. Software systems are intrinsically more complex than physical systems; it isn’t possible to visualize the design for a large software system well enough to understand all of its implications before building anything. (Location 278)
Tags: pink
developers try to patch around the problems without changing the overall design. This results in an explosion of complexity. (Location 282)
Tags: pink
agile development, in which the initial design focuses on a small subset of the overall functionality. (Location 284)
Tags: pink
The incremental approach works for software because software is malleable enough to allow significant design changes partway through implementation. (Location 289)
Tags: pink
Incremental development means that software design is never done. (Location 291)
Tags: pink
The ability to recognize complexity is a crucial design skill. It allows you to identify problems before you invest a lot of effort in them, and it allows you to make good choices among alternatives. (Location 330)
Tags: pink
Complexity is anything related to the structure of a software system that makes it hard to understand and modify the system. (Location 339)
Tags: pink