Hackers & Painters and Essays

date Aug 21, 2011
authors Paul Graham
reading time 40 mins
engineering
creativity
innovation
technology
  • Book: Hackers & Painters and Essays by Paul Graham
  • Author: Paul Graham
  • Source: Github
  • Comment: I always had essays of Paul Graham coming up in my RSS Feeder, and I knew one day I had to read every single one of them, every line of them. So, I went ahead with an open sourced Kindle version and poured over it through a period of 3 weeks. These are not just about startups, programming or technology, but also about treating kids, getting hungup on college admissions as well as personal identity.
  • Extracts:

as long as you’re over a certain threshold of intelligence, what matters most is determination.

That has been the lesson for me: be careful what you let become critical to you. Try to get yourself into situations where the most urgent problems are ones you want to think.

The mistake is to be optimistic about things you can’t control. By all means be optimistic about your ability to make something great. But you’re asking for trouble if you’re optimistic about big companies or investors… Good founders have a healthy respect for reality. But they are relentlessly resourceful.

One reason the young sometimes succeed where the old fail is that they don’t realize how incompetent they are.

When you hear people talking about a successful angel investor, they’re not saying “He got a 4x liquidation preference.” They’re saying “He invested in Google.”

It’s pretty clear now that the broken windows theory applies to community sites as well. The theory is that minor forms of bad behavior encourage worse ones: that a neighborhood with lots of graffiti and broken windows becomes one where robberies occur.

History suggests that, all other things being equal, a society prospers in proportion to its ability to prevent parents from influencing their children’s success directly.

Where you live should make at most a couple percent difference. But if you look at the historical evidence, it seems to matter more than that. Most people who did great things were clumped together in a few places where that sort of thing was done at the time.

I like to find (a) simple solutions (b) to overlooked problems (c) that actually need to be solved, and (d) deliver them as informally as possible, (e) starting with a very crude version 1, then (f) iterating rapidly.When

If users love you, you can always make money from that somehow, and if they don’t, the cleverest business model in the world won’t save you.

The paradoxical result is that the people likely to make the most money are those who aren’t in it just for the money.

There are only two things you have to know about business: build something users love, and make more than you spend.

Steve Wozniak put this very strongly: All the best things that I did at Apple came from (a) not having money and (b) not having done it before, ever.

The advantages of doing things in software on a single device are so great that everything that can get turned into software will. So for the next couple years, a good recipe for startups will be to look around you for things that people haven’t realized yet can be made unnecessary by a tablet app.

The more versatile the tool, the less you can predict how people will use it. So tablet makers should be thinking: what else can we put in there? Not merely hardware, but software too. What else can we give developers access to? Give hackers an inch and they’ll take you a mile.

It’s not so important to be able to solve predefined problems quickly as to be able to come up with surprising new ideas.

Where to See Silicon Valley: 1. Stanford University 2. University 3. The Lucky Office

Yahoo had two problems Google didn’t: easy money, and ambivalence about being a technology company.

Everyone who’s worked on difficult problems is probably familiar with the phenomenon of working hard to figure something out, failing, and then suddenly seeing the answer a bit later while doing something else.

The most dangerous way to lose time is not to spend it having fun, but to spend it doing fake work. When you spend time having fun, you know you’re being self-indulgent.

When he was writing that first Basic interpreter for the Altair, Bill Gates was writing something he would use, as were Larry and Sergey when they wrote the first versions of Google.

Organic ideas are generally preferable to the made up kind, but particularly so when the founders are young. It takes experience to predict what other people will want. The worst ideas we see at Y Combinator are from young founders making things they think other people will want… So if you want to start a startup and don’t know yet what you’re going to do, I’d encourage you to focus initially on organic ideas. What’s missing or broken in your daily life? … So if you want to come up with organic startup ideas, I’d encourage you to focus more on the idea part and less on the startup part. Just fix things that seem broken, regardless of whether it seems like the problem is important enough to build a company on.

people wished they’d paid more attention to when choosing cofounders was character and commitment, not ability.

