More on this book
Community
Kindle Notes & Highlights
by
Paul Graham
Read between
March 28 - March 31, 2020
Alberti, arguably the archetype of the Renaissance Man, writes that “no art, however minor, demands less than total dedication if you want to excel in it.”1 I wonder if anyone in the world works harder at anything than American school kids work at popularity. Navy SEALS and neurosurgery residents seem slackers by comparison. They occasionally take vacations; some even have hobbies. An American teenager may work at being popular every waking hour, 365 days a year. I don’t mean to suggest they do this consciously. Some of them truly are little Machiavellis, but what I really mean here is that
...more
In general, people outside some very demanding field don’t realize the extent to which success depends on constant (though often unconscious) effort. For example, most people seem to consider the ability to draw as some kind of innate quality, like being tall. In fact, most people who “can draw” like drawing, and have spent many hours doing it; that’s why they’re good at it. Likewise, popular isn’t just something you are or you aren’t, but something you make yourself. Figure 1-1. Gateway High School chess club, 1981. That’s me, upper left. The main reason nerds are unpopular is that they have
...more
Few smart kids can spare the attention that popularity requires. Unless they also happen to be good-looking, natural athletes, or siblings of popular kids, they’ll tend to become nerds. And that’s why smart people’s lives are worst between, say, the ages of eleven and seventeen. Life at that age revolves far more around popularity than before or after.
I think the important thing about the real world is not that it’s populated by adults, but that it’s very large, and the things you do have real effects. That’s what school, prison, and ladies-who-lunch all lack. The inhabitants of all those worlds are trapped in little bubbles where nothing they do can have more than a local effect. Naturally these societies degenerate into savagery. They have no function for their form to follow.
A lot of people seem to think it’s good for smart kids to be thrown together with “normal” kids at this stage of their lives. Perhaps. But in at least some cases the reason the nerds don’t fit in really is that everyone else is crazy. I remember sitting in the audience at a “pep rally” at my high school, watching as the cheerleaders threw an effigy of an opposing player into the audience to be torn to pieces. I felt like an explorer witnessing some bizarre tribal ritual. If I could go back and give my thirteen year old self some advice, the main thing I’d tell him would be to stick his head up
...more
The cause of this problem is the same as the cause of so many present ills: specialization. As jobs become more specialized, we have to train longer for them. Kids in pre-industrial times started working at about 14 at the latest; kids on farms, where most people lived, began far earlier. Now kids who go to college don’t start working full-time till 21 or 22. With some degrees, like MDs and PhDs, you may not finish your training till 30.
In my high school French class we were supposed to read Hugo’s Les Miserables. I don’t think any of us knew French well enough to make our way through this enormous book. Like the rest of the class, I just skimmed the Cliff ’s Notes. When we were given a test on the book, I noticed that the questions sounded odd. They were full of long words that our teacher wouldn’t have used. Where had these questions come from? From the Cliff ’s Notes, it turned out. The teacher was using them too. We were all just pretending.
I mistrusted words like “character” and “integrity” because they had been so debased by adults. As they were used then, these words all seemed to mean the same thing: obedience. The kids who got praised for these qualities tended to be at best dull-witted prize bulls, and at worst facile schmoozers. If that was what character and integrity were, I wanted no part of them.
Computer science is a grab bag of tenuously related areas thrown together by an accident of history, like Yugoslavia. At one end you have people who are really mathematicians, but call what they’re doing computer science so they can get DARPA grants. In the middle you have people working on something like the natural history of computers — studying the behavior of algorithms for routing data through networks, for example. And then at the other extreme you have the hackers, who are trying to write interesting software, and for whom computers are just a medium of expression, as concrete is for
...more
If you want to make money at some point, remember this, because this is one of the reasons startups win. Big companies want to decrease the standard deviation of design outcomes because they want to avoid disasters. But when you damp oscillations, you lose the high points as well as the low. This is not a problem for big companies, because they don’t win by making great products. Big companies win by sucking less than other big companies.
It’s unrealistic to expect that the specifications for a program will be perfect. You’re better off if you admit this up front, and write programs in a way that allows specifications to change on the fly. (The structure of large companies makes this hard for them to do, so here is another place where startups have an advantage.) Everyone by now presumably knows about the danger of premature optimization. I think we should be just as worried about premature design — deciding too early what a program should do.
Relentlessness wins because, in the aggregate, unseen details become visible.
Programs should be written for people to read, and only incidentally for machines to execute.
But any idea that’s considered harmless in a significant percentage of times and places, and yet is taboo in ours, is a good candidate for something we’re mistaken about. For example, at the high-water mark of political correctness in the early 1990s, Harvard distributed to its faculty and staff a brochure saying, among other things, that it was inappropriate to compliment a colleague’s or student’s clothes. No more “nice shirt.” I think this principle is rare among the world’s cultures, past or present.
Although fashions in ideas tend to arise from different sources than fashions in clothing, the mechanism of their adoption seems much the same. The early adopters will be driven by ambition: self-consciously cool people who want to distinguish themselves from the common herd. As the fashion becomes established they’ll be joined by a second, much larger group, driven by fear.9 This second group adopt the fashion not because they want to stand out but because they are afraid of standing out.
Argue with idiots, and you become an idiot. The most important thing is to be able to think what you want, not to say what you want. And if you feel you have to say everything you think, it may inhibit you from thinking improper thoughts. I think it’s better to follow the opposite policy. Draw a sharp line between your thoughts and your speech. Inside your head, anything is allowed.
Zealots will try to draw you out, but you don’t have to answer them. If they try to force you to treat a question on their terms by asking “are you with us or against us?” you can always just answer “neither.” Better still, answer “I haven’t decided.” That’s what Larry Summers did when a group tried to put him in this position.16 Explaining himself later, he said “I don’t do litmus tests.” A lot of the questions people get hot about are actually quite complicated. There is no prize for getting the answer quickly.
Believe it or not, the two senses of “hack” are also connected. Ugly and imaginative solutions have something in common: they both break the rules. And there is a gradual continuum between rule breaking that’s merely ugly (using duct tape to attach something to your bike) and rule breaking that is brilliantly imaginative (discarding Euclidean space).
Those in authority tend to be annoyed by hackers’ general attitude of disobedience. But that disobedience is a byproduct of the qualities that make them good programmers. They may laugh at the CEO when he talks in generic corporate new speech, but they also laugh at someone who tells them a certain problem can’t be solved.
There is something very American about Feynman breaking into safes during the Manhattan Project. It’s hard to imagine the authorities having a sense of humor about such things over in Germany at that time. Maybe it’s not a coincidence. Hackers are unruly. That is the essence of hacking. And it is also the essence of American-ness. It is no accident that Silicon Valley is in America, and not France, or Germany, or England, or Japan. In those countries, people color inside the lines. I lived for a while in Florence. But after I’d been there a few months I realized that what I’d been
...more
When you read what the founding fathers had to say for themselves, they sound more like hackers. “The spirit of resistance to government,” Jefferson wrote, “is so valuable on certain occasions, that I wish it always to be kept alive.” Imagine an American president saying that today. Like the remarks of an outspoken old grandmother, the sayings of the the founding fathers have embarrassed generations of their less confident successors. They remind us where we come from. They remind us that it is the people who break rules that are the source of America’s wealth and power.
When you can write software with fewer programmers, it saves you more than money. As Fred Brooks pointed out in The Mythical Man-Month, adding people to a project tends to slow it down. The number of possible connections between developers grows exponentially with the size of the group.8 The larger the group, the more time they’ll spend in meetings negotiating how their software will work together, and the more bugs they’ll get from unforeseen interactions.
Over time the teams have gotten smaller, faster, and more informal. In 1960, software development meant a roomful of men with horn-rimmed glasses and narrow black neckties, industriously writing ten lines of code a day on IBM coding forms. In 1980, it was a team of eight to ten people wearing jeans to the office and typing into VT100s. Now it’s a couple of guys sitting in a living room with laptops. (And jeans turn out not to be the last word in informality.)
software has to be designed by hackers who understand design, not designers who know a little about software. If you can’t design software as well as implement it, don’t start a startup.
Suppose you own a beat-up old car. Instead of sitting on your butt next summer, you could spend the time restoring your car to pristine condition. In doing so you create wealth. The world is — and you specifically are — one pristine old car the richer. And not just in some metaphorical way. If you sell your car, you’ll get more for it. In restoring your old car you have made yourself richer. You haven’t made anyone else poorer. So there is obviously not a fixed pie. And in fact, when you look at it this way, you wonder why anyone would think there was.5
Someone graduating from college thinks, and is told, that he needs to get a job, as if the important thing were becoming a member of an institution. A more direct way to put it would be: you need to start doing something people want. You don’t need to join a company to do that. All a company is is a group of people working together to do something people want. It’s doing something people want that matters, not joining the group.6
A big company is like a giant galley driven by a thousand rowers. Two things keep the speed of the galley down. One is that individual rowers don’t see any result from working harder. The other is that, in a group of a thousand people, the average rower is likely to be pretty average.
But the real advantage of the ten-man boat shows when you take the ten best rowers out of the big galley and put them in a boat together. They will have all the extra motivation that comes from being in a small group. But more importantly, by selecting that small a group you can get the best rowers. Each one will be in the top 1%. It’s a much better deal for them to average their work together with a small group of their peers than to average it with everyone.
You don’t want small in the sense of a village, but small in the sense of an all-star team.
Venture capitalists have a list of danger signs to watch out for. Near the top is the company run by techno-weenies who are obsessed with solving interesting technical problems, instead of making users happy. In a startup, you’re not just trying to solve problems. You’re trying to solve problems that users care about.
Will people create wealth if they can’t get paid for it? Only if it’s fun. People will write operating systems for free. But they won’t install them, or take support calls, or train customers to use them. And at least 90% of the work that even the highest tech companies do is of this second, unedifying kind.
GOOD DESIGN IS SIMPLE. You hear this from math to painting. In math it means that a shorter proof tends to be a better one. Where axioms are concerned, especially, less is more. It means much the same thing in programming. For architects and designers, it means that beauty should depend on a few carefully chosen structural elements rather than a profusion of superficial ornament.
Aiming at timelessness is also a way to evade the grip of fashion. Fashions almost by definition change with time, so if you can make something that will still look good far into the future, then its appeal must derive more from merit than fashion.
GOOD DESIGN LOOKS EASY. Like great athletes, great designers make it look easy. Mostly this is an illusion. The easy, conversational tone of good writing comes only on the eighth rewrite. In science and engineering, some of the greatest discoveries seem so simple that you say to yourself, I could have thought of that. The discoverer is entitled to reply, why didn’t you?
The only style worth having is the one you can’t help. And this is especially true for strangeness. There is no shortcut to it. The Northwest Passage that the Mannerists, the Romantics, and two generations of American high school students have searched for does not seem to exist. The only way to get there is to go through good and come out the other side.
The more you have to say to get something done, the harder it is to see bugs.
The biggest debate in language design is probably the one between Those who think that a language should prevent programmers from doing stupid things, and those who think programmers should be allowed to do whatever they want. Java is in the former camp, and Perl in the latter. (Not surprisingly, the DoD is big on Java.)
The key to Europe’s vigor may have been the fact that it was divided up into a number of small, competing states. These were close enough that ideas could travel from one to the other, but independent enough that no one ruler could put a lid on innovation — as the Chinese court disastrously did when they forbade the development of large ocean-going ships. So it is probably all to the good that programmers live in a post-Babel world. If we were all using the same language, it would probably be the wrong one.
It’s hard to predict what life will be like in a hundred years. There are only a few things we can say with certainty. We know that everyone will drive flying cars, that zoning laws will be relaxed to allow buildings hundreds of stories tall, that it will be dark most of the time, and that women will all be trained in the martial arts. Here I want to zoom in on one detail of this picture. What kind of programming language will they use to write the software controlling those flying cars?
My guess is that a hundred years from now people will still tell computers what to do using programs we would recognize as such. There may be tasks that we solve now by writing programs and that in a hundred years you won’t have to write programs to solve, but I think there will still be a good deal of programming of the type we do today.
If you ever do find yourself working for a startup, here’s a handy tip for evaluating competitors. Read their job listings. Everything else on their site may be stock photos or the prose equivalent, but the job listings have to be specific about what they want, or they’ll get the wrong candidates.
In server-based applications you can get away with using the most advanced technologies, and I think this is the main cause of what Jonathan Erickson calls the “programming language renaissance.” This is why we even hear about new languages like Perl and Python. We’re not hearing about these languages because people are using them to write Windows apps, but because people are using them on servers.
Within large organizations, the phrase used to describe this approach is “industry best practice.” Its purpose is to shield the pointy-haired boss from responsibility: if he chooses something that is “industry best practice,” and the company loses, he can’t be blamed. He didn’t choose, the industry did.
So whether or not a language has to be good to be popular, I think a language has to be popular to be good. And it has to stay popular to stay good. The state of the art in programming languages doesn’t stand still.
Succinctness is one place where statically typed languages lose. All other things being equal, no one wants to begin a program with a bunch of declarations. Anything that can be implicit, should be. The amount of boilerplate in a Java hello-world program is almost enough evidence, by itself, to convict.1
The surprising thing about throwaway programs is that, like the “temporary” buildings built at so many American universities during World War II, they often don’t get thrown away. Many evolve into real programs, with real features and real users. I have a hunch that the best big programs begin life this way, rather than being designed big from the start, like the Hoover Dam.
Sound is a good cue to problems. At Viaweb we had a big board of dials showing what was happening to our web servers. The hands were moved by little servomotors that made a slight noise when they turned. I couldn’t see the board from my desk, but I found that I could tell immediately, by the sound, when there was a problem with a server.
Interesting, the over-emphasis on the visual as a cue is a major weakness of so many interfaces and leads to overload
A friend of mine rarely does anything the first time someone asks him. He knows that people sometimes ask for things they turn out not to want. To avoid wasting his time, he waits till the third or fourth time he’s asked to do something. By then whoever’s asking him may be fairly annoyed, but at least they probably really do want whatever they’re asking for.
So anyone who invents something new has to expect to keep repeating their message for years before people will start to get it. It took us years to get it through to people that Viaweb’s software didn’t have to be downloaded. The good news is, simple repetition solves the problem. All you have to do is keep telling your story, and eventually people will start to hear.