- Read and enjoy the superlative writing and insights of the legendary Max Kanat-Alexander
- Learn and reflect with Max on how to bring simplicity to your software design principles
- Discover the secrets of rockstar programmers and how to also just suck less as a programmer
In Understanding Software, Max Kanat-Alexander, Technical Lead for Code Health at Google, shows you how to bring simplicity back to computer programming. Max explains to you why programmers suck, and how to suck less as a programmer. There's just too much complex stuff in the world. Complex stuff can't be used, and it breaks too easily. Complexity is stupid. Simplicity is smart.
Understanding Software covers many areas of programming, from how to write simple code to profound insights into programming, and then how to suck less at what you do! You'll discover the problems with software complexity, the root of its causes, and how to use simplicity to create great software. You'll examine debugging like you've never done before, and how to get a handle on being happy while working in teams.
Max brings a selection of carefully crafted essays, thoughts, and advice about working and succeeding in the software industry, from his legendary blog Code Simplicity. Max has crafted forty-three essays which have the power to help you avoid complexity and embrace simplicity, so you can be a happier and more successful developer.
Max's technical knowledge, insight, and kindness, has earned him a status as a code guru, and his ideas will inspire you and help refresh your approach to the challenges of being a developer.
What you will learn
- See how to bring simplicity and success to your programming
Table of Contents
1. Before You Begin…
2. The Engineer Attitude
3. The Singular Secret of the Rockstar Programmer
4. Software Design, in Two Sentences
5. Clues to Complexity
6. Ways To Create Complexity: Break Your API
7. When Is Backwards-Compatibility Not Worth It?
8. Complexity is a Prison
9. Design from the Start
10. The Accuracy of Future Predictions
11. Simplicity and Strictness
12. Two is Too Many
13. Sane Software Design
14. What is a Bug?
15. The Source of Bugs
16. Make It Never Come Back
17. The Fundamental Philosophy of Debugging
18. Effective Engineering Productivity
19. Measuring Developer Productivity
20. How to Handle Code Complexity in a Software Company
21. Refactoring is about Features
22. Kindness and Code
23. Open Source Community, Simplified
24. What is a Computer?
25. The Components of Software: Structure, Action, and Results
26. Software Revisited: (I)SAR Clarified
27. Software as Knowledge
28. The Purpose of Technology
29. Privacy, Simplified
30. Simplicity and Security
31. Test-Driven Development and the Cycle of Observation
32. The Philosophy of Testing
33. The Secret of Success: Suck Less
34. How We Figured Out What Sucked
35. The Power of No
36. Why Programmers Suck
37. The Secret of Fast Programming: Stop Thinking
38. Developer Hubris
39. "Consistency" Does Not Mean "Uniformity"
40. Users Have Problems, Developers Have Solutions
41. Instant Gratification = Instant Failure
42. Success Comes from Execution, Not Innovation
43. Excellent Software