Hackers & Painters: Big Ideas from the Comptuer Age by Paul Graham

Summary
  1. Paul Graham, founder of Viaweb and Y-Combinator, gives an inside view on the computer world and the motivations behind the people in it. Discussing how we think, how we work, how we develop technology and how we live
Key Takeaways

Why Nerds are Unpopular – Their minds are not on the game

  1. So, if intelligence itself is not a factor in popularity, why are smart kids so consistently unpopular? The answer, I think, is that they don’t really want to be popular. Not enough, anyway. There was something else they wanted more: to be smart, to make great things. The main reasons nerds are unpopular is that they have other things to think about.
  2. Another reason kids persecute nerds is to make themselves feel better. When you tread water, you lift yourself up by pushing water down. Likewise, in any social hierarchy, people unsure of their own position will try to emphasize it by maltreating those they think rank below. I’ve read that is why poor whites in the United States are the group most hostile to blacks
  3. 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. When the things you do have real effects, it’s no longer enough just to be pleasing. It starts to be important to have the right answers, and that’s where nerds show to advantage. The other thing that’s different about the real world is that it’s much larger. In a large enough pool, even the smallest minorities can achieve a critical mass if they clump together
  4. What bothers me is not that the kids are kept in “prisons” but that (a) they aren’t told about it, and (b) the prisons are mostly run by the inmates. Life in this twisted world is stressful for the kids. And not just for the nerds. Like any way, it’s damaging even to the winners.
  5. As far as I can tell, the concept of the hormone-crazed teenager is coeval with suburbia. I don’t think this is a coincidence. I think teenagers are driven crazy by the life they’re made to lead. Teenage apprentices in the Renaissance were working dogs. Teenagers now are neurotic lapdogs. Their craziness is the craziness of the idle everywhere.
  6. Teenagers seem to have respected adults more in the past because the adults were the visible experts in the skills they were apprenticing in. Now most kids have little idea what their parents do in their distant offices, and see no connection (indeed, there is precious little) between schoolwork and the work they’ll do as adults. What happened? We’re up against a hard one here. 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 and teenagers are now useless, except as cheap labor in industries like fast food, which evolved explicitly to exploit this fact
  7. Misrule breeds rebellion; this is not a new idea. And yet the authorities still for the most part act as if drugs were themselves the cause of the problem
  8. It’s important for nerds to realize, too, that school is not life. School is a strange, artificial thing, half sterile and half feral. It’s all-encompassing, like life, but it isn’t the real thing. It’s only temporary, and if you look, you can see beyond it even while you’re still in it

 