I’m surprised by how much better it feels to be working on something that is challenging and creative, something I believe in, as opposed to the hired-gun stuff I was doing before.

There is rarely a single brilliant hack that ensures success: I learnt never to bet on any one feature or deal or anything to bring you success… There is no such thing as a killer feature. Or at least you won’t know what it is. So the best strategy is to try lots of different things.

One reason people overreact to competitors is that they overvalue ideas. If ideas really were the key, a competitor with the same idea would be a real threat. But it’s usually execution that matters: All the scares induced by seeing a new competitor pop up are forgotten weeks later.

And when you see something that’s merely reacting to new technology in an attempt to preserve some existing source of revenue, you’re probably looking at a loser…When you see something that’s taking advantage of new technology to give people something they want that they couldn’t have before, you’re probably looking at a winner.

So here in sum is how determination seems to work: it consists of willfulness balanced with discipline, aimed by ambition.

  1. How many startups fail. 2. How much startups’ ideas change. 3. How little money it can take to start a startup. 4. How scrappy founders are. 5. How tech-saturated Silicon Valley is. 7. How casual successful startup founders are… By inverting this list, we can get a portrait of the “normal” world. It’s populated by people who talk a lot with one another as they work slowly but harmoniously on conservative, expensive projects whose destinations are decided in advance, and who carefully adjust their manner to reflect their position in the hierarchy.

The way to succeed was to launch something fast, listen to users, and then iterate; that startups required resilience because they were always an emotional rollercoaster; and that most VCs were sheep.

It was too easy for them; they were too successful raising money. If they’d had to grow the company gradually, by iterating through several versions they sold to real users, they’d have learned pretty quickly that people looked stupid riding them. Instead they had enough to work in secret. They had focus groups aplenty, I’m sure, but they didn’t have the people yelling insults out of entails. Ramen profitable means a startup makes just enough to pay the founders’ living expenses.

If you’re already profitable, on however small a scale, it shows that (a) you can get at least someone to pay you, (b) you’re serious about building things people want, and (c) you’re disciplined enough to keep expenses low.

When these companies fail, it’s usually because (a) people wouldn’t pay for what they made, e.g. because it was too hard to sell to them, or the market wasn’t ready yet, (b) the founders solved the wrong problem, instead of paying attention to what users needed, or (c) the company spent too much and burned through their funding before they started to make money. If you’re ramen profitable, you’re already avoiding these mistakes.

If you don’t need to raise money, you don’t have to interrupt working on the company to do it.

Startups have to be product companies, in the sense of making a single thing that everyone uses. The defining quality of startups is that they grow fast, and consulting just can’t scale the way a product can.

The most likely scenario is (1) that no government will successfully establish a startup hub, and (2) that the spread of startup culture will thus be driven by the random factors that have driven it so far, but (3) that these factors will be increasingly outweighed by the pull of existing startup hubs. Result: this revolution, if it is one, will be unusually localized.

The central issue is picking the right startups. What “Make something people want” is for startups, “Pick the right startups” is for investors. Combined they yield “Pick the startups that will make something people want.”

One predictable cause of victory is that the Internet is an open platform. Anyone can build whatever they want on it, and the market picks the winners. So innovation happens at hacker speeds instead of big company speeds.

This growth rate is a bit higher than I’d like. I’d like the site to grow, since a site that isn’t growing at least slowly is probably dead.

Hence what I call the Fluff Principle: on a user-voted news site, the links that are easiest to judge will take over unless you take specific measures to prevent it.

Bad comments seem to be a harder problem than bad submissions. While the quality of links on the frontpage of HN hasn’t changed much, the quality of the median comment may have decreased somewhat.

Whatever the cause, stupid comments tend to be short. And since it’s hard to write a short comment that’s distinguished for the amount of information it conveys, people try to distinguish them instead by being

I’d rather use a site with primitive features and smart, nice users than a more advanced one whose users were idiots or trolls.

Another thing I learned from this experiment is that if you’re going to distinguish between people, you better be sure you do it right. This is one problem where rapid prototyping doesn’t work.

