Book Image

Understanding Software

By : Max Kanat-Alexander
Book Image

Understanding Software

By: Max Kanat-Alexander

Overview of this book

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 code guru status, and his ideas will inspire you and help refresh your approach to the challenges of being a developer.
Table of Contents (50 chapters)
Understanding Software
About the Author
Customer Feedback
The Engineer Attitude
The Singular Secret of the Rockstar Programmer
Software Design, in Two Sentences
Clues to Complexity
Ways To Create Complexity: Break Your API
When Is Backwards-Compatibility Not Worth It?
Complexity is a Prison
The Accuracy of Future Predictions
Simplicity and Strictness
Two is Too Many
What is a Bug?
What is a Computer?
The Components of Software: Structure, Action, and Results
Software as Knowledge
Simplicity and Security
How We Figured Out What Sucked
Why Programmers Suck
Developer Hubris
"Consistency" Does Not Mean "Uniformity"
Success Comes from Execution, Not Innovation

The Right Way

So, what would our process look like for many people all using standardized bars that screw together? (This is the right way to build something.)

  1. Have your team all go build (or buy) standardized individual bars. You can have as many people working simultaneously as there are bars in the structure.

  2. Have them test their individual bars to make sure that they won't break.

  3. Have them carry their individual bars to the place where the structure needs to be.

  4. Put the first bar into the ground, standing upright:

  5. Push on the first bar from all angles to see if it is going to fall over.

  6. Screw in a second bar to the first one:

  7. Test the complete structure now, only to find that it's not strong enough to stand by itself.

  8. Attach unbreakable steel ropes to the sides of the structure, like so:

    These ropes should be able to withstand anything within reason, or even well beyond reason.

  9. Test it again and find out that it now can stay up no matter how hard you push on it.

  10. Add a third bar, and put new ropes...