Hackers and Painters – Hackers are makers, like painters or architects or writers

  1. Hacking and painting have a lot in common. In fact, of all the different types of people I’ve known, hackers and painters are among the most alike. What hackers and painters have in common is that they’re both makers. Along with composers, architects, and writers, what hackers and painters are trying to do is make good things. They’re not doing research per se  though if in the course of trying to make good things they discover some new technique, so much the better.
  2. For hackers, computers are just a medium of expression, as concrete is for architects or paint for painters.
  3. There is a small but real chasm between architects and engineers: architects decide what to do, and engineers figure out how to do it. What and how should not be kept too separate. You’re asking for trouble if you try to decide what to do without understanding how to do it.
  4. The way to create something beautiful is often to make subtle tweaks to something that already exists, or to combine existing ideas in a slightly new way. This kind of work is hard to convey in a research paper
  5. There is nothing so tempting as an easy test that kind of works
  6. The only external test is time. Over time, beautiful things tend to thrive, and ugly things tend to get discarded. Unfortunately, the amounts of time involved can be longer than human lifetimes
  7. I’ve found that the best sources of ideas are not the other fields that have the word “computer” in their names, but the other fields inhabited by makers. Painting has been a much richer source of ideas than the theory of computation
  8. Programs should be malleable, allowing you to sketch roughly at first and debug over time
  9. 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. So if you can figure out a way to get in a design war with a company big enough that its software is designed by product managers, they’ll never be able to keep up with you. These opportunities are not easy to find, though. It’s hard to engage a big company in a design war, just as it’s hard to engage an opponent inside a castle in hand to hand combat. It would be pretty easy to write a better word processor than Microsoft Word, for example, but Microsoft, within the castle of their operating system monopoly, probably wouldn’t even notice if you did. The place to fight design wars is in new markets, where no one has yet managed to establish any fortifications. That’s where you can win big by taking the bold approach to design, and having the same people both design and implement the product. Microsoft themselves did this at the start. So did Apple. And Hewlett-Packard. I suspect almost every successful startup has.
  10. One thing we can learn, or at least confirm, from the example of painting is how to learn to hack. You learn to paint mostly by doing it. Ditto for hacking. Most hackers don’t learn to hack by taking college courses in programming. They learn to hack by writing programs of their own at age thirteen. Even in college classes, you learn to hack mostly by hacking. The other way to learn is from examples. For a painter, copying forces you to look closely at the way a painting is made. Writers do this too. Hackers, likewise, can learn to program by looking at good programs – not just at what they do, but the source code too. Another example we can take from painting is the way that paintings are created by gradual refinement. Paintings usually begin with a sketch. Gradually the details get filled in. But it is not merely a process of filling in. Sometimes the original plans turn out to be mistaken. 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. Hacking can also learn from painting not only how to manage our own work but how to work together. Painting has always utilized a master/apprentice model and worked on different parts of the painting. The right way to collaborate, I think, is to divide projects into sharply defined modules, each with a definite owner, and with interfaces between them that are as carefully designed and, if possible, as articulated as programming languages.
  11. Hackers start with original work and get good whereas scientists start good and get original
  12. This sounds like a paradox, but a great painting has to be better than it has to be. How hard one works on a painting doesn’t depend at all on how closely one expects anyone to look at it. Be relentless. Relentlessness wins because, in the aggregate, unseen details become visible. All these unseen details combine to produce something that’s just stunning, like a thousand barely audible voices all singing in tune
  13. In hacking, like painting, work comes in cycles. Sometimes you get excited about some new project and you want to work sixteen hours a day on it. Other times nothing seems interesting. To do good work, you have to take these cycles into account, because they’re affected by how you react to them. Sometimes, backing off can prevent ambition from stalling. It’s a good idea to save some easy tasks for moments when you would otherwise stall
  14. Like painting, most software is intended for human audience. And so hackers, like painters, must have empathy to do really great work. You have to be able to see things from the user’s point of view. It turns out that looking at things from other people’s point of view is practically the secret of success. It doesn’t necessarily mean being self-sacrificing. Far from it. Understanding how someone else sees things doesn’t imply that you’ll act in his interest; in some situations – in war, for example – you want to do exactly the opposite. Most makers make things for a human audience. And to engage an audience you have to understand what they need. Empathy is probably the single most important difference between a good hacker and a great one. One way to tell how good people are at empathy is to watch them explain a technical question to someone without a technical background
  15. In most fields the great work is done early on. 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
  16. An example of applied empathy. At Viaweb  if we couldn’t decide between two alternatives, we’d ask, what would our competitors hate most? At one point a competitor added a feature to their software that was basically useless, but since it was one of the few they had that we didn’t, they made much of it in the trade press. We could have tried to explain that the feature was useless, but we decided it would annoy our competitor more if we just implemented it ourselves, so we hacked together our own version that afternoon

 