Instead of bubbling up from the bottom as they get more votes, as on Reddit, stories start at the top and get pushed down by new arrivals. The reason for the difference is that Digg is derived from Slashdot, while Reddit is derived from Delicious/popular. Digg is Slashdot with voting instead of editors, and Reddit is Delicious/popular with voting instead of bookmarking.

Xkcd implemented a particularly clever one in its IRC channel: don’t allow the same thing twice. Once someone has said “fail,” no one can ever say it again.

Comments at the bottom of a long thread are rarely seen, so it may be enough to incorporate a prediction of quality in the comment sorting algorithm.

it’s better to make a few people really happy than to make a lot of people semi-happy.

  1. Pick good cofounders.
  2. Launch fast.
  3. Let your idea evolve.
  4. Understand your users.
  5. Better to make a few users love you than a lot ambivalent.
  6. Offer surprisingly good customer service.
  7. You make what you measure.
  8. Spend little.
  9. Get ramen profitable.
  10. Avoid distractions.
  11. Don’t get demoralized.
  12. Don’t give up.
  13. Deals fall through.

Merely measuring something has an uncanny tendency to improve… Pretty soon you’ll start noticing what makes the number go up, and you’ll start to do more of that. Corollary: be careful what you measure.

And understanding your users will even ensure your morale, because when everything else is collapsing around you, having just ten users who love you will keep you going.

I finally realized today why politics and religion yield such uniquely useless discussions.

Politics, like religion, is a topic where there’s no threshold of expertise for expressing an opinion.

I think what religion and politics have in common is that they become part of people’s identity, and people can never have a fruitful argument about something that’s part of their identity. By definition they’re partisan.

But there is a step beyond thinking of yourself as x but tolerating y: not even to consider yourself an x. The more labels you have for yourself, the dumber they make you.

The course of people’s lives in the US now seems to be determined less by credentials and more by performance than it was 25 years ago.

Startups happened because technology started to change so fast that big companies could no longer keep a lid on the smaller ones.

The reason startups no longer depend so much on VCs is one that everyone in the startup business knows by now: it has gotten much cheaper to start a startup. There are four main reasons: Moore’s law has made hardware cheap; open source has made software free; the web has made marketing and distribution free; and more powerful programming languages mean development teams can be smaller.

Instead of being dominated by a few, giant tree-structured organizations, it’s now looking like the economy of the future will be a fluid network of smaller, independent units.

Now it turns out the rule “large and disciplined organizations win” needs to have a qualification appended: “at games that change slowly.” No one knew till change reached a sufficient speed.

An ambitious kid graduating from college now doesn’t want to work for a big company. They want to work for the hot startup that’s rapidly growing into one. If they’re really ambitious, they want to start it.

The millennia-long run of bigger-is-better left us with a lot of traditions that are now obsolete, but extremely deeply rooted.

Startups seem to go more against the grain, socially. It’s hard for them to flourish in societies that value hierarchy and stability, just as it was hard for industrialization to flourish in societies ruled by people who stole at will from the merchant class.

Once you start to think about the cost of checks, you can start to ask other interesting questions. Is the cost increasing or decreasing? Is it higher in some areas than others? Where does it increase discontinuously? If large organizations started to ask questions like that, they’d learn some frightening things.

In true startups, there are no external checks at all. If you have an idea for a new feature in the morning, you can write it and push it to the production servers before lunch. And when you can do that, you have more ideas. At big companies, software has to go through various approvals before it can be launched.

Steve Jobs’s famous maxim “artists ship” works both ways. Artists aren’t merely capable of shipping. They insist on it. So if you don’t let people ship, you won’t have any artists.

If we’ve learned one thing from funding so many startups, it’s that they succeed or fail based on the qualities of the founders.

And if you’re worried about threats to the survival of your company, don’t look for them in the news. Look in the mirror.

Technology progresses more or less independently of the stock market. So for any given idea, the payoff for acting fast in a bad economy will be higher than for waiting.

The immediate cause of death in a startup is always running out of money. So the cheaper your company is to operate, the harder it is to kill.

