Code Simplicity: The Fundamentals of Software 1st Edition, Kindle Edition
Use the Amazon App to scan ISBNs and compare prices.
The Amazon Book Review
Author interviews, book reviews, editors' picks, and more. Read it now
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Customers who bought this item also bought
Would you like to tell us about a lower price?
Read reviews that mention
There was a problem filtering reviews right now. Please try again later.
If you're a seasoned programmer then there is probably little or nothing to gain from this book... although I've met some people who had been programming for several years who would benefit from the theory in this book.
The principle value I get from this text is a useful way to look at software design in general; almost at a philosophical level. It is not so much a book about writing code as it is about writing (or rewriting) manageable code, and why that's critical to success. It is not language or platform specific, nor does it contain various algorithms for sorting or searching, or sample code outlining various patterns or anything like that. It is also not very "how-to" you'll have to work out much of how this applies to your specific use case, but having done just that very recently with someone else's code I can say that it is quite doable and well worth it.
It helps to answer why certain best practices are the best practice, what you have to keep in mind when writing or maintaining code to make your work valuable, and theories on how to fix up existing and yet difficult to maintain code bases.
Some other reviews have pointed out the pretense of attempting to codify "laws" of programming, or that there is nothing terribly revelatory here to anyone who has read a few good blog posts about programming best-practices. I get those arguments but I'm going to offer an alternative viewpoint, as I found the book worthy enough to ready twice through and hand out to colleagues.
First, attempting to establish a seniority of facts, as long as it does not seek to elevate unimportant facts to prominence, is worthwhile. This is one of the key reasons textbooks need to get written, or educators have work to do. After a certain point one cannot seek to know the whole of a subject. With practice someone will learn much and be able to sort out for himself what is important and what is unimportant in that which he specializes in, but given that the field is advancing he cannot then hope to teach the next generation all of what he knows, plus leave room for them to learn all of the new stuff. So the most important facts must be codified and taught, then the new information can be related to them, and the things of lesser importance are given their proper place amongst the nearly-forgotten curiosities of the past.
Next, and along similar lines: yes, you can find much, if not all of this information in blog posts and articles on-line, which can be read for free. But first you'll have to find the correct information, sort it from misinformation and the unimportant, and assimilate it (which can be tricky depending on the quality of the writing). A textbook lends a sense of correctness and erudition, which may be of secondary importance to the actual correctness of the data, but at least you can be more certain that the information is creditable and the editors will have made sure its readable.
So, what this book provides is collected, well explained and important information, from a knowledgeable source. One can attempt to fish such from the vastness of the Internet, wasting more time and being less certain of its correctness, skip the searching and for the cost of a few coffees buy a book which can be read in a couple of hours, reread and handed around to each programmer you work with, and which will certainly result in better code.
The book also deals with similar issues regarding the higher level software architecture / design. I can't comment on that advice as much from my own experience, as my day to day tasks are generally lower level, but I can say the general principles outlined in the book could be very successfully applied to my type of work. I recommend this book to any programmer who is looking for some clearly written, practical advise for writing better code.
There is a section that is also nicely summarized in a back appendix about how to calculate the value of a change.