What You Can’t Say – How to think heretical thoughts and what to do with them

  1. It’s the nature of fashion to be invisible, in the same way that the movement of the earth is invisible to all of us riding on it. What scares me is that there are moral fashions too.
    1. The conformist test – do you have any opinions that you would be reluctant to express in front of a group of your peers? Almost certainly, there is something wrong with you if you don’t think things you don’t dare say out loud
  2. What can’t we say? One way to find these ideas is simply to look at things people do say and get in trouble for. We are of course looking for things we can’t say which are true, or at least have enough chance of being true that the question should remain open…I suspect the statements that make people maddest are those they worry might be true
  3. Another test is to see what is “heresy” or at least today’s equivalent such as “divisive” or “racially insensitive.” Can also see what today’s labels are, such as “sexist”
  4. Can also look to the past to see what used to be acceptable and is now unthinkable. Might not even have to look to the past but merely to different cultures to see what they think is acceptable that you don’t. My hypothesis is that the side that’s shocked is most likely to be the mistaken one
  5. There are certain taboos which are universal, such as murder, but any idea that’s considered harmless in a significant percentage of times and places, and yet taboo in ours, is a good candidate for something we’re mistaken about
  6. To launch a taboo, a group has to be poised halfway between weakness and power and be nervous. A confident group doesn’t need taboos to protect it. It’s not considered improper to make disparaging remarks about Americans, or the English. And yet a group has to be powerful enough to enforce a taboo.
  7. There is nothing so wrong as the principles of the most recently defeated opponent
  8. Great work tends to grow out of ideas that other shave overlooked, and no idea is so overlooked as one that’s unthinkable. Training yourself to think unthinkable thoughts has advantages beyond the thoughts themselves. It’s like stretching. When you stretch before running, you put your body into positions much more extreme than any it will assume during the run. If you think things so outside the box that they’d make people’s hair stand on end, you’ll have no trouble with the small trips outside the box that people call innovative.
  9. Argue with idiots, and you become an idiot
  10. When you find what you can’t say, don’t say it. Draw a sharp line between your thoughts and your speech. Inside your head, anything is allowed but keep it to yourself. The problem with keeping your thoughts secret, though, is that you lose the advantages of discussion. 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. This is not just a way to develop ideas; it’s also a good rule of thumb for choosing friends. The people you can say heretical things to without getting jumped on are also the most interesting to know.
  11. To see fashion in your own time requires a conscious effort. Without time to give you distance, you have to create distance yourself. Instead of being part of the mob, stand as far away from it as you can and watch what it’s doing. And pay especially close attention whenever an idea is being suppressed. And, it’s not just the mob you need to learn to watch from a distance. You need to be able to watch your own thoughts from a distance. How can you see the wave, when you’re the water? Always be questioning

 

Good Bad Attitude – Like Americans, hackers win by breaking rules

  1. 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 newspeech  but they also laugh at someone who tells them a certain problem can’t be solved. Suppress one, and you suppress the others
  2. The next generation of computer technology has often – perhaps more often than not – been developed by outsiders
  3. 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…It is greatly to America’s advantage that it is a congenial atmosphere for the right sort of unruliness – that it is a home not just for the smart, but for smart-alecks. And hackers are invariably smart-alecks. If we had a national holiday, it would be April 1st.
  4. Civil liberties make countries rich. If you made a graph of GNP per capita vs. civil liberties, you’d notice a definite trend. Could civil liberties really be a cause, rather than just an effect? I think so. I think a society in which people can do and say what they want will also tend to be one in which the most efficient solutions win, rather than those sponsored by the most influential people. Authoritarian countries become corrupt; corrupt countries become poor; and poor countries are weak.

 