Another advantage of bad times is that there’s less competition. Technology trains leave the station at regular intervals. If everyone else is cowering in a corner, you may have a whole car to yourself.

I don’t think we’ll ever reach the point where most startups can do without outside funding. Technology tends to get dramatically cheaper, but living expenses don’t.The

Deals do not have a trajectory like most other human interactions, where shared plans solidify linearly over time. Deals often fall through at the last moment.

two questions VCs ask that you shouldn’t answer: “Who else are you talking to?” and “How much are you trying to raise?”

When we predict good outcomes for startups, the qualities that come up in the supporting arguments are toughness, adaptability, determination.

Consulting, as I mentioned, is a dangerous way to finance a startup. But it’s better than dying. It’s a bit like anaerobic respiration: not the optimum solution for the long term, but it can save you from an immediate threat.

The physical world is very high bandwidth, and some of the ways cities send you messages are quite subtle.

The conversations you overhear tell you what sort of people you’re among.

It’s in fields like the arts or writing or technology that the larger environment matters. In these the best practitioners aren’t conveniently collected in a few top university departments and research labs—partly because talent is harder to judge, and partly because people pay for these things, so one doesn’t need to rely on teaching or research funding to support oneself.

Once you have users to take care of, you’re forced to figure out what will make them happy, and that’s actually very valuable information.

One is that companies will inevitably slow down as they grow larger, no matter how hard they try to keep their startup mojo. It’s a consequence of the tree structure that every large organization is forced to adopt.

Graffiti happens at the intersection of ambition and incompetence: people want to make their mark on the world, but have no other way to do it than literally making a mark on the world.

And what we’ve found is that the variation between schools is so much smaller than the variation between individuals that it’s negligible by comparison. We can learn more about someone in the first minute of talking to them than by knowing where they went to school.

When startups die, the official cause of death is always either running out of money or a critical founder bailing. Often the two occur simultaneously.

Are there zero users who really love you, or is there at least some little group that does? It’s quite possible there will be zero. In that case, tweak your product and try again. Every one of you is working on a space that contains at least one winning permutation somewhere in it. If you just keep trying, you’ll find it.

One of the most interesting things we’ve discovered from working on Y Combinator is that founders are more motivated by the fear of looking bad than by the hope of getting millions of dollars.

scheduled distractions may be worse than unscheduled ones.

Sometimes when you return to a problem after a rest, you find your unconscious mind has left an answer waiting for you.

I know of one couple who couldn’t retire to the town they preferred because they couldn’t afford a place there big enough for all their stuff. Their house isn’t theirs; it’s their stuff’s… The really painful thing to recall is not just that I accumulated all this useless stuff, but that I often spent money I desperately needed on stuff that I didn’t.

Most people would rather a 100% chance of $1 million than a 20% chance of $10 million. Investors are rich enough to be rational and prefer the latter.

There are only two kinds of VCs you want to take money from, if you have the luxury of choosing: the “top tier” VCs, meaning about the top 20 or so firms, plus a few new ones that are not among the top 20 only because they haven’t been around long enough.

Investors like it when you don’t need them. A lot of founders approach investors as if they needed their permission to start a company—as if it were like getting into college. But you don’t need investors to start most companies; they just make it easier.

Taking rejection less personally may help you to get rejected less often.

the usual child’s mix of inferiority and self-centeredness: inferiority in that they assume that admissions committees must be all-seeing; self-centeredness in that they assume admissions committees care enough about them to dig down into their application and figure out whether they’re good or not.

The software business was overhung by a monopoly from about the mid-1950s to about 2005. For practically its whole existence, that is. One of the reasons “Web 2.0” has such an air of euphoria about it is the feeling, conscious or not, that this era of monopoly may finally be over.

The great majority of programmers still go straight from college to cubicle, and stay there.

Getting a normal job may actually make you less able to start a startup, by turning you into a tame animal who thinks he needs an office to work in and a product manager to tell him what software to write.

You don’t need to know anything about business to start a startup. The initial focus should be the product. All you need to know in this phase is how to build things people want.

