December 2015
Beginner to intermediate
832 pages
26h 13m
English
Design is a challenging activity: We invent objects, distribute responsibilities, and define collaborations to solve a given real-world problem in software. In the process, we must make a vast number of decisions, each of which influences the outcome of the project: how well we fulfill the users’ expectations; how quickly we can deliver the software; how much effort we have to spend; how easily the software can be adapted to new requirements; how long the software will remain usable; and maybe even whether the project is a success or a failure.
In the end, there is almost never a single best answer to the design questions that arise in this process. We have to make do with heuristics and often have to be content ...