Select your rental length

Starts: Today

Rent From: $5.53

Deliver to your Kindle or other device

Enter a promotion code
or gift card

Try it free

Sample the beginning of this book for free

Deliver to your Kindle or other device

Sorry, this item is not available in
Image not available for
Image not available

Code Simplicity: The Fundamentals of Software [Kindle Edition]

Max Kanat-Alexander
3.9 out of 5 stars  See all reviews (31 customer reviews)

Digital List Price: $21.99 What's this?
Print List Price: $24.99
Rent From: $5.53 or Buy Price: $12.49
Save up to: $19.46 (78%) You Save: $12.50 (50%)

  • Print ISBN-10: 1449313892
  • Print ISBN-13: 978-1449313890
  • Edition: 1
Free Kindle Reading App Anybody can read Kindle books—even without a Kindle device—with the FREE Kindle app for smartphones, tablets and computers.

To get the free app, enter your email address or mobile phone number.


Amazon Price New from Used from
Kindle Edition
Rent from
Paperback $24.99  
Shop the new
New! Introducing the, a hub for Software Developers and Architects, Networking Administrators, TPMs, and other technology professionals to find highly-rated and highly-relevant career resources. Shop books on programming and big data, or read this week's blog posts by authors and thought-leaders in the tech industry. > Shop now

Book Description

Often when we discuss a programming decision, we talk about our feelings or opinions. Wouldn't it be better if instead we had a series of rules and laws for software design, and we could base our discussions and decisions on those?

Well, there are laws of software design, they can be known, and you can know them. Based on extensive research and broad experience, this concise guide boils down software to its true fundamentals--simple principles that any programmer or technical manager can apply to guide the way towards sustainable, well-designed systems.

This isn't a book that will tell you what to do with your software. Rather, it's a guide that will help you understand how to think about design choices and make the right decision for your situation.
  • Learn what differentiates great programmers from poor programmers
  • Understand the ultimate purpose of software and the goals of good software design
  • Determine the value of your decisions now and in the future
  • Examine real-world examples that demonstrate how a system changes over time
  • Learn how to write software that stands up to unpredictable future requirements
  • Make easier changes in the future by keeping your code simpler now
  • Understand principles behind test writing and how to choose what to test

Editorial Reviews

Book Description

The Science of Software Design

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 and, and is currently living in Northern California.

Product Details

  • File Size: 255 KB
  • Print Length: 84 pages
  • Page Numbers Source ISBN: 1449313892
  • Simultaneous Device Usage: Unlimited
  • Publisher: O'Reilly Media; 1 edition (March 23, 2012)
  • Sold by: Amazon Digital Services, Inc.
  • Language: English
  • ASIN: B007NZU848
  • Text-to-Speech: Enabled
  • X-Ray:
  • Word Wise: Not Enabled
  • Lending: Not Enabled
  • Amazon Best Sellers Rank: #312,315 Paid in Kindle Store (See Top 100 Paid in Kindle Store)
  •  Would you like to give feedback on images?

Customer Reviews

3.9 out of 5 stars
3.9 out of 5 stars
Share your thoughts with other customers
Most Helpful Customer Reviews
38 of 41 people found the following review helpful
5.0 out of 5 stars Made me want to code. October 29, 2012
Format:Kindle Edition
This review is part of the O'Reilly Blogger Review Program. I got the book for free, but I didn't have to write a positive review about it. Fortunately, it's a great book.

I've been scripting, hacking, and patching things together for years now. I first started with VBA, then AutoHotkey, then Ruby, with a bit of PHP and JavaScript here and there. But I've never really considered myself a proper coder -- I just hack things together until I get something works. I knew "proper coding" can be beautiful, but I didn't really understand it until I finished reading Code Simplicity.

It's a short read, but it sometimes feels like it was written in blood. The author isn't afraid of making bold assertions, and calling his findings "laws." You don't have to know how to code to read this book: There are no code samples. It's all high-level concepts, from the Equation of Software Design helping you figure out whether or not to implement a change, to The Three Flaws that coders make when they're trying to change their software (mistakes that I have, of course, done in the past), to a fascinating chapter about simplicity, including how simple you really have to be (stupid, dumb simple), and, why that's important, and what _is_ simplicity, anyway.