The most valuable truths are the ones most people don’t believe. They’re like undervalued stocks. If you start with them, you’ll have the whole field to yourself.

So I think the way to deal with your parents’ opinions about what you should do is to treat them like feature requests. Even if your only goal is to please them, the way to do that is not simply to give them what they ask

“If I’m such a good athlete, why do I feel so tired?” Good runners still get tired; they just get tired at higher speeds.

No amount of discipline can replace genuine curiosity.

The less energy people expend on performance, the more they expend on appearances to compensate.

  1. Single Founder 2. Bad Location 3. Marginal Niche 4. Derivative Idea 6. Hiring Bad Programmers 7. Choosing the Wrong Platform 8. Slowness in Launching

The early adopters you need to impress are fairly tolerant. They don’t expect a newly launched product to do everything; it just has to do something.

We have three general suggestions about hiring: (a) don’t do it if you can avoid it, (b) pay people with equity rather than salary, not just to save money, but because you want the kind of people who are committed enough to prefer that, and (c) only hire people who are either going to write code or go out and get users, because those are the only things you need at first.

once you take a lot of money it gets harder to change direction.

Because making something people want is so much harder than making money from it, you should leave business models for later,

Look for the people who are not just smart, but incurable builders. Look for the people who keep starting projects, and finish at least some of them.

If they make your life so good that you don’t want to leave, why not work there? Because, in effect, you’re probably getting a local maximum. You need a certain activation energy to start a startup.

Professors will tend to judge you by the distance between the starting point and where you are now. If someone has achieved a lot, they should get a good grade. But customers will judge you from the other direction: the distance remaining between where you are now and the features they need.

The market doesn’t give a shit how hard you worked. Users just want your software to do what they need, and you get a zero otherwise. That is one of the most distinctive differences between school and the real world: there is no reward for putting in a good effort.

That’s the paradox I want to explore: great new things often come from the margins, and yet the people who discover them are looked down on by everyone, including themselves.

Lord Acton said we should judge talent at its best and character at its worst.

“Even a fool is thought wise if he keeps silent,” says the Old Testament (Proverbs 17:28).

Wozniak’s work was a classic example: he did everything himself, hardware and software, and the result was miraculous. He claims not one bug was ever found in the Apple II, in either hardware or software.

focus has drawbacks: you don’t learn from other fields, and when a new approach arrives, you may be the last to notice.

Outsiders are not merely free but compelled to make things that are cheap and lightweight.

Fortunately the number of things you can just hack together keeps increasing. People fifty years ago would be astonished that one could just hack together a movie, for example. Now you can even hack together distribution. Just make stuff and put it online.

Imaginative people don’t want to follow or lead. They’re most productive when everyone gets to do what they want.

But the less you identify work with employment, the easier it becomes to start a startup. When you see your career as a series of different types of work, instead of a lifetime’s service to a single employer, there’s less risk in starting your own company, because you’re only replacing one segment instead of discarding the whole thing.

Users love a site that’s constantly improving. In fact, users expect a site to improve. They’ll like you even better when you improve in response to their comments, because customers are used to companies ignoring them.

If your product seems finished, there are two possible explanations: (a) it is finished, or (b) you lack imagination. Experience suggests (b) is a thousand times more likely.

The imagination of nature is greater than the imagination of man. You’ll find more interesting things by looking at the world than you could ever produce just by thinking.

The way to succeed in a startup is to focus on the goal of getting lots of users, and keep walking swiftly toward it while investors and acquirers scurry alongside trying to wave money in your face.

quotes Socrates as saying “the unexamined life is not worth living.”

Conversely, if you have to choose between two theories, prefer the one that doesn’t center on you.

In other words, no one will sue you for patent infringement till you have money, and once you have money, people will sue you whether they have grounds to or not.

Prestige is like a powerful magnet that warps even your beliefs about what you enjoy. It causes you to work not on what you like, but what you’d like to like.

Test of whether people love what they do is whether they’d do it even if they weren’t paid for itâ??even if they had to work at another job to make a living.

Most people are doomed in childhood by accepting the axiom that work = pain.

