Understanding Software

Software legend Max Kanat-Alexander shows you how to succeed as a developer by embracing simplicity, with forty-three essays that will help you really understand the software you work with.
Preview in Mapt
Code Files

Understanding Software

Max Kanat-Alexander

Software legend Max Kanat-Alexander shows you how to succeed as a developer by embracing simplicity, with forty-three essays that will help you really understand the software you work with.
Mapt Subscription
FREE
$29.99/m after trial
eBook
$16.80
RRP $23.99
Save 29%
Print + eBook
$29.99
RRP $29.99
What do I get with a Mapt Pro subscription?
  • Unlimited access to all Packt’s 5,000+ eBooks and Videos
  • Early Access content, Progress Tracking, and Assessments
  • 1 Free eBook or Video to download and keep every month after trial
What do I get with an eBook?
  • Download this book in EPUB, PDF, MOBI formats
  • DRM FREE - read and interact with your content when you want, where you want, and how you want
  • Access this title in the Mapt reader
What do I get with Print & eBook?
  • Get a paperback copy of the book delivered to you
  • Download this book in EPUB, PDF, MOBI formats
  • DRM FREE - read and interact with your content when you want, where you want, and how you want
  • Access this title in the Mapt reader
What do I get with a Video?
  • Download this Video course in MP4 format
  • DRM FREE - read and interact with your content when you want, where you want, and how you want
  • Access this title in the Mapt reader
$0.00
$16.80
$29.99
$29.99p/m after trial
RRP $23.99
RRP $29.99
Subscription
eBook
Print + eBook
Start 30 Day Trial

Frequently bought together


Understanding Software Book Cover
Understanding Software
$ 23.99
$ 16.80
SSL VPN : Understanding, evaluating and planning secure, web-based remote access Book Cover
SSL VPN : Understanding, evaluating and planning secure, web-based remote access
$ 29.99
$ 21.00
Buy 2 for $34.30
Save $19.68
Add to Cart
Subscribe and access every Packt eBook & Video.
 
  • 5,000+ eBooks & Videos
  • 50+ New titles a month
  • 1 Free eBook/Video to keep every month
Start Free Trial
 

Book Details

ISBN 139781788628815
Paperback278 pages

Book Description

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

Chapter 1: Before You Begin…
If You're Going To Do It Then Do it Well
Chapter 2: The Engineer Attitude
Chapter 3: The Singular Secret of the Rockstar Programmer
Chapter 4: Software Design, in Two Sentences
Chapter 5: Clues to Complexity
Chapter 6: Ways To Create Complexity: Break Your API
Chapter 7: When Is Backwards-Compatibility Not Worth It?
Chapter 8: Complexity is a Prison
Chapter 9: Design from the Start
Starting the Right Way
Chapter 10: The Accuracy of Future Predictions
Chapter 11: Simplicity and Strictness
Chapter 12: Two is Too Many
Refactoring
Chapter 13: Sane Software Design
The Wrong Way
The Right Way
We followed all the Laws Of Software Design
Chapter 14: What is a Bug?
Hardware
Chapter 15: The Source of Bugs
Compounding Complexity
Chapter 16: Make It Never Come Back
Make it Never Come Back – An Example
Down the Rabbit Hole
Chapter 17: The Fundamental Philosophy of Debugging
Clarify the Bug
Look at the System
Find the Real Cause
Four Steps
Chapter 18: Effective Engineering Productivity
The Solution
Chapter 19: Measuring Developer Productivity
Chapter 20: How to Handle Code Complexity in a Software Company
Step 1 – Problem Lists
Step 2 – Meeting
Step 3 – Bug Reports
Step 4 – Prioritization
Step 5 – Assignment
Step 6 – Planning
Chapter 21: Refactoring is about Features
Being Effective
Refactoring Doesn't Waste Time, It Saves It
Refactoring To Clarity
Summary
Chapter 22: Kindness and Code
Software is about People
Chapter 23: Open Source Community, Simplified
Retaining Contributors
Removing the Barriers
Getting People Interested
Summary
Chapter 24: What is a Computer?
Chapter 25: The Components of Software: Structure, Action, and Results
Chapter 26: Software Revisited: (I)SAR Clarified
Structure
Action
Results
ISAR in a Single Line of Code
Wrapping SAR Up
Chapter 27: Software as Knowledge
Chapter 28: The Purpose of Technology
Are there Counter-Examples to this Rule?
Is the Advance of Technology "Good"?
Chapter 29: Privacy, Simplified
Privacy of Space
Privacy of Information
A Summary of Privacy
Chapter 30: Simplicity and Security
Chapter 31: Test-Driven Development and the Cycle of Observation
Examples of ODA
Development Processes and Productivity
Chapter 32: The Philosophy of Testing
Test Value
Test Assertions
Test Boundaries
Test Assumptions
Test Design
End to End Testing
Integration Testing
Unit Testing
Reality
Fakes
Determinism
Speed
Coverage
Conclusion – The Overall Goal of Testing
Chapter 33: The Secret of Success: Suck Less
Why is it that this worked?
Chapter 34: How We Figured Out What Sucked
Chapter 35: The Power of No
Recognizing Bad Ideas
Having No Better Idea
Clarification: Acceptance and Politeness
Chapter 36: Why Programmers Suck
What to Study
Chapter 37: The Secret of Fast Programming: Stop Thinking
Understanding
Drawing
Starting
Skipping a Step
Physical Problems
Distractions
Self-Doubt
False Ideas
Caveat
Chapter 38: Developer Hubris
Chapter 39: "Consistency" Does Not Mean "Uniformity"
Chapter 40: Users Have Problems, Developers Have Solutions
Trust and Information
Problems Come from Users
Chapter 41: Instant Gratification = Instant Failure
Solving for the long term
How to Ruin Your Software Company
Chapter 42: Success Comes from Execution, Not Innovation
Chapter 43: Excellent Software
1. Does exactly what the user told it to do
2. Behaves exactly like the user expects it to behave
3. Does not block the user from communicating their intention
Excellence is senior to (but is not in conflict with) code simplicity