If you have any interest in programming, are thinking of getting into it, or if you already code and feel like you're missing some of the philosopical underpinnings of the subject, this is really a must-read. Highly recommended.
Comment | 
Was this review helpful to you?
29 of 31 people found the following review helpful
3.0 out of 5 stars a decent weekend read for the journeyman programmer April 26, 2012
"Code Simplicity" by Max Kanat-Alexander (published by O'Reilly, 2012) is the kind of book you might give to a junior or journeyman programmer and say: "Read this over the weekend, and then on Monday we'll talk about your design." There are many quotable passages, pithy aphorisms, and axioms that take the form of definitions, facts, rules, and laws. Kanat-Alexander uses a conversational tone that takes this already common-sense study on the subject and makes it even more approachable and straightforward. And just what is the subject here? As the title dictates, the subject of the book is code simplicity: dealing with complexity, identifying areas where complexity is likely to creep in, and strategies for eliminating or reducing that complexity.

At a high level, Kanat-Alexander's discussions of the component parts of this subject are deft and lucid. He is able to evoke familiar situations and scenarios (e.g., coding under a deadline; e.g., dealing with large legacy code bases) and uses those to frame and present his recommended methodologies for keeping code "simple". A lot of the techniques and suggestions will all seem like common sense to anyone who has been programming for a non-trivial interval: reduce maintenance effort before trying to reduce implementation effort; the larger your change, the more likely you are to break something; don't "fix" things unless you know that you have (and have evidence of) a problem -- and so on. Again, to experienced programmers (and, arguably, also to someone who has just sat in on 4+ years worth of computer science lectures?) these suggestions will all seem like conventional wisdom, like the elements of craftsmanship that they perform and preach every day.
Read more ›
Was this review helpful to you?
53 of 60 people found the following review helpful
1.0 out of 5 stars Vague and naive April 9, 2012
Format:Kindle Edition
This book was a terrible disappointment. I was excited by the novel prospect that the author managed to create an original science of software design, but in reality this book is just a vague, rambling argument in favor of Agile software development. In fact, every idea in this book has already been presented in far better books by Kent Beck, Martin Fowler, Robert C. Martin, etc.

I applaud the author's ambition in wanting to create a science of software design, but I think he was incredibly naive to think he could do so without more data, evidence, and rigor. The most confusing aspect of the whole book is that he spends several pages in chapter 2 talking about what a science is, and what the necessary characteristics of a science of software design must look like, but then throughout the rest of the book he doesn't make any attempt to adhere to this model. Instead, he always proceeds directly from vague generalizations and observations, or "data" from contrived examples, to his "laws" and "facts" about software design. For example, in chapter 4 he argues about optimizing design decisions to reduce the future cost of maintenance at the expense of greater initial implementation cost, and the only evidence he offers in support of this position is a series of tables showing different hypothetical situations with different costs of effort and value. It's not that his conclusion is necessarily flawed or invalid -- indeed, making decisions to reduce the future cost of maintenance is a very reasonable and pragmatic approach -- but that his argument suffers from lack of evidence, and specificity, and rigorous application of the scientific method.
Read more ›
Was this review helpful to you?
24 of 26 people found the following review helpful
5.0 out of 5 stars Philosophical, insightful. April 27, 2012
Format:Kindle Edition
Great read. I would recommend this book for a few reasons.

1. For me (I am a beginning / intermediate programmer), my programming education came down to mainly syntax, how to make stuff work with some "tricks" for organization and maintainability along the way. But what was left out was the philosophy of how to approach a software problem and what your goal is beyond getting it to "just work". This book filled that gap for me, providing the most fundamental laws of the subject that I have found yet. For this reason, this book reads more "philosophically" than "technically" - which I liked.

2. As a manager of programmers, I have struggled with other's kludgy code, and from the complaints of others who had to inherit it. The principles in this book are well suited for a programming team to adopt as a point of their culture. The very experienced programmers may have already learned some of these lessons, or intuitively apply them. But for the whole team to be on the same page, it is necessary to have these points clearly stated in a short way that anyone can understand. I think this short (~90 page) book does that job very well.
Was this review helpful to you?
Most Recent Customer Reviews
2.0 out of 5 stars Far more basic than advertised
Advice inside of this book is definitely sound. However it's very basic, so if you have even read some blogs on best programming practices, you are unlikely to get any value from... Read more
Published 1 month ago by Daniel Materowski
5.0 out of 5 stars write and maintain better software.
Well written and applicable to any size software project. Whether you are a one-person band or part of a legion of developers on a large project, this book will give you pragmatic... Read more
Published 3 months ago by Dante
4.0 out of 5 stars A fair attempt to compile good software development principles in a...
It's a very compact book with compilation of software development principles. Yes, it's vague, backed by anecdotal evidence (or no evidence) and may feel overly generalized, but... Read more
Published 4 months ago by Dmitry
2.0 out of 5 stars Disappointing; I didn't find anything here that felt new ...
Disappointing; I didn't find anything here that felt new. There are exhortations, but what I needed was a more concrete sense of how to apply these common guidelines to an actual... Read more
Published 4 months ago by Tom Hudson
5.0 out of 5 stars Your code will thank you.
I know from working with Max on some big refactoring projects that he certainly practices what he preaches. This is a great read, and a really quick one too! Read more
Published 4 months ago by Jason Neufeld
5.0 out of 5 stars #1 Book for Software Managers
There are many great books on software development. They share one common problem: far less than 20% of software engineers read professional books. Read more
Published 4 months ago by Does Not Matter
5.0 out of 5 stars wonderfully simple
I liked this book. It told how to fix complex code by breaking it down into manageable pieces. Read this book and then read other books on the topics brought up in it.
Published 11 months ago by Michael L Stokes
3.0 out of 5 stars Tackling Complexity
This is a very short book that addresses the greatest challenge regarding software development which is to manage and reducing complexity. Read more
Published 12 months ago by Joao Cortez
5.0 out of 5 stars the shortest but most inofrmative book ever!!!
I was nearly to stop reading the book as first 50% of the book is very boring. I would recommend to read it from the middle and then move to the beginning. Read more
Published 15 months ago by David S. James
3.0 out of 5 stars "Code Simplicity: The Fundamentals of Software" by Max...
The idea of simplicity is fantastic. Numerous books are coming out under that banner. In fact, a wonderful book on Steve Jobs and Apple had a similar theme, "Insanely Simple. Read more
Published 16 months ago by Marc Zucker
Search Customer Reviews

More 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 and, and is currently living in Northern California.

What Other Items Do Customers Buy After Viewing This Item?


There are no discussions about this product yet.
Be the first to discuss this product with the community.
Start a new discussion
First post:
Prompts for sign-in

Look for Similar Items by Category