Give me a million dollars and I’ll figure out what to do. But it’s harder than it looks. Constraints give your life shape. Remove them and most people have no idea what to do: look at what happens to those who win lotteries or inherit money.

Much as everyone thinks they want financial security, the happiest people are not those who have it, but those who like what they do.

Good procrastination is avoiding errands to do real work. Real work needs two things errands don’t: big chunks of time, and the right mood. ..When I think of the people I know who’ve done great things, I don’t imagine them dutifully crossing items off to-do lists. I imagine them sneaking off to work on some new idea.

I think the way to “solve” the problem of procrastination is to let delight pull you instead of making a to-do list push you. Never make users register, unless you need to in order to store something for them. Don’t ask them any unnecessary questions. Never send them email unless they explicitly ask for it. Never frame pages you link to, or open them in new windows. If you have a free version and a pay version, don’t make the free version too restricted.

To be a startup, a company has to be a product business, not a service business. By which I mean not that it has to make something physical, but that it has to have one thing it sells to many people, rather than doing custom work for individual clients. Custom work doesn’t scale.

People overvalue stability—especially young people, who ironically need it least. And so in starting a startup, as in any really bold undertaking, merely deciding to do it gets you halfway there. On the day of the race, most of the other runners won’t show up.

A job that lets you work on exciting new stuff will tend to pay less, because part of the compensation is in the form of the new skills you’ll learn.

Another classic way to make something people want is to take a luxury and make it into a commmodity.

The most productive way to generate startup ideas is also the most unlikely-sounding: by accident. If you look at how famous startups got started, a lot of them weren’t initially supposed to be startups.

Another group was worried when they realized they had to rewrite their software from scratch. I told them it would be a bad sign if they didn’t. The main function of your initial version is to be rewritten. That’s why we advise groups to ignore issues like scalability, internationalization, and heavy-duty security at first.

I think the most important of the new principles business has to learn is that people work a lot harder on stuff they like.

Companies spend millions to build office buildings for a single purpose: to be a place to work. And yet people working in their own homes, which aren’t even designed to be workplaces, end up being more productive.

Three big lessons open source and blogging have to teach business: (1) that people work harder on stuff they like, (2) that the standard office environment is very unproductive, and (3) that bottom-up often works better than top-down.

Their union has exacted pay increases and work restrictions that would have been the envy of previous generations of postal workers, and yet they don’t seem any happier for it. It’s demoralizing to be on the receiving end of a paternalistic relationship, no matter how cozy the terms. Just ask any teenager.

Writing doesn’t just communicate ideas; it generates them. If you’re bad at writing and don’t like to do it, you’ll miss out on most of the ideas writing would have generated.

Good hacker? There are two main things you can do: become very good at programming, and learn a lot about specific, cool problems.

The way to be good at programming is to work (a) a lot (b) on hard problems. And the way to make yourself work on hard problems is to work on some very engaging project.

Rejection is almost always less personal than the rejectee imagines. Just move on to the next.

What matters is not ideas, but the people who have them. Good people can fix bad ideas, but good ideas can’t save bad people.

Google understands a few other things most Web companies still don’t. The most important is that you should put users before advertisers, even though the advertisers are paying and users aren’t.

And the bigger you are, the harder that is. So I say “get big slow.” The slower you burn through your funding, the more time you have to learn.

The other reason to spend money slowly is to encourage a culture of cheapness.

Aim for cool and cheap, not expensive and impressive.

Don’t have a lot of meetings; don’t have chunks of code that multiple people own; don’t have a sales guy running the company; don’t make a high-end product; don’t let your code get too big; don’t leave finding bugs to QA people; don’t go too long between releases; don’t isolate developers from users

Corollary: Avoid starting a startup to sell things to the biggest company of all, the government. Yes, there are lots of opportunities to sell them technology.

If I were back in high school and someone asked about my plans, I’d say that my first priority was to learn what the options were.

It’s dangerous to design your life around getting into college, because the people you have to impress to get into college are not a very discerning audience.

