Tap into the wisdom of experts to learn what every programmer should know, no matter what language you use. With the 97 short and extremely useful tips for programmers in this book, you'll expand your skills by adopting new approaches to old problems, learning appropriate best practices, and honing your craft through sound advice.
With contributions from some of the most experienced and respected practitioners in the industry--including Michael Feathers, Pete Goodliffe, Diomidis Spinellis, Cay Horstmann, Verity Stob, and many more--this book contains practical knowledge and principles that you can apply to all kinds of projects.
A few of the 97 things you should know:
"Code in the Language of the Domain" by Dan North
"Write Tests for People" by Gerard Meszaros
"Convenience Is Not an -ility" by Gregor Hohpe
"Know Your IDE" by Heinz Kabutz
"A Message to the Future" by Linda Rising
"The Boy Scout Rule" by Robert C. Martin (Uncle Bob)
"Beware the Share" by Udi Dahan
Chapter 1 Act with Prudence
Chapter 2 Apply Functional Programming Principles
Chapter 3 Ask, "What Would the User Do?" (You Are Not the User)
Chapter 4 Automate Your Coding Standard
Chapter 5 Beauty Is in Simplicity
Chapter 6 Before You Refactor
Chapter 7 Beware the Share
Chapter 8 The Boy Scout Rule
Chapter 9 Check Your Code First Before Looking to Blame Others
Chapter 10 Choose Your Tools with Care
Chapter 11 Code in the Language of the Domain
Chapter 12 Code Is Design
Chapter 13 Code Layout Matters
Chapter 14 Code Reviews
Chapter 15 Coding with Reason
Chapter 16 A Comment on Comments
Chapter 17 Comment Only What the Code Cannot Say
Chapter 18 Continuous Learning
Chapter 19 Convenience Is Not an -ility
Chapter 20 Deploy Early and Often
Chapter 21 Distinguish Business Exceptions from Technical
Chapter 22 Do Lots of Deliberate Practice
Chapter 23 Domain-Specific Languages
Chapter 24 Don't Be Afraid to Break Things
Chapter 25 Don't Be Cute with Your Test Data
Chapter 26 Don't Ignore That Error!
Chapter 27 Don't Just Learn the Language, Understand Its Culture
Chapter 28 Don't Nail Your Program into the Upright Position
Chapter 29 Don't Rely on "Magic Happens Here"
Chapter 30 Don't Repeat Yourself
Chapter 31 Don't Touch That Code!
Chapter 32 Encapsulate Behavior, Not Just State
Chapter 33 Floating-Point Numbers Aren't Real
Chapter 34 Fulfill Your Ambitions with Open Source
Chapter 35 The Golden Rule of API Design
Chapter 36 The Guru Myth
Chapter 37 Hard Work Does Not Pay Off
Chapter 38 How to Use a Bug Tracker
Chapter 39 Improve Code by Removing It
Chapter 40 Install Me
Chapter 41 Interprocess Communication Affects Application Response Time
Chapter 42 Keep the Build Clean
Chapter 43 Know How to Use Command-Line Tools
Chapter 44 Know Well More Than Two Programming Languages
Chapter 45 Know Your IDE
Chapter 46 Know Your Limits
Chapter 47 Know Your Next Commit
Chapter 48 Large, Interconnected Data Belongs to a Database
Chapter 49 Learn Foreign Languages
Chapter 50 Learn to Estimate
Chapter 51 Learn to Say, "Hello, World"
Chapter 52 Let Your Project Speak for Itself
Chapter 53 The Linker Is Not a Magical Program
Chapter 54 The Longevity of Interim Solutions
Chapter 55 Make Interfaces Easy to Use Correctly and Hard to Use Incorrectly
Chapter 56 Make the Invisible More Visible
Chapter 57 Message Passing Leads to Better Scalability in Parallel Systems
Chapter 58 A Message to the Future
Chapter 59 Missing Opportunities for Polymorphism
Chapter 60 News of the Weird: Testers Are Your Friends
Chapter 61 One Binary
Chapter 62 Only the Code Tells the Truth
Chapter 63 Own (and Refactor) the Build
Chapter 64 Pair Program and Feel the Flow
Chapter 65 Prefer Domain-Specific Types to Primitive Types
Chapter 66 Prevent Errors
Chapter 67 The Professional Programmer
Chapter 68 Put Everything Under Version Control
Chapter 69 Put the Mouse Down and Step Away from the Keyboard
Chapter 70 Read Code
Chapter 71 Read the Humanities
Chapter 72 Reinvent the Wheel Often
Chapter 73 Resist the Temptation of the Singleton Pattern
Chapter 74 The Road to Performance Is Littered with Dirty Code Bombs
Chapter 75 Simplicity Comes from Reduction
Chapter 76 The Single Responsibility Principle
Chapter 77 Start from Yes
Chapter 78 Step Back and Automate, Automate, Automate
Chapter 79 Take Advantage of Code Analysis Tools
Chapter 80 Test for Required Behavior, Not Incidental Behavior
Chapter 81 Test Precisely and Concretely
Chapter 82 Test While You Sleep (and over Weekends)
Chapter 83 Testing Is the Engineering Rigor of Software Development
Chapter 84 Thinking in States
Chapter 85 Two Heads Are Often Better Than One
Chapter 86 Two Wrongs Can Make a Right (and Are Difficult to Fix)
Chapter 87 Ubuntu Coding for Your Friends
Chapter 88 The Unix Tools Are Your Friends
Chapter 89 Use the Right Algorithm and Data Structure
Chapter 90 Verbose Logging Will Disturb Your Sleep
Chapter 91 WET Dilutes Performance Bottlenecks
Chapter 92 When Programmers and Testers Collaborate
Chapter 93 Write Code As If You Had to Support It for the Rest of Your Life
Chapter 94 Write Small Functions Using Examples
Chapter 95 Write Tests for People
Chapter 96 You Gotta Care About the Code
Chapter 97 Your Customers Do Not Mean What They Say
Comments about O'Reilly Media 97 Things Every Programmer Should Know:
[I read the ePub on my nook. I got the book through the O'Reilly Blogger Review Program.]
There is a ton of good information in this book, from general "learn how to talk to the people you work with", to hints at common programming issues, to deeper more complex topics like "yes you can store larger numbers in this data type, but it won't be as accurate".
Some of the topics were things I've never even though of, likely because I've never actually programmed professionally, I just went to school to do so. Sometimes you'll read a chapter with someone pointing out why something doesn't work, then next chapter will be someone saying why it does.
I liked how similar topics were near each other instead of having chapters mostly about Testing being scattered through-out the book. I also liked that the Chapters were short.
I probably would have put the author bios under their names in the first chapter in which they appear, instead of leaving readers wondering "who the hell is this person and why do I care what they have to say?" unless you flip to the back of the book to read their bio.
Some things I took away from this book: * You can learn more about languages you already know by learning new ones–they might have you doing something differently that you can apply to other language in ways you wouldn't've previously come up with yourself. Basically, you can become a stronger programmer overall. * There is no One Right Way to do something. Obviously I knew this, but as I said above, one author will give you reasons to do something a certain way, and the next will give you reasons not to do it that way.
3/21/2011
(2 of 2 customers found this review helpful)
3.0
Review of 97 Things Every Programmer Sho
By Brian R. Bondy
from Windsor, Ontario
About Me Developer
Pros
Concise
Easy to understand
Cons
Not comprehensive enough
Best Uses
Intermediate
Novice
Student
Comments about O'Reilly Media 97 Things Every Programmer Should Know:
The book 97 Things Every Programmer Should Know was edited by Kevlin Henney and has no single author.
Instead of a typical book with one, two or three others, this book has almost 1 author per topic covered.
The book does re-use some authors across topics, so naturally there are not quite 97 contributors.
Each of the 97 chapters in the book covers one topic, each topic being 2 pages long. The depth of each topic would be equivalent to what you would find on a blog post, or a well written StackOverflow or programmers.stackexchange.com answer.
As expected with dozens of contributors for the book, I had various opinions which can be grouped into:
- I completely agreed with some points - I completely disagreed with some points - Other topics I found were acceptable points but really didn't matter as much as the author thought
It was nice to have so many varying contributors and perspectives, all from successful and knowledgeable authors; However, personally I prefer reading from a single author or very small group of authors.
I found it a little annoying that the description of who was giving the advise on each topic wasn't inline with the topic for each chapter. Instead readers need to flip to the back of the book to read up on each author.
Personally, I like to know about the author when I'm reading any article; it adds more depth and credibility to what is being said. At the very least, it would have been nice to have a page number reference to where the contributor description is exactly.
Strangely enough, I think the best way to read this book may be to start with the contributor list at the end of the book, and read each person's description, and then what they have to say.
The page references to each author's articles are inline with each contributor in the back of the book.
2/22/2011
(5 of 6 customers found this review helpful)
3.0
Review: 97 Things
By Matt Hulse
from Ammon, ID
Comments about O'Reilly Media 97 Things Every Programmer Should Know:
I've decided that the biggest problem with this book is the title. Imagine you had the opportunity, without leaving your desk, to chat with 97 would be co-workers about what they thought was important in the field of Software. Surely that would be an interesting experiment. You wouldn't expect every conversation to yield a golden egg, but out of 97 conversations, you're bound to pick up something useful. I don't agree that this book contains 97 things that every programmer should know. This book contains 97 answers to the question "what should every programmer know?". Once I viewed this book in that light, I was able to dismiss opinions that I didn't care for and embrace others that struck a chord with me. In the end, this was a useful experiment in my eyes and worth the time and effort to read the book.
(I received a copy of this e-book as part of the Blogger Review program in exchange for writing this review.)
Comments about O'Reilly Media 97 Things Every Programmer Should Know:
Each topic is only two pages long and easy to read. If you are a programmer, then you are very likely to find at least a handful of pages that are useful to you. This book also has a Table of Contents page by Category for ease of reading. The short two-page concept also made it good for read during short breaks or while in travelling time.
Among the categories highlighted, the expert programmers also advises on Testing and automation, Programming Languages and Paradigms, Teamwork and Collaboration.
Besides the valuable 97 topics from experienced practitioners in the industry, the topics are not any programming language specific and thus can be applied for any programmers. If you are a programmer by profession, and would like to be better programmer, this book is definitely for you.
1/28/2011
(1 of 1 customers found this review helpful)
3.0
97 Things Every Programmer Should Know
By Hector Lee
from Singapore
About Me Designer, Developer
Pros
Helpful examples
Variety Of Tips
Cons
Bad EBook Formatting
Best Uses
Intermediate
Comments about O'Reilly Media 97 Things Every Programmer Should Know:
97 Things Every Programmer Should Know is a collection of general tips for all programmers. Edited by Kevlin Henney, it includes 97 tips to help improve yourself as a programmer. The tips try not to be specific to a particular language so that all programers can gain something out of it. Surely not all tips might apply to all types of programmers but you will definitely pick up stuff if you read it with an open mind. The tips are written by a group of programmers, much like crowd sourcing, so you get a variety of tips. Thus, the writing style does differ from tip to tip and you might not understand some. Don't be concerned if you don't understand a tip cause it might not be related to what you do. The formatting of the ebooks are surprisingly not up to par with the other books by O'Reilly can be rather distracting at times, especially on smaller screens like the iPhone. Hopefully O'Reilly will pick up on this and fix this odd one out.
1/11/2011
(1 of 1 customers found this review helpful)
4.0
Professional guidance at your hands
By ederandres_an
from Paipa, Colombia
About Me Developer, University Student
Pros
Concise
Easy to understand
Well-written
Cons
Best Uses
Novice
Student
Comments about O'Reilly Media 97 Things Every Programmer Should Know:
I describe this book as one of the kind "Developer, did you know ...?" because it highlights the best practices that every programmer must keep in mind for a software engineering project. These 97 development practices are organized in 19 categories such as coding style, design principles, project planning, usage of tools, collaborating with pairs, and design for the end user.Within these 97 best practices are those that should always be applied and those that must be balanced or avoided completely. For example, organizing the source code in an easy, expressive and compact manner (pp. 26–27); and creating designs conceptually correct that reduce the collateral effects of applying the singleton OO design pattern (pp. 146–147).Each practice is described in one short, concrete article in no more than two pages. Many developers learn the best practices after reading several books, magazines and blogs, but this book organize those practices in one single place. However, it is necessary clarify that this is not a programming book, and for really applying a practice the respective technology documentation must be read.If you are a junior developer or recent graduated student, this book is a good road to achieve the knowledge acquired by senior developers.Maybe, a discussion about UML would have been interesting to include.Note: This review was in exchange of the O'Reilly Blogger Review Program [@]
12/27/2010
(1 of 1 customers found this review helpful)
4.0
good but covers topics already known
By Michal Owsiak
from Poland
About Me Developer
Pros
Accurate
Concise
Easy to understand
Helpful examples
Cons
Not comprehensive enough
Too basic
Best Uses
Novice
Student
Comments about O'Reilly Media 97 Things Every Programmer Should Know:
What I have liked from the very beginning of the book, was the way the content description was organized. There are two tables of content - first one, regular one, second one divides book into different categories, thus you can read just essays related to particular topic. Another great advantage of the book is the way essays were prepared - two pages per each of them. No wasted space, no elaborates, just the core of the problem that is discussed. The same thing refers to the index - I like books where you can find things within index easily and accurately.
Technical part of the book is the one side of he coin, second one is the content. 97 Things... is a book that covers topics you can find in many other books (Pragmatic Programmer, Agile Developer, Developers Notebook, Productive Programmer). What distinguish this book is the way topics are presented. Authors do not go deeply into details, they just sketch the issue, provide readers with the starting point and don't give them 'silver bullet'. Many times you will fell like - 'hey, I knew that already' - but that's OK, because you started to think about the again. I liked the book, I liked the topics, however different style of each essay might be confusing a little bit. If you like consistent style over the whole book, this will be a drawback. Another thing is - if you have read books like Pragmatic Programmer or Practices of an Agile Developer, rethink buying this book. You might feel disappointed. If you haven't read them - it might be a good starting point for getting a better programmer.
6/22/2010
(3 of 3 customers found this review helpful)
4.0
Interesting wisdom from experts
By ueberhund
from Salt Lake City, UT
About Me Developer
Pros
Concise
Easy to understand
Cons
Not comprehensive enough
Best Uses
Comments about O'Reilly Media 97 Things Every Programmer Should Know:
I thought this was an interesting book, which provides insight from a group of experts on a variety of software development issues. Every two pages, a software architect discusses essentially what they feel is required to be a successful architect. These topics cover everything from understanding hardware, keeping your coding skills up, to being able to speak intelligently with management.
My only complaint is that I would have preferred 97 different experts. Rather, many of the contributors are included multiple times throughout the book. While it would have been nice to get the perspective from many more different sources, this is still a valuable and interesting book.
5/21/2010
(13 of 20 customers found this review helpful)
3.0
The title is misleading
By scondran
from Antigonish, NS
About Me Developer, Educator, Sys Admin
Pros
Bad articles were short
Cons
Difficult to understand
Good articles were short
Best Uses
Expert
Comments about O'Reilly Media 97 Things Every Programmer Should Know:
As I am required by the little blurb under this text box I must state that I received a copy of this book to review here and for the users of my institution.
With that out of the way, allow me to explain my review headline. The title of this book clearly states that these are things that every programmer should know. I obviously believe this to be false. The title should read "97 Things Every Programmer Should Know Working in Business". There are many kinds of programmers out there that work for a living. I've done two kinds of programming in my day, the big business kind that is prevalent throughout this book where one is out to release quickly and with good enough features for paying customers and the academic kind where the goal is for the pursuit of knowledge and accuracy.
This book contains 97 short articles written by various authors in what they refer to as The Industry. Many of them were really well written and very informative, and offer good advice. Many more tended to be so jargon littered that it was hard to read, let alone understand what they were trying to get across.
I want to say that the articles that were clear and well written are what made me rate this above two stars. The book in general was not what I was expecting and I'm rather disappointed in it.
If you are not a programmer in Big Business I wouldn't recommend this at all.
4/24/2010
(5 of 5 customers found this review helpful)
4.0
Entertaining, Wise Programming Anecdotes
By jdruin
from ky
About Me Developer
Pros
Easy to understand
Helpful examples
Cons
Slightly Expensive
Best Uses
Intermediate
Novice
Student
Comments about O'Reilly Media 97 Things Every Programmer Should Know:
97 Things Every Programmer Should Know is a mix of Best Practices learned the hard way and What Not To Do that was learned, well, the hard way.
There are 97 short stories describing ways to be a better, more satisfied coder from the point of view of those who have experienced that issue.
The stories are a nice way to present best-practice since they are framed as an anecdote and explain both the positive of the best-practice and the consequences of not following them.
This book is recommended for professional programmers and those working on serious projects. Knowing best practices is a benefit and it is easier to relate to them by hearing how they affect others due to there use (or lack of use). Most organizations provide lists or a culture of using best practices but these are not as relate-able.