Flexible, Reliable Using Patterns and Agile Development guides students through the software development process. By describing practical stories, explaining the design and programming process in detail, and using projects as a learning context, the text helps readers understand why a given technique is required and why techniques must be combined to overcome the challenges facing software developers. The presentation is pedagogically organized as a realistic development story in which customer requests require introducing new techniques to combat ever-increasing software complexity. After an overview and introduction of basic terminology, the book presents the core practices, concepts, tools, and analytic skills for designing flexible and reliable software, including test-driven development, refactoring, design patterns, test doubles, and responsibility driven and compositional design. It then provides a collection of design patterns leading to a thorough discussion of frameworks, exemplified by a graphical user interface frramework (MiniDraw). The author also discusses the important topics of configuration management and systematic testing. In the last chapter, projects lead students to design and implement their own frameworks, resulting in a reliable and usable implementation of a large and complex software system complete with a graphical user interface. This text teaches how to design, program, and maintain flexible and reliable software. Installation guides, source code for the examples, exercises, and projects can be found on the author’s website.
Note: I read the book alongside a course taught by the author.
The best book I have read about good coding. It may not be perfect, but the way that concepts are introduced and immediately concretized through implementation eases the learning curve. The reader is presented a wide range methods and patterns for modern software design, which are used on an increasingly complex codebase that follows the reader through the book.
The Good - Presents a wide range of methods and software patterns - Manages to present problems in code following up with possible solutions - Easy to find specific applications of patterns because of initial overview section
The Bad - It is hard to read out of order - Focusses mainly on object oriented programming - Clearly meant to be read alongside a course
Conclusion Great, engaging book which conveys complex themes in an understandable and interesting way. It manages several times to let the reader wonder if some of the code could be rewritten in a smarter way before showing the solution.