The Other Road Ahead – Web-based software offers the biggest opportunity since the arrival of the microcomputer

  1. Most people, most of the time, will take whatever choice requires least work – death before inconvenience
  2. When you have competitors, “you can” means “you must” because if you don’t take advantage of this possibility, your competitors will
  3. Turned negatives into positives and win/wins – ability to release fixes continuously lead to developers being genuinely interested in customer support because they would often learn about bugs and customers would feel important and even triumphant in finding these bugs
  4. Focusing on “bottom half of the roster” – made customer support and developer relationships win/win as customer support’s honor was on the line when bringing in new bugs and they always knew which users features wanted more. This kind of relationship rather than a contentious, hierarchical one
  5. Working to implement one idea gives you more ideas. Shelving ideas probably even inhibits new ideas. At Viaweb, often didn’t have future plans because plans are just another word for ideas on the shelf which they didn’t allow to happen. When they thought of good ideas, they implemented them
  6. Paying attention is more important to reliability than moving slowly. Because he pays close attention, a Navy pilot can land a 40,000 lb. aircraft at 140 miles per hour on a pitching carrier deck, at night, more safely than the average teenager can cut a bagel
  7. Complexity and bureaucracy scales exponentially with the size of the group. “We never had more to say at any one time [with 13 programmers] than we could say as we were walking to lunch.”
  8. Software should do what users think it will. But you can’t have any idea what users will be thinking, believe me, until you watch them. By watching users, you can often tell when they’re in trouble and since the customer is always right, that’s a sign of something you need to fix.
  9. Software is ideally suited for price discrimination as the marginal cost is close to zero
  10. You’ll sell more of something when it’s easy to buy. Make it difficult to buy and give people a chance to second guess themselves and they will buy much less
  11. 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. There is nothing you can do about this conundrum, so the best plan is to go for the smaller customers first. The rest will come in time
  12. 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
  13. If not willing to disrupt or cannibalize yourself – “A cash cow can be a damned heavy monkey on your back”
  14. “Just good enough” is often a powerful stepping stone to outweigh any cons or awkwardness in usage
  15. Most hackers don’t start their startup because they think they don’t know anything about business and are afraid of competition. Neither of these fences have any “current” in them. There are only two things you have to know about business: build something users love and make more than you spend. If you can get these two right, you’ll be ahead of most startups. You can figure out the rest as you go…Start by making something clean and simple that you would want to use yourself. The customer is always right but about different things; the least sophisticated users show you what you need to clarify and simplify and the most sophisticated tell you what features you need to add.
  16. The standard to compare your software to is what it could be, not what your current competitors happen to have
  17. Companies often wonder what to outsource and what not to. One possible answer: outsource any job that’s not directly exposed to competitive pressure, because outsourcing it will thereby expose it to competitive pressure
  18. There is always room for something new if the current options such enough. Make sure it works on all the free OSes first – new things start with their users

 

How to Make Wealth – The best way to get rich is to create wealth. And startups are the best way to do that

  1. If you wanted to get rich, how would you do it? I think your best bet would be to start or join a startup. Economically, you can think of a startup as a way to compress your whole working life into a few years. The advantage of creating wealth, rather than getting rich, is not just that it’s more legitimate but that it’s more straightforward. You just have to do something people want
  2. If you want to create wealth, it will help to understand what it is. Wealth is not the same thing as money. Wealth is as old as human history. Far older, in fact; ants have wealth. Money is a comparatively recent invention. Wealth is the fundamental thing. Wealth is stuff we want: food, clothes, houses, cars, gadgets, travel to interesting places, and so on. You can have wealth without money. Wealth is what you want, not money. Money is simply a side effect of specialization. In a specialized society, most of the things you need, you can’t make yourself and you need money to pay others to make it for you.
  3. Pie Fallacy – there is not a fixed amount of wealth in this worlds. Again, money is not wealth which may be fixed in a given period of time
  4. The top 5% of programmers probably write 99% of the good software
  5. A company that could pay all its so straightforwardly would be enormously successful. Many employees would work harder if they could get paid for it. More importantly, such a company would attract people who wanted to work especially hard. It would crush its competitors
  6. To get rich you need to get yourself in a situation with two things, measurement and leverage. You need to be in a position where your performance can be measured, or there is no way to get paid more by doing more. And you have to have leverage, in the sense that the decisions you make have a big effect. A good hint to the presence of leverage is the possibility of failure. However, you don’t need to be a CEO or an athlete to have measurement and leverage. All you need to do is be part of a small group working on a hard problem.
  7. A startup is not merely ten people, but ten people like you. Steve Jobs once said that the success or failure of a startup depends on the first ten employees. I agree. Being small is not, in itself what makes startups kick butt, but rather that small groups can be select. Startups have leverage because they make money by inventing new technology. What is technology? It’s technique. It’s the way we all do things. And when you discover a new way to do things, its value is multiplied by all the people who use it. Even giant corporations like McDonald’s or Wal Mart can be said to create technology. A McDonald’s franchise is controlled by rules so precise that it is practically a piece of software. Write once, run everywhere. Ditto for Wal-Mart. Sam Walton got rich not by being a retailer, but by designing a new kind of store
  8. Use difficulty as a guide not just in selecting the overall aim of your company, but also at decision points along the way. At Viaweb, one of our rules of thumb was “run upstairs.” Suppose you are a little, nimble guy being chased by a big, fat, bully. You open a door and find yourself a staircase. Do you go up or down? I say up. The bully can probably run downstairs as fast as you can. Going upstairs his bulk will be more of a disadvantage. Running upstairs is hard for you but even harder for him. What this meant in practice was that we deliberately sought hard problems, barriers to entry. Start by picking hard problems and then at every decision point, take the harder choice
  9. I think this is a good plan for life in general. If you have two choices, choose the harder. If you’re trying to decide whether to go out running or sit home and watch TV, go running. Probably the reason this trick works so well is that when you have two choices and one is harder, the only reason you’re even considering the other is laziness. You know in the back of your mind what’s the right thing to do, and this trick merely forces you to acknowledge it.
  10. I think it’s a good idea to get bought, if you can. Running a business is different from growing one. It is just as well to let a big company take over once you reach cruising altitude. It’s also financially wiser, because selling allows you to diversify. What would you think of a financial advisor who put all his client’s assets into one volatile stock? Getting bought is an art. For potential acquires  the most powerful motivator is the prospect that one of their competitors will buy you. This, as we found, causes CEOs to take red-eyes. The second biggest worry is that, if they don’t buy you now, you’ll continue to grow rapidly and will cost more to acquire later, or even become a competitor. In both cases, what it all comes down to is the number of users you have
  11. One of the prime catalysts for industrialization was the spread of the rule of law. A necessary, if not sufficient, condition was that people who made fortunes be able to enjoy them in peace
  12. Don’t let a ruling class of warriors and politicians squash the entrepreneurs. The same recipe that makes individuals rich makes countries powerful. Let the nerds keep their lunch money and you rule the world

 

