By Paul Graham
The book is a collection of essays separated into chapters. The chapters can be read in isolation and in any order. My favorites are the chapter on the similarities between hackers and painters, the chapter on good design, and the chapter on thinking heretical thoughts. I’ll summarize the chapters below.
Hackers (as opposed to computer scientists) are more like architects than engineers. Architects broadly decide what to do and engineers figure out how to do it. However you must have some rough idea of the “how” if you want to create a realistic “what”. Engineers like to be given a spec to meet, architects like developing a good spec and one of the best ways to develop a good spec is to implement it. Architects are makers, while engineers are problem solvers. Engineers solve a problem by figuring out the program on paper before going anywhere near a computer. Hackers take a painters approach of sketching out a rough solution and figuring out solutions as you are programming.
At big companies they want engineers, not hackers, writing software. Programmers at big companies merely take a managers vision and implement it in software. This is done so that the variability in outcome is reduced. This approach will produce fewer strikeouts, but on the flip side it will produce fewer home runs.
Hackers should take more lessons from maker disciplines, like painting. A few notable lessons from painters are: painters learn best by creating original work, paintings are created through gradual refinement not planning the entire thing out, work comes in cycles which means you can’t be creative and inspired all the time.
Good design isn’t purely subjective and thus it possible to become a better designer. Paul says that many different fields have plenty of common ideas about beauty and they are:
Good design is simple.
Good design is timeless - the best way to make something appeal to people in 2100 is to make something that would also appeal to people in 1900.
Good design solves the right problem - In software an intractable problem can sometimes be replaced by a similar problem that is easy to solve, so ensure you are working on the correct problem.
Good design is suggestive - a good building allows people to use it as they wish as opposed to using it only as a the architect intends.
Good design is often slightly funny - To have a sense of humor is to be strong as it is a strength to not take oneself too seriously.
Good design is hard - It’s a hard life creating good design however most animals are beautiful because they have hard lives.
Good design looks easy - This is always an illusion as the easy conversational tone of writing doesn’t click until the eight rewrite.
Good design is redesign.
Good design can copy.
Good design is often strange - SR-71 and Lisp.
Good design happens in chunks.
Good design is daring.
Do you have any opinions that you would be reluctant to express in front of your peers? If no, either everything you believe is something you’re supposed to believe or you just aren’t thinking for yourself.
The nature of fashion is to be invisible. Fashion doesn’t seem like fashion when you are in the middle of it. The majority of people wear fashionable clothes so they will fit in, the same is true for fashionable ideas. One of the best ways to think for yourself is put as much distance between yourself and the mob so you can better see what its doing. Always pay special attention to labels and ideas that are being suppressed. If an idea is false, that is the worst thing you can say about it and it doesn’t need to be labeled as x-ic or y-ist. False ideas don’t need to be suppressed as the falseness will take care of it. And if an idea isn’t false, it shouldn’t be suppressed.