Synopses & Reviews
Good software design is simple and easy to understand. Unfortunately, the average computer program today is so complex that no one could possibly comprehend how all the code works. This concise guide helps you understand the fundamentals of good design through scientific laws—principles you can apply to any programming language or project from here to eternity.
Whether youre a junior programmer, senior software engineer, or non-technical manager, youll learn how to create a sound plan for your software project, and make better decisions about the pattern and structure of your system.
- Discover why good software design has become the missing science
- Understand the ultimate purpose of software and the goals of good design
- Determine the value of your design now and in the future
- Examine real-world examples that demonstrate how a system changes over time
- Create designs that allow for the most change in the environment with the least change in the software
- Make easier changes in the future by keeping your code simpler now
- Gain better knowledge of your softwares behavior with more accurate tests
Every complexity of software design, simplified and codified at last, for use by every programmer, from the novice to the architects of major applications. This book contains the fundamental laws of software development, the primary pieces of understanding that make the difference between a mid-level/junior programmer and the high-level senior software engineer. The book exists to help all programmers understand the process of writing software, on a very fundamental level that can be applied to any programming language or project, from here into eternity. Code Simplicity is also written in such a way that even non-technical managers of software teams can gain an understanding of what the “right way” and the “wrong way” is (and why they are right and wrong) when it comes to software design. The focus of the book is primarily on “software design,” the process of creating a plan for a software project and making technical decisions about the pattern and structure of a system.
About the Author
Max Kanat-Alexander, Chief Architect of the open-source Bugzilla Project, Google Software Engineer, and writer, has been fixing computers since he was eight years old and writing software since he was fourteen. He is the author of http://www.codesimplicity.com/ and http://www.fedorafaq.org, and is currently living in Northern California.
Table of Contents
Preface; Definitions, Facts, Rules, and Laws; Conventions Used in This Book; Attribution and Permissions; Safari® Books Online; How to Contact The Author; How to Contact O'Reilly; Acknowledgments; Content Updates; Chapter 1: Introduction; 1.1 Why Simplicity?; 1.2 Software Design; Chapter 2: The Purpose of Software; 2.1 Real-World Application; Chapter 3: The Future; 3.1 The Equation of Software Design; 3.2 The Quality of Design; 3.3 Unforeseeable Consequences; Chapter 4: Change; 4.1 Change in a Real-World Program; 4.2 The Three Flaws; 4.3 Incremental Development and Design; Chapter 5: Defects and Design; 5.1 If It Ain't Broken...; 5.2 Don't Repeat Yourself; Chapter 6: Simplicity; 6.1 Simplicity and the Equation of Software Design; 6.2 Simplicity Is Relative; 6.3 How Simple Do You Have to Be?; 6.4 Be Consistent; 6.5 Readability; 6.6 Simplicity Requires Design; Chapter 7: Complexity; 7.1 Complexity and Purpose; 7.2 Bad Technologies; 7.3 Complexity and the Wrong Solution; 7.4 Complex Problems; 7.5 Handling Complexity; 7.6 Rewriting; Chapter 8: Testing; The Laws of Software Design; Facts, Laws, Rules, and Definitions;