Mind the Gap – Could “unequal income distribution” be less of a problem than we think?

  1. When people care enough about something to do it well, those who do it best tend to be far better than everyone else. There’s a huge gap between Leonardo and second-rate contemporaries like Borgognone  Like chess or painting or writing novels, making money is a very specialized skill. But for some reason we treat this skill differently. No one complains when a few people surpass all the rest at playing chess or writing novels, but when a few people make more money than the rest, we get editorials saying this is wrong
  2. I think there are three reasons we treat making money as different: the misleading model of wealth we learn as children (confuse it with money, think there is a fixed amount, something that is distributed by authorities or parents and should be distributed equally, rather than something that has to be created and perhaps unequally); the disreputable way in which, till recently, most fortunes were accumulated (stolen); and the worry that great variations in income are somehow bad for society (may increase gap in income but decrease other gaps between rich and poor such as quality goods, quality of life but not brand). As far as I can tell, the first is mistaken, the second is outdated, and the third empirically false. Could it be that, in a modern democracy, variation in income is actually a sign of health? If technology doesn’t bring about greater inequality it could be for three reasons: technical innovation has stopped, that the people who would create the most wealth aren’t doing it or that they aren’t getting paid for it
  3. To say a certain kind of work is underpaid is identical with saying that people want the wrong things
  4. You need rich people in your society not so much because in spending their money they create jobs, but because of what they have to do to get rich. I’m not talking about the trickle-down effect here. I’m not saying that if you let Henry Ford get rich, he’ll hire you as a waiter at his next party. I’m saying that he’ll make you a tractor to replace your horse
  5. Part of the reason this subject is so contentious is that some of the most vocal on the subject of wealth – university students, heirs, professors, politicians and journalists – have the least experience creating it
  6. One of the biggest differences between the Daddy Model and reality is that in reality effort does not necessarily correlate with how much wealth it brings. Painting a house with a toothbrush should not bring you more money just because it is harder

 

A Plan for Spam – Till recently most experts thought spam filtering wouldn’t work. This proposal changed their minds

  1. Began using probability filtering so that emails which entailed words associated with spam mail could get flagged and their frequency lowered over time

 