Kid curiosity is broad and shallow; they ask why at random about everything.

The way to get a big idea to appear in your head is not to hunt for big ideas, but to put in a lot of time on work that interests you, and in the process keep your mind open enough that a big idea can take roost.

One of the most powerful is the desire to be better than other people at something. Hardy said that’s what got him started, and I think the only unusual thing about him is that he admitted it. Another powerful motivator is the desire to do, or know, things you’re not supposed to. Closely related is the desire to do something audacious.

Your life doesn’t have to be shaped by admissions officers. It could be shaped by your own curiosity.

Letting focus groups design your cars for you only wins in the short term. In the long term, it pays to bet on good design. The focus group may say they want the meretricious feature du jour,

Why will the Internet have great effects? The general argument is that new forms of communication always do. They happen rarely (till industrial times there were just speech, writing, and printing), but when they do, they always cause a big splash.

In 1970 a company president meant someone in his fifties, at least. If he had technologists working for him, they were treated like a racing stable: prized, but not powerful. But as technology has grown more important, the power of nerds has grown to reflect it.

Now it’s not enough for a CEO to have someone smart he can ask about technical matters. Increasingly, he has to be that person himself.

I have no illusions about why nerd culture is becoming more accepted. It’s not because people are realizing that substance is more important than marketing. It’s because the nerds are getting rich. But that is not going to change.

I’ll call the Python paradox: if a company chooses to write its software in a comparatively esoteric language, they’ll be able to hire better programmers, because they’ll attract only those who cared enough to learn it.

In a low-tech society you don’t see much variation in productivity.

Great hackers also generally insist on using open source software. Not just because it’s better, but because it gives them more control. Good hackers insist on control. This is part of what makes them good hackers: when something’s broken, they need to fix it.

In fact, wealth is not money. Money is just a convenient way of trading one form of wealth for another.

The people most likely to grasp that wealth can be created are the ones who are good at making things, the craftsmen.

If you look at history, it seems that most people who got rich by creating wealth did it by developing new technology.

Treat a startup as an optimization problem in which performance is measured by number of users.

Training yourself to think unthinkable thoughts has advantages beyond the thoughts themselves.

Argue with idiots, and you become an idiot.

The problem is, there are so many things you can’t say. If you said them all you’d have no time left for your real work.

Talking about an idea leads to more ideas. So the optimal plan, if you can manage it, is to have a few trusted friends you can speak openly to.

Samuel Johnson said it took a hundred years for a writer’s reputation to converge. You have to wait for the writer’s influential friends to die, and then for all their followers to die.

instead of patiently writing out a complete program and assuring myself it was correct, I tended to just spew out code that was hopelessly broken, and gradually beat it into shape. Debugging, I was taught, was a kind of final pass where you caught typos and oversights. The way I worked, it seemed like programming consisted of debugging.

A page of formulas just looks so impressive. (Tip: for extra impressiveness, use Greek variables.) And so there is a great temptation to work on problems you can treat formally, rather than problems that are, say, important.

Over and over we see the same pattern. A new medium appears, and people are so excited about it that they explore most of its possibilities in the first couple generations.

there is a strong correlation between being smart and being a nerd, and an even stronger inverse correlation between being a nerd and being popular.

Merely understanding the situation they’re in should make it less painful. Nerds aren’t losers. They’re just playing a different game, and a game much closer to the one played in the real world.

In practice, to get good design you have to get close, and stay close, to your users. You have to calibrate your ideas on actual users constantly, especially in the beginning.

“A painting is never finished, you just stop working on it.” This idea will be familiar to anyone who has worked on software.

There have been famous instances of collaboration in the arts, but most of them seem to have been cases of molecular bonding rather than nuclear fusion.

Design by committee is a synonym for bad design.

In programming languages, as Erann Gat has pointed out, what “industry best practice” actually gets you is not the best, but merely the average.

Aiming at timelessness is a way to make yourself find the best answer: if you can imagine someone surpassing you, you should do it yourself. So if you can make something that appeals to people today and would also have appealed to people in 1500, there is a good chance it will appeal to people in 2500.

