Programming Books C Java PHP Python Learn more Browse Programming Books

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

Anybody can read Kindle books—even without a Kindle device—with the FREE Kindle app for smartphones, tablets and computers.
Sorry, this item is not available in
Image not available for
Image not available

To view this video download Flash Player


Code Simplicity: The Fundamentals of Software [Kindle Edition]

Max Kanat-Alexander
3.9 out of 5 stars  See all reviews (25 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


Amazon Price New from Used from
Kindle Edition
Rent from
Paperback $20.49  
Kindle Delivers
Kindle Delivers
Subscribe to the Kindle Delivers monthly e-mail to find out about each month's Kindle book deals, new releases, editors' picks and more. Learn more (U.S. customers only)

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:
  • Lending: Not Enabled
  • Amazon Best Sellers Rank: #399,767 Paid in Kindle Store (See Top 100 Paid in Kindle Store)
  •  Would you like to give feedback on images?

Customer Reviews

Most Helpful Customer Reviews
35 of 37 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?
30 of 32 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?
45 of 51 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?
27 of 29 people found the following review helpful
5.0 out of 5 stars Read it for the Shared Vocabulary May 12, 2012
Format:Kindle Edition
Code Simplicity by Kanat-Alexander from Google really surprised me. This is a short book, even an airplane ride length book, yet it's dense enough and informative enough for me to feel that re-reading it several more times would be awesome.

Let me get this out of the way first: this is not a how-to book for making software. There is no code in this book. This is a book on the philosophy of making software. If you are looking for concrete examples of how to re-factor your code, you will not find it here, but don't let that discourage you.

Kanat-Alexander does spend a fair amount of talking about how this book turns the making of software into a science. I don't really completely buy into the notion that this small book can actually do that, as I find his mathematics to be insufficient for such a claim. And in most cases, I feel like his categorizations of items into "Facts, Laws, and Definitions" to be, well, not rigorous enough from a scientific perspective. But in reading through this book, I wouldn't bother to get hung up on whether a particular statement is really a universal law or not.

Rather, I would read Code Simplicity with the idea that this is a philosophy you can use to understand how to make and maintain great software. If you are an experienced dev, there's a lot of very succinct principles that you can use to explain to novices or management about why you need to build software a certain way. If you are the novice, this will give you significant advantage because someone with years of experience has laid out some excellent starter principles for you. If you are a Product Manager, you can use this book to understand the software life cycle, and to help you plan in time for all the care and feeding that need to go into your software.
Read more ›
Was this review helpful to you?
Most Recent Customer Reviews
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 1 month 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 2 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 5 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 6 months ago by Marc Zucker
4.0 out of 5 stars Excellent single afternoon read
The author manages to drive home some of the most painful issues around coding. It 's a thoroughly enjoyable read, if perhaps a little generic. Read more
Published 13 months ago by Yiannis Karadimas
5.0 out of 5 stars Real Nice, I Enjoyed it.
this book gives you the foundation of coding, I learned interesting ideas about coding, I highly recommend this book , read it if you like this stuff.
Published 16 months ago by Mr. V
5.0 out of 5 stars Full of good advice
This book is full of lots of pithy, simple, true advice. This is the kind of stuff that after you read it, you feel that you should have known it already, but you just haven't had... Read more
Published 17 months ago by Amazon Customer
3.0 out of 5 stars Great for beginners to intermediates. Lacks code samples though.
Writing code seems like an easy task, and perhaps it is. However, it can be difficult to write simple, clean code. Read more
Published 22 months ago by Kenrick Chien
4.0 out of 5 stars Good Quick Informative Read
It's a fast read and quickly gets down to the root of good programming. As a senior developer I've witnessed complex system grow exponentially more complex for no other reason than... Read more
Published 23 months ago by Chris Piekarski
2.0 out of 5 stars Missing code...
Code Simplicity is a very thin (less than 80 pages) book about software development. The author, an architect on the Bugzilla project, tries to describe fundamental laws of... Read more
Published on July 30, 2012 by Bas Vodde
Search Customer Reviews
Search these reviews only

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