Taste for Makers – How do you make great things?

  1. For those of us who design things, these are not just theoretical questions, if there is such a thing as beauty, we need to be able to recognize it. We need good taste to make good things
  2. Once you start to examine the question, it’s surprising how much different fields’ ideas of beauty have in common. The same principles of good design crop up again and again. Good design is simple. Everything above simplicity is evasion. When you can’t deliver ornament, you have to deliver substance. Good design is timeless. Good design solves the right problem. Good design is suggestive. Good design is often slightly funny. I think it is because humor is related to strength. To have a sense of humor is to be strong: to keep one’s sense of humor is to shrug off misfortunes, and to lose one’s sense of humor is to be wounded by them. Good design is hard. If function is hard enough, form is forced to follow it, because there is no effort to spare for error. Wild animals are beautiful because they have hard lives. Good design looks easy. Like great athletes, great designers make it look easy. Mostly this is an illusion. In science and engineering, some of the greatest discoveries seem so simple that you say to yourself, I could have thought of that! In most fields the appearance of ease seems to come with practice. Perhaps what practice does is train your unconscious mind to handle tasks that used to require conscious thought. In some cases you literally train your body. An expert pianist can play notes faster than the brain can send signals to his hand. Likewise, an artist, after a while, can make visual perception flow in through his eye and out through his hand as automatically as someone tapping his foot to a beat. When people talk about being in “the zone,” I think what they mean is that the spinal cord has the situation under control. Your spinal cord is less hesitant, and it frees conscious thought for the hard problems. Good design uses symmetry (repetition and recursion). Nature uses them a lot, which is a good sign. The danger of symmetry, and repetition especially, is that it can be used as a substitute for thought. Good design resembles nature. It’s not so much that resembling nature is intrinsically good as that nature has had a long time to work on the problem. It’s not cheating to copy. Good design is redesign. It’s rare to get things right the first time. Experts expect to throw away some early work. Mistakes are natural. Instead of treating them as disasters, make them easy to acknowledge and easy to fix. Good design can copy. It is more important to be right than original. Unknowing imitation is almost a recipe for bad design. The ambitious are not content to imitate. The second phase in the growth of taste is a conscious attempt at originality but are selfless and confident enough to take from anyone without feeling that their own vision will be lost in the process. Good design is often strange. The only style worth having is the one you can’t help. And this is especially true for strangeness. Good design happens in chunks. Nothing is more powerful than a community of talented people working on related problems. Genes count for little by comparison: being a genetic Leonardo was not enough to compensate for having been born near Milan instead of Florence. Good design is often daring, teetering on the border of ostracism. This problem afflicts not just every era, but in some degree every field. Today’s experimental error is tomorrow’s new theory. If you want to discover great new things, then instead of turning a blind eye to the places where conventional wisdom and truth don’t quite meet, you should pay particular attention to them. 
  3. Problems can be improved as well as solutions. In software, an intractable problem can usually be replaced by an equivalent one that’s easy to solve. Physics progressed faster as the problem became predicting observable behavior, instead of reconciling it with scripture
  4. As a practical matter, I think it’s easier to see ugliness than to imagine beauty. Most of the people who’ve made beautiful things seem to have done it by fixing something that they thought ugly. Intolerance for ugliness is not in itself enough. You have to understand a field well before you develop a good nose for what needs fixing. You have to do your homework. But as you become an expert in a field, you’ll start to hear little voices saying, What a hack! There must be a better way. Don’t ignore those voices. Cultivate them. The recipe for great work is: very exacting taste, plus the ability to gratify it.

 

The Programming Languages Explained – What a programming language is and why they are a hot topic now

  1. The complete list of things a computer can do is machine language
  2. The more you have to say to get something done, the harder it will be to see bugs
  3. Open source software gives you the source code and the ability to modify it
  4. The biggest debate in language design is probably the one between those who think a language should prevent programmers from doing stupid things, and those who think programmers should be allowed to do whatever they want

 