Good design is timeless. Good design solves the right problem. Good design looks easy. Good design uses symmetry. Good design resembles nature. Good design is redesign. Good design can copy.

Unknowing imitation is almost a recipe for bad design. If you don’t know where your ideas are coming from, you’re probably imitating an imitator.

The ambitious are not content to imitate. The second phase in the growth of taste is a conscious attempt at originality.

Today we move around more, but great work still comes disproportionately from a few hotspots:

(See Greenspun’s Tenth Rule.) Object-oriented programming is popular in big companies, because it suits the way they write software. At big companies, software tends to be written by large (and frequently changing) teams of mediocre programmers.

Web-based software is like desiging a city rather than a building: as well as buildings you need roads, street signs, utilities, police and fire departments, and plans for both growth and various kinds of disasters.

For server-based software you can use any language you want. [3] Today a lot of the top hackers are using languages far removed from C and C++: Perl, Python, and even Lisp.

With server-based software, you can make changes almost as you would in a program you were writing for yourself.

With Web-based software, you wouldn’t make such a promise, because there are no versions. Your software changes gradually and continuously.

the idea of versions just doesn’t naturally fit onto Web-based software.

When you catch bugs early, you also get fewer compound bugs.

Web-based applications are an ideal source of revenue. Instead of starting each quarter with a blank slate, you have a recurring revenue stream.

There is always a tendency for rich customers to buy expensive solutions, even when cheap solutions are better, because the people offering expensive solutions can spend more to sell them.

If a company wants to make a platform that startups will build on, they have to make it something that hackers themselves will want to use. That means it has to be inexpensive and well-designed.

If you start out underfunded, it will at least encourage a habit of frugality. The less you spend, the easier it is to make more than you spend.

Start by making something clean and simple that you would want to use yourself. Get a version 1.0 out fast, then continue to improve the software, listening closely to the users as you do.

the least sophisticated users show you what you need to simplify and clarify, and the most sophisticated tell you what features you need to add.

You may not believe it, but I promise you, Microsoft is scared of you. The complacent middle managers may not be, but Bill is, because he was you once, back in 1975, the last time a new way of delivering software appeared.

  1. Programming Languages Are for People.
  2. Design for Yourself and Your Friends.
  3. Give the Programmer as Much Control as Possible.
  4. Aim for Brevity.
  5. Admit What Hacking Is.

I think almost anything you can do to make programs shorter is good.

There are two ways new technology gets introduced: the organic growth method, and the big bang method. The organic growth method is exemplified by the classic seat-of-the-pants underfunded garage startup.

The other approach, the big bang method, is exemplified by the VC-backed, heavily marketed startup. They rush to develop a product, launch it with great publicity, and immediately (they hope) have a large user base.

“The best writing is rewriting,” wrote E. B. White.

Everyone knows that it’s not a good idea to have a language designed by a committee. Committees yield bad design.

But I think the worst danger of committees is that they interfere with redesign.

languages designed for other people to use have been bad: Cobol, PL/I, Pascal, Ada, C++. The good languages have been those that were designed for their own creators: C, Perl, Smalltalk, Lisp.

Who does like Java? Suits, who don’t know one language from another, but know that they keep hearing about Java in the press; programmers at big companies, who are amazed to find that there is something even better than C++; and plug-and-chug undergrads, who are ready to like anything that might get them a job

The serious hacker will also want to learn C, in order to hack Unix, and Perl for system administration and cgi scripts. Finally, the truly serious hacker should consider learning Lisp: Lisp is worth learning for the profound enlightenment experience you will have when you finally get it;

But there is a contradiction in the conventional wisdom: Lisp will make you a better programmer,

programming languages are not merely technologies, but habits of mind as well, and nothing changes slower.

You can’t trust the opinions of the others, because of the Blub paradox: they’re satisfied with whatever language they happen to use, because it dictates the way they think about programs.

The Mythical Man-Month, Frederick Brooks proposed that the productivity of a group of programmers does not grow linearly with its size. As the size of the group increases, the productivity of individual programmers goes down.