What You Will Learn

  • See how to bring simplicity and success to your programming world
  • Clues to complexity - and how to build excellent software
  • Simplicity and software design
  • Principles for programmers
  • The secrets of rockstar programmers
  • Max’s views and interpretation of the Software industry
  • Why Programmers suck and how to suck less as a programmer
  • Software design in two sentences
  • What is a bug? Go deep into debugging

Authors

Table of Contents

Chapter 1: Before You Begin…
If You're Going To Do It Then Do it Well
Chapter 2: The Engineer Attitude
Chapter 3: The Singular Secret of the Rockstar Programmer
Chapter 4: Software Design, in Two Sentences
Chapter 5: Clues to Complexity
Chapter 6: Ways To Create Complexity: Break Your API
Chapter 7: When Is Backwards-Compatibility Not Worth It?
Chapter 8: Complexity is a Prison
Chapter 9: Design from the Start
Starting the Right Way
Chapter 10: The Accuracy of Future Predictions
Chapter 11: Simplicity and Strictness
Chapter 12: Two is Too Many
Refactoring
Chapter 13: Sane Software Design
The Wrong Way
The Right Way
We followed all the Laws Of Software Design
Chapter 14: What is a Bug?
Hardware
Chapter 15: The Source of Bugs
Compounding Complexity
Chapter 16: Make It Never Come Back
Make it Never Come Back – An Example
Down the Rabbit Hole
Chapter 17: The Fundamental Philosophy of Debugging
Clarify the Bug
Look at the System
Find the Real Cause
Four Steps
Chapter 18: Effective Engineering Productivity
The Solution
Chapter 19: Measuring Developer Productivity
Chapter 20: How to Handle Code Complexity in a Software Company
Step 1 – Problem Lists
Step 2 – Meeting
Step 3 – Bug Reports
Step 4 – Prioritization
Step 5 – Assignment
Step 6 – Planning
Chapter 21: Refactoring is about Features
Being Effective
Refactoring Doesn't Waste Time, It Saves It
Refactoring To Clarity
Summary
Chapter 22: Kindness and Code
Software is about People
Chapter 23: Open Source Community, Simplified
Retaining Contributors
Removing the Barriers
Getting People Interested
Summary
Chapter 24: What is a Computer?
Chapter 25: The Components of Software: Structure, Action, and Results
Chapter 26: Software Revisited: (I)SAR Clarified
Structure
Action
Results
ISAR in a Single Line of Code
Wrapping SAR Up
Chapter 27: Software as Knowledge
Chapter 28: The Purpose of Technology
Are there Counter-Examples to this Rule?
Is the Advance of Technology "Good"?
Chapter 29: Privacy, Simplified
Privacy of Space
Privacy of Information
A Summary of Privacy
Chapter 30: Simplicity and Security
Chapter 31: Test-Driven Development and the Cycle of Observation
Examples of ODA
Development Processes and Productivity
Chapter 32: The Philosophy of Testing
Test Value
Test Assertions
Test Boundaries
Test Assumptions
Test Design
End to End Testing
Integration Testing
Unit Testing
Reality
Fakes
Determinism
Speed
Coverage
Conclusion – The Overall Goal of Testing
Chapter 33: The Secret of Success: Suck Less
Why is it that this worked?
Chapter 34: How We Figured Out What Sucked
Chapter 35: The Power of No
Recognizing Bad Ideas
Having No Better Idea
Clarification: Acceptance and Politeness
Chapter 36: Why Programmers Suck
What to Study
Chapter 37: The Secret of Fast Programming: Stop Thinking
Understanding
Drawing
Starting
Skipping a Step
Physical Problems
Distractions
Self-Doubt
False Ideas
Caveat
Chapter 38: Developer Hubris
Chapter 39: "Consistency" Does Not Mean "Uniformity"
Chapter 40: Users Have Problems, Developers Have Solutions
Trust and Information
Problems Come from Users
Chapter 41: Instant Gratification = Instant Failure
Solving for the long term
How to Ruin Your Software Company
Chapter 42: Success Comes from Execution, Not Innovation
Chapter 43: Excellent Software
1. Does exactly what the user told it to do
2. Behaves exactly like the user expects it to behave
3. Does not block the user from communicating their intention
Excellence is senior to (but is not in conflict with) code simplicity

Book Details

ISBN 139781788628815
Paperback278 pages
Read More

Read More Reviews

Recommended for You

SSL VPN : Understanding, evaluating and planning secure, web-based remote access Book Cover
SSL VPN : Understanding, evaluating and planning secure, web-based remote access
$ 29.99
$ 21.00
Software Design Principles in Java [Integrated Course] Book Cover
Software Design Principles in Java [Integrated Course]
$ 124.99
$ 106.25
Software-Defined Networking with OpenFlow - Second Edition Book Cover
Software-Defined Networking with OpenFlow - Second Edition
$ 35.99
$ 25.20
Software Architecture with Python [Video] Book Cover
Software Architecture with Python [Video]
$ 124.99
$ 106.25
Skill Up: A Software Developer's Guide to Life and Career Book Cover
Skill Up: A Software Developer's Guide to Life and Career
$ 31.99
$ 22.40
Software Architecture with Python Book Cover
Software Architecture with Python
$ 39.99
$ 28.00