The Hundred-Year Language – How will we program in a hundred years? Why not start now?

  1. Staying close to the main evolutionary tree branches which will carry on is a useful heuristic for finding languages that will be good to program in now and to make better decisions about language design
  2. There’s good waste, and bad waste. I’m interested in good waste – the kind where, by spending more, we can get simpler designs. How will we take advantage of the opportunities to waste cycles that we’ll get from new, faster hardware? The desire for speed is so deeply ingrained in us, with our puny computers, that it will take conscious effort to overcome it. In language design, we should be consciously seeking out situations where we can trade efficiency for even the smallest increase in convenience…Inefficient software isn’t gross. What’s gross is a language that makes programmers do needless work. Wasting programmer time is the true inefficiency, not wasting machine time. This will become ever more clear as computers get faster.
  3. When you’re working on language design, I think it is good to have such a target and to keep it consciously in mind. When you learn to drive, one of the principles they teach you is to align the car not by lining up the hood with the stripes painted on the road, but by aiming at some point in the distance. Even if all you care about is what happens in the next ten feet, this is the right answer. I think we can and should do the same with programming languages.

 

Beating the Averages – For web-based applications you can use whatever language you want. So can your competitors

  1. Graham chose to use Lisp in startup Viaweb because he thought that with Lisp he could get features done faster than competitors, could do things in their software that the competitors couldn’t do, it would cost less so they could provide a better product for less money and still make a profit
  2. In business, there is nothing more valuable than a technical advantage your competitors don’t understand. In business, as in war, surprise is worth as much as force.
  3. A startup should give its competitors as little information as possible. If they didn’t know what language our software was written in, or didn’t care, I wanted to keep it that way.
  4. Programming languages are not merely technologies, but habits of mind as well, and nothing changes slower. The only programmers in a position to see all the differences in power between the various languages are those who understand the most powerful one. You can’t trust the opinions of 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. Can use technology that competitors don’t understand like aikido – using their unwillingness to change and adapt against them
  5. A suspicious programmer might begin to wonder if there was some correlation here. A big chunk of our code was doing things that are very hard to do in other languages besides Lisp. The resulting software did things our competitors’ software couldn’t do. Maybe there was some kind of connection. I encourage you to follow that thread. There may be more to that old man hobbling along on his crutches than meets the eye. Lisp’s power is multiplied by the fact that your competitors don’t get it
  6. A good tool to evaluate what competitors are doing is to view their job listings. The rest can be made pretty but they have to be real and authentic about their job listings or else they’ll get the wrong candidates.
  7. The old adage, “you can’t tell a book by its cover,” originated in the times when books were sold in plain cardboard covers, to be bound by each purchaser according to his taste. In those days, you couldn’t tell a book by its cover. But publishing has advanced since then – present day publishers work hard to make the cover something you can tell a book by. Graham has spent enough time around technology that he can look at the “cover” of technology and know which to avoid
  8. Reasons to dislike Java – really good products don’t need to be promoted or over hyped; languages designed for other people to use have been bad and the good languages have been those that were designed for their own creators; ulterior motives are bad; no one loves it; people are forced to use it; it has too many cooks; it’s bureaucratic; it’s pseudo-hip; it’s designed for large organizations; the wrong people like it; Sun’s business model is being undermined; the DoD likes it
  9. Revenge of the Nerds – In technology, “industry best practice” is a recipe for losing
  10. The pointy-haired boss miraculously combines two qualities that are common by themselves, but rarely seen together: (a) he knows nothing whatsoever about technology, and (b) he has very strong opinions about it. He sticks to “industry best practice” to avoid responsibility and blame in case the company loses. However, it never gets you the best, merely the average
  11. The main reason many ideas and practices are widespread is because they are comfortable
  12. Lisp allows one to express the language in its own data structures which turns out to be a very powerful feature
  13. One tends to magnify risks one doesn’t truly understand
  14. Often, what differentiates you or your company and gives you a competitive advantage seems like an anomaly to outsiders but is in fact the cause and effect of your moat

 

The Dream Language – A good programming language is one that lets hackers have their way with it

  1. Designing a good programming language can be found by looking at hackers and learning what they want. Programming languages are for hackers, and a programming language is good as a programming language (rather than, say, an exercise in denotational semantics or compiler design) if and only if hackers like it
  2. Good programming languages have to feature very powerful abstractions
  3. Programming languages become popular if hackers use them because this tiny minority designs all the good software and their influence is such that the rest of the programmers will tend to use whatever language they use
  4. Thinks that languages have to be popular to be good and that getting the first twenty users may be harder than going from twenty to a thousand. Best way to convince new users is through a Trojan horse – give people an application they want which happens to be written in a new language
  5. A new language must have free implementation, a book, something to hack, must be brief, must be able to do what they want (can never guess all the ways a language will be used), dirty and clean – cleanly designed but let’s hackers have their way with it, ability to write quick/throwaway programs but these tend to stick around and be the foundation for great programs (big things tend to be too scary to start but starting small and quick is easy and benefits from evolution), interactive, available, start up quickly, large libraries for manipulating strings, hackers will wait until they’re more sure that the language will be around for some time and simple repetition often solves the problem (it’s not when people notice you’re there that they pay attention; it’s when they notice you’re still there), early adopters are demanding and help flush out problems quickly, the most important design is ability to redesign, no language designed by committee as they yield bad design and interfere with redesign
  6. A friend of mine rarely does anything the first time someone asks him. He knows that people sometimes ask for things that 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.
  7. There are typically two ways new technology gets introduced – the organic growth method (two guys in a garage) and the big-bang (VC-backed). Most of the garage boys are envious of the big-bang buys but more often than not it is the organic growth technology which yields better technology and richer founders
  8. To write good software you must simultaneously keep two opposing ideas in your head. You need the young hacker’s naïve faith in his abilities, and at the same time the veteran’s skepticism. You have to be able to think how hard can it be? With one half of your brain while thinking it will never work with the other. The trick is to realize there’s no real contradiction here. You want to be optimistic and skeptical about two different things. You have to be optimistic about the possibility of solving the problem, but skeptical about the value of whatever solution you have so far. People who do good work often think that whatever they’re working on is no good. Others see what they’ve done and are full of wonder, but the creator is full of worry. This pattern is no coincidence: it is the worry that made the work good. If you can keep hope and worry balanced, they will drive a project forward the same way your two legs drive a bicycle forward
  9. Users are a double-edged sword. They can help you improve your language, but they can also deter you from improving it. So choose your users carefully, and be slow to grow their number. Having users is like optimization: the wise course is to delay it. Also, as a general rule, you can at any given time get away with changing more than you think. Introducing a change is like pulling off a bandage: the pain is a memory almost as soon as you feel it.

 

Design and Research – Research has to be original. Design has to be good

  1. The difference between design and research seems to be a question of new versus good. Design doesn’t have to be new, but it has to be good. Research doesn’t have to be good, but it has to be new
  2. You have to design for the user, but you have to design what the user needs, not simply what he says he wants
  3. Must choose your group of users and almost always this group must include the designer himself
  4. There are two broad strategies: Worse is Better and the Hail Mary strategy. The Worse is Better gets a prototype in front of users as quickly as possible and slowly refines along the way.  A prototype doesn’t have to be just a mode; you can refine it into the finished product. I think you should always do this when you can. It lets you take advantage of new insights you have along the way. But perhaps even more important, it’s good for morale and morale is key in design because it keeps you engaged. The Hail Mary tries to create the complete, finished, product in one long touchdown pass. As far as I know, this is a recipe for disaster
  5. Notice all this time I’ve been talking about “the designer.” Design usually has to be under the control of a single person to be any good. And yet it seems to be possible for several people to collaborate on a research project. This seems to me one of the most interesting differences between research and design. Design by committee is a synonym for bad design. Good design requires a dictator. One reason is that good design has to be all of a piece. Design is not just for humans, but for individual humans. If a design represents an idea that fits in one person’s head, then the idea will fit in the user’s head too.
  6. There’s nothing more valuable than the advice of someone whose judgment you trust
What I got out of it
  1. So much to be gotten out of these essays even if you have no interest in either hacking or painting. A multi-disciplinary thinker who takes a different and interesting take on a variety of topics