By: Paul Graham
July 2004
A few months ago I published a book *, in reviews for which the words “provocative” and “contradictory” were often encountered, so as not to say “idiotic”.
*) We are talking about the book " Hackers and painters ."
I was not going to write a controversial book. Rather, I wanted to make the book concise and specific. I would not like to waste readers' time on the presentation of things already known to them, but to write only about what I think could be new and interesting for my readers. But, apparently, such an approach to the business threatens to turn into almost a scandal.
Edison
There are no contradictions among reviewers about which of the ideas in the book is the most controversial. Obviously, this is the assumption that the stratification of society by income level must not be such a great problem as it seems at first glance.
I do not claim that a significant wealth gap is good in itself. However, it can be a sign of the proper organization of society. Like, for example, there is nothing good in a migraine, but when it comes to concussion, the headache is the first sign of recovery.
Income differences may reflect differences in productivity, which is good, because if everyone works the same way in a society, it is most likely not because everyone there is talented like Thomas Edison, but rather because there is not one in such a society Edison
In traditional, non-high-tech communities there are no noticeable differences in the performance of its members. Take for example some primitive tribe of hunter-gatherers. How much more productive will the best collector be? Well, let's say, two times. But with the advent of advanced tools, such as computers, it turns out that the capabilities of individuals increase incredibly!
All this is known for a long time, in 1974, Fred Brooks published the results of a study on this topic, conducted back in 1968. Now it seems to me that he underestimated the differences that exist among programmers. He estimated the productivity of programmers in the number of lines of code that they were able to produce, or in the time spent on solving the problem - the best programmers could solve the problem ten times faster than their colleagues. But what if the task is not set at all? In programming, as in many other areas of human activity, the problem lies not so much in problem solving, but in their formulation. It is difficult to accurately assess the development of imagination, but in practice it is this evaluation of the programmer’s performance that turns out to be more accurate.
In any area of activity, people's productivity varies, but nowadays there are several occupations in which inconsistencies can be striking. In programming, such quantitative differences become qualitative, although, apparently, not only in it. Wherever it is, the technology increases the variation in the level of performance, and in programming - in the first place. Thus, it seems to me that gradually the productivity of people employed in other areas will differ more and more. And in the end, the success of companies and even countries will increasingly depend on how they cope with these variations in productivity.
As productivity differs more and more due to modern technologies, the contribution of the most successful employees will not only be disproportionately high, but will continue to grow over time. Having reached the state when 90% of products are provided by 1% of the population, the community becomes vulnerable if any surprises (such as a Viking raid) reduce the productivity of the most useful members of the community.
If we want to squeeze the maximum benefit from the most productive people, we should take a closer look at them. What drives them in their activities? What do they need to do the job? How to recognize the most productive people? How to get them to work? And finally, how to become one of the most productive people in the community?
')
Not only money
When I try to understand what is common to that small number of first-class hackers with whom I am familiar, their love for programming is the most similar characteristic. Ordinary programmers work mostly for money. Outstanding hackers consider their work to be one of the greatest pleasures, and the fact that someone else pays them for their work is honored for good luck.
It is sometimes said that first-class hackers are indifferent to money, but this is not quite true. Right here is that the priority of outstanding programmers is the attractiveness of the problem. On the other hand, having enough money, you could work on any interesting task of your choice, and this prospect attracts top-notch hackers. However, while you have to work for money, hackers are more interested in the interestingness of the task than the size of the salary.
And this is the most important, from an economic point of view, fact, because in this case there is no need to pay a first-class hacker as much as his work is actually worth. An outstanding programmer can be ten or a hundred times more productive than his ordinary colleague, but he will be happy to earn at least three times more. I will further explain that this phenomenon is partly due to the fact that first-class hackers simply do not know how well they are doing their job. But it is also because money is not their main goal.
So what do hackers need? Like any master of their craft, they love quality tools. And in programming it is especially important. Good programmers simply do not tolerate low-quality tools. Rather, they will completely refuse to participate in the work on a wrongly organized project.
When I worked in one startup, in the office on the bulletin board, among other things, hung a flyer from IBM, which showed an AS400 series computer, and the inscription on top read something like: “We despise hackers” *. The fact is that choosing the tools to work on a particular project, you accept not only and not so much a technical solution. You also choose the community that will be formed to work on the project, and this seems to be even more important.
*) Honestly, I should point out that IBM makes quite decent computers. I wrote this article on an IBM laptop.
Imagine that your company decided to develop some kind of new program. It would seem that in our time for the new development should use the Java language. But by choosing a language, we automatically select a community of developers. Java programmers that your company can hire to work on a project will, on average, be worse prepared than Python developers *. And the quality of the engineers working on the project is probably more important than the programming language used. By the way, to be honest, the fact that first-class hackers prefer Python to Java, among other things, also characterizes the relative qualities of these programming tools.
*) When Google invites Java programmers to work, they also require Python programming experience.
Business people prefer the most popular languages because they are considered standards. Company executives are unlikely to follow the path of Sony, whose Betamax video format at one time lost in the competition to the VHS format, which, unlike Betamax, was licensed to many independent manufacturers. But the fact is that programming languages are not just standards. When you need to send data bits from point A to point B, then you are probably using the most common TCP / IP protocol today. But with the programming language the situation is more complicated, because it is not only a tool, but also an environment for creativity.
I read somewhere that the Java language has recently become the most popular programming tool, ahead of the popularity of Kobol. For the language, as a standard, it is certainly a great success. But as a medium for creativity, the Java language still has something to strive for. Of all the outstanding programmers I know, I know only one person who would voluntarily choose the Java language to work with. And then, due to the fact that this person works in the firm of Sun Microsystems.
Outstanding hackers tend to use open source software. Not because the quality of such programs is higher, but because the source texts give developers almost complete control over the process of developing, debugging and operating programs. And good programmers want to have the most complete control in the developed system. After all, it is complete control that makes simple developers outstanding hackers, giving them the opportunity to overcome this or that problem in the system on their own.
A few years ago, a friend of mine, an investor, told me about the plans of the company with which he was associated. Their prospects looked quite bright. After some time, when I met this man again, it turned out that the company’s management decided to develop its product for Windows NT and that they hired an experienced NT developer as a lead engineer of the project. Then I thought this company was doomed. Firstly, even an experienced Windows NT developer cannot be a top-notch hacker, since in order to gain Windows NT programming experience, it is necessary to use this platform voluntarily and repeatedly, and I cannot imagine an outstanding hacker to do this. And secondly, even if it turns out that a Windows NT programmer is really good, it will be difficult for him to pick up a team of first-class hackers to participate in programming for Windows NT *.
*) They were indeed doomed. That company closed in a few months.
Last stronghold
Speaking about the tools of a first-class hacker, the next in importance after the programs, apparently, is his office. In large companies, the place of an employee in an office emphasizes his position in the service hierarchy. But for hackers, an office is also a place where they work on solving problems. Making first-class hackers work in a noisy and distracting environment is like painting cars in a dusty room.
Comic book hero Dilbert had something to say about cubicles *. All my friends hackers do not like them. Only the prospect at any moment to be cut off from the solution of a complex problem by some employee passing by does not allow hackers to begin the complex work in the block. As a result, they have to work at home or come to the office before or after their working day or on weekends, when there is no one in the office. It is surprising that large companies do not notice this problem. After all, the office was designed for comfortable work, and not at all to create additional interference to employees.
*) Cubicles are called sections in an office divided by low partitions into tiny jobs per employee. Dilbert is the hero of a very caustic comic about the themes of office life in corporate America. Translator's note.
Large companies, such as Cisco Systems, pride themselves in the fact that each of their employees, including the CEO, has his own cubic. Alas, they are not as progressive as they see them: apparently, they still see cubicles as an attribute of social status. Note, by the way, that Cisco is known for small volumes of its own development. Instead, Cisco acquires small young companies that have developed this or that technology. Apparently, these companies are precisely that quiet pool in which high-class hackers live.
There is, however, one big company that understands what hackers need - this is Microsoft. I once met a Microsoft job ad. The leaflet depicted a door, and the inscription read: work with us, and we will give you the opportunity to work where you can do your work. Do you know that Microsoft is different from other large companies in that they manage to create a significant part of software on their own? And although the result could be better, but still, it is good enough.
If companies want the most productive work from hackers, then they should see how hackers work at home. After all, at home, a person organizes his workplace in the best way possible for himself. At home, hackers avoid open, noisy places; They work in rooms behind closed doors, in cozy, adjacent rooms. When they need to discuss something with each other, they go somewhere for a walk, instead of meeting in glass "aquariums", cut into the manner of parking places. At home, hackers make themselves a place to rest, where they can take a nap, and not sit in a workplace in a state of coma, pretending to work. And the team of cleaners with vacuum cleaners does not hover over them every evening, distracting from work at the most productive time. At home, they do not have meetings, corporate events and exercises to strengthen teamwork skills. And if you look at what hackers do on their home computer, you will find only confirmation of what I mentioned earlier in the chapter on tools. Hackers can use Java and Windows at work, but at home, in a situation of free choice, you will most likely encounter Perl and Linux on their computers.
Then, perhaps, that statistics on the popularity of the Java language will seem to you not quite correct. If we want to find out which of the tools is really the best, we should see what hackers choose when they have a choice, that is, in their own projects. Then it may turn out that open source operating systems have already captured most of the market, and the most common programming language is probably Perl.
Correct work
In addition to high-quality tools, hackers want to work on interesting tasks. So what makes the project interesting for hackers? Of course, high-tech developments, such as stealth planes or special effects modeling, would be interesting to them. And although, in principle, any task may turn out to be attractive if it requires solving new technical problems, it is not so easy to determine what problems hackers will be interested in. After all, the task can be interesting for them only if at some point a new solution is found. Before ITA (which developed the software under the auspices of the Orpitz company) began developing software for reserving flights, the programmers thought that there was no more boring task in the world. However, ITA reformulated the problem, and in a less unambiguous version it became more interesting.
It seems to me that something like this happened at Google. At the time when Google was founded, the developers of the so-called "portals" search task seemed insignificant and boring. But the hackers from Google did not find the problem of search boring, and therefore everything turned out so well.
This is one of the areas where managers can influence something. Like a parent who keeps a bet with a child that he will not be able to clean his room in ten minutes, managers can sometimes reformulate the problem in a more interesting way. It seems that Steve Jobs is particularly successful in this - in terms of maintaining a high bar. In those days, when Apple began its business, the market was already saturated with inexpensive personnel. So, the task, in Jobs's wording, was to make a pretty person. And it probably had an effect on Apple’s engineers as well as a carrot or a stick on a donkey.
And they did it! When the first “Mac” first appeared, it wasn’t even necessary to turn it on to realize that it was a great development. It was visible on the body. A few weeks ago, I was walking through Cambridge, and in someone's trash bin, I saw what turned out to be a bag for “Mak.” I opened it and saw Mac SE. I took it home, turned it on, and it booted. Smile "Macintosh", and then his file manager Finder. Oh, it was that simple. Just like ... Google.
Upscale hackers enjoy working with people who set the bar high. However, pedantry alone is not enough. It is also necessary to follow the correct technical solutions, which means that the manager himself must also be a high-profile hacker. I met articles on how to manage a team of programmers. In fact, there should be two articles on this subject - for programmers and non-programmers. So, the last article can contain only three words: nothing will come of it.
The job of a good programmers team manager is not so much the day-to-day management: good programmers, as a rule, do not require guidance at all, since they themselves successfully manage their projects. But for a non-programmer it is difficult to understand how well one or another of his subordinates works. A similar situation arose with American cars - I call it a design paradox. Suppose you set out to create some remarkably beautiful product and would like to start by inviting a talented designer. So, if you assume that you have no artistic taste, then how to determine which designer is really talented? Judging by his previous work you are not given by definition. Focusing on awards or previous places of work is meaningless, because in design, as in many other areas, these things, first of all, depend on fashion and private agreements and only then on artistic qualities. There is no way out of this paradox: you cannot create a beautiful thing without understanding what beauty and harmony are. So, American cars are not beautiful, because people with bad taste drive American car companies.
Many people in America find the taste something illusory or even vulgar, but it is not. The manager, on whom the product design depends, must become the most capricious and demanding user. And if you're lucky, and our leader will have a good taste, as he showed up in Steve Jobs, then our task can attract first-class hackers.
Wacky job
It is obvious what tasks will be uninteresting to our hackers: those in which, instead of solving a few significant and clearly defined problems, the engineer faces a bunch of small and unnatural. One hard case of this kind is the creation of an interface to a program full of errors. Or, for example, the adaptation of any software to a complex and incorrectly defined model of an individual user. For a hacker, such tasks are a slow and painful death.
A distinctive feature of such tasks is that they do not teach the person involved in their solution. For example, the creation of a language compiler is interesting, if only because such work allows to understand how compilers are arranged. But writing an interface to a program that does not work correctly will not teach you anything, since errors are not systematic. So hackers avoid stupid work not only from cleanliness and snobbery. To a large extent, this is a matter of self-preservation, since the fight against such artificial problems leads to the degradation of the engineer. First-class hackers avoid them for the same reasons as fashion models avoid cheeseburgers.
(By the way, it seems to me that when people talk about “the meaning of life,” they mean exactly that. This expression itself sounds strange; life is not an utterance that can make sense. But life can be defined by a quality that is very similar the “sense.” In the work on the compiler, the engineer solves many separate problems, but they all fall into one or another type category, which is similar to the extraction of a useful signal.
Of course, some tasks, by definition, fall into the wacky category. With favorable conditions, work on some of these tasks can be very profitable. A company that succeeds in attracting first-class hackers to work on the stupid tasks can be very successful. But how to do that?
One of the places where this is possible is startups. Robert Morris * worked as a system administrator in our company. It was like inviting the Rolling Stones to the Bar Mitzvah celebration. It is absolutely impossible to hire a specialist of such high class for such uninteresting work. But for the sake of developing their own company, people are ready for any routine **.
*) Robert Morris is a professor at the Massachusetts Institute of Technology (MIT). In 1988, he wrote the so-called "Morris worm", which is considered the first computer worm in history, spread over the Internet.
**) Einstein designed a new type of refrigerator (and even received a patent).
Large companies solve this problem by splitting into parts. They attract intelligent people by inviting them to a separate research department, where end users with their uninteresting problems * do not reach. With such an organization, the research department acts as a generator of ideas that other departments of the company may be able to use.
*) It's not so easy to say what exactly the researchers in the computer field are doing. For a start, I would say that they write programs that have no obvious need. I do not think that this article will send first-class hackers to look for work in the research departments of companies. They hardly want to spend three hours meeting with a product manager on how to integrate the Korean version of Word Build 13.27 with a talking clip.
However, this is not the only possible approach. The bottom-up programming technique offers a different way of specialization within the company: you can use smart engineers to produce tools for creating a company product. In this case, 99% of the final product code will be written by professionals, but at the same time, as in the case of the dedicated research department, they will be almost completely isolated from the end users. Tool makers will have end users, but they will be the company's own developers *.
*) Something similar has been happening for a long time in the field of construction. If your house was built several hundred years ago, then the builders did everything themselves. But gradually the builders switched to assembling the house from prefabricated components manufactured by third firms. As in the case of the design of books on personal pages, it gave people the freedom to experiment, sometimes destructive, but, in general, such specialization is obviously more effective.
Perhaps, if Microsoft used a similar development method, their programs would not contain such a large number of errors, since the most critical parts of the code (such as memory management) would have been written by the most intelligent engineers. Instead of writing a Word program entirely in C, you could create a tool — a special high-level development environment — and assemble Word from pieces, like the Lego designer.
Pounding
In addition to interesting work, first-class hackers love to work together. Good engineers themselves gather in groups, sometimes very significant, as happened at Xerox *. For this reason, you would not be able to attract the more first-class hackers, the better the conditions you would create for them. This tendency to gather in colonies changes the linear dependence of the number of hackers on the quality of the conditions on a quadratic one. Ultimately, an “all or nothing” situation arises. At any given time in the market there are dozens of places where first-class hackers would like to work. If your company is not one of them, then you will not just have less hackers, you will not get them at all.
*) The graphical user interface in the form in which we know it (windows, icons, menus), appeared in the Xerox PARC research center in the seventies.
However, the mere presence of first-class hackers in the team does not guarantee the success of the company. For example, Google and ITA are doing fine, first-class hackers are currently gathering at these companies, but Thinking Machines and Xerox are not so cool. Sun worked well for some time, but if the wrong business model is chosen, even the best hackers will not be able to save the company.
Nevertheless, I believe that, all other things being equal, a company that has managed to attract first-class hackers gets a huge competitive advantage. Not everyone will agree with this. When we discussed the prospects of young companies in the nineties of the last century, some said that software companies would never succeed in the market, even if they developed excellent software. Those people who promote the trademarks, organizes powerful sales channels and conclude profitable contracts will win, as these people believed.They really believe in such a model, and I think I know why. Perhaps many investors are hoping to find, at least implicitly, a new Microsoft firm. Of course, if your idol is Microsoft, you should not invest in companies that create high-quality software. But these investors are mistaken: a young company can hardly follow the path of Microsoft, unless some other company is not ready to gobbled at the right moment and thus become just another IBM.It would be a mistake to focus on Microsoft, because their success is based on a happy set of circumstances. In this sense, the history of Microsoft is not typical. If you do not take into account the presence of Microsoft in the market, it turns out that the really good products prevail in the market. Therefore, investors should look for new Apple or Google.I think Bill Gates knows all this. And what worries him is not that Google doesn’t belong to Microsoft, but that first-class hackers work for Google *.*) Google is much more dangerous for Microsoft than Netscape. Perhaps it is even the most dangerous company of all that existed until now. Not least because Google is determined to fight. It is written on their personnel department page that one of their main values is not to be a monster. For a company selling soybean oil or mining equipment, such a statement would be eccentric. But it seems to me that for all of us, people from the IT industry, it’s quite obvious what this statement means.
How to recognize a top-notch hacker
So who among the many people working in the IT field, refers to these hackers? How to recognize a first-class hacker at a meeting? It turns out not so easy. Even the hackers themselves can not always tell. Now I am quite sure that my friend Trevor Blackwell is a first-class hacker. You could read a note on Slashdot about how Trevor developed and madeyour own segway. A remarkable detail of this project lies in the fact that Trevor wrote all the scooter software in one day (in Python, by the way). For Trevor, this is normal. And when I first met him, it seemed to me that he was a complete idiot. I saw him in the office of Robert Morris mumbling something about something else, and I remember standing behind Trevor and gesturing to hint to Robert that it would be time to drive him out. Then Robert told me that he, too, was at first mistaken about Trevor. By the time of their first meeting, Trevor was just beginning to design a new scheme, and he wrote the work flow in a notebook, which he always carried with him. In addition, he had just returned from Canada, taking with him a strong Canadian accent and fashionable hairstyle in the style of "mullet".The task of recognizing a hacker is complicated by the fact that, despite the reputation of the guys closed and unsociable, hackers sometimes try to look smart. When I was at university, I occasionally walked past an artificial intelligence lab at MIT. It was uncomfortable. Everyone spoke very quickly and incomprehensibly. After a while, I realized what was going on. There is no need to think quickly as well, simply speaking more words than is necessary to state the essence of the matter.With such a low signal-to-noise ratio, it is difficult to understand who is who. Yes, I still do not know. It is difficult to judge and summary. It seems that the only way to assess the capabilities of an engineer is to work with him on some task.That is why high-tech oases arise around universities. The active component there is not so much professorship as students. Small new companies are formed on campuses due to the fact that universities attract young and talented people and give them the opportunity to work together. The most talented find each other and team up to work on their own projects.Since we will not be able to recognize a first-class hacker in any other way than by working with him, the hackers themselves cannot assess how well they work. To some extent, this is the case in other areas of human activity. I noticed that outstanding people do not particularly appreciate their own capabilities, but they do not cease to be amazed by the incompetence of others. The people I met and who performed their work flawlessly, as a rule, did not consider themselves to work well. They, as a rule, considered themselves lazy and slow-witted, complained that their head worked as it should only be one day out of ten, and that their dismissal was only a matter of time.Hackers are particularly difficult to determine their level due to the difficulty of comparing their work. In most areas, this is simple. In a 100 meter race in 10 seconds, you will know who is the best. Even in mathematics, there seems to be a consistent assessment of the complexity of certain problems and the quality of certain solutions. But programming is more like literature. Who can tell which of the two novels is the best? Certainly not the authors.In the case of hackers, at least, other hackers can assess the level of work, because, unlike writers, hackers cooperate with each other in working on a task. But a hacker cannot assess the level of his work, so if we ask a first-class hacker how good the results of his work are, he will most likely answer that he does not know. And not because he is shy, he really does not know.And none of us knows, except for the people who have ever worked with us. All this puts us in a strange situation - we do not know our heroes. The hackers who gained fame turned out to be famous by chance, due to unexpected PR. Sometimes I need to give an example of a top-notch hacker, and I’m completely lost. The first thing that comes to mind is my friends, but using their names is somehow inconvenient. Maybe I should mention the names of Richard Stallman or Linus Torvalds or Alan Kay or something like that. But, strictly speaking, I do not know these people, and it is difficult for me to say anything about their professionalism.If there is a Michael Jordan in programming, then no one, including himself, knows about it.How to become a first-class hacker
And finally, the question that all programmers must ask is: how to become a first-class hacker? I do not know whether it is possible to educate himself in this way. Obviously, since a person can ruin his career himself, then probably he can build it, becoming a first-class hacker.Apparently, the most important thing for a hacker is an interesting job. Recalling my hacker acquaintances, I realize that another of their common qualities is an extreme reluctance to do work that they don’t like. I do not know what it is - the cause or effect. Both are possible.To do something well, be sure to love this job. As long as you manage to maintain a love of programming, the results will be high. Try to keep your interest in programming in the same condition as it was at 14. If it seems to you that your current job does not develop you professionally, then this is most likely the case.The best hackers are usually smart people, but this is true for other professions as well. Is there any unique quality characteristic of hackers only? I asked friends about it, and the first thing they called was curiosity. I always assumed that clever people are curious; this curiosity is a direct consequence of their knowledge. But apparently, hackers are especially curious, first of all, about how everything works. And this is understandable, since programs are, in fact, gigantic descriptions of how certain devices work.Several of my respondents noted the hacker property to concentrate on solving the problem. As one of my friends said, they can isolate themselves from the outside world. I think so. I heard about several hackers who could not work after half a beer. So, perhaps, programming requires a special ability to focus on one problem. Probably, first-class hackers can support several contexts in their own heads so that, considering a line of code, they imagine the work of the entire program. John McPhee wrote that Bill Bradley’s success in basketball careers is primarily due to his extraordinary peripheral vision. The eye of a normal person has a viewing angle of 47 degrees vertically. Bill Bradley was 70: he could see the basket when he looked at the floor. May be,first-class hackers have similar innate abilities. (Here I am a little cunning, using a simplified language that is difficult to challenge in court.)All this explains the problem with cubicles. Maybe those people who organize the work of the office do not need a special concentration to perform their functions, and therefore they do not understand that for a hacker, working in a cubic meter is hardly productive.Another difference hackers from just smart people, which I noticed, lies in the fact that hackers are less politically correct. Only being in their own environment, of course, when they feel that they can freely express their point of view without risking being beaten by the surrounding people. And it seems to me that I understand why political incorrectness can be a useful quality for a programmer. The fact is that programs can have a very complex structure, and in the hands of a good hacker they are very dynamic. In such a situation, it is useful to have a habit of checking what everyone is used to believing.Is it possible to cultivate all these qualities? I do not know.
In any case, you can try not to suppress them in yourself. So, my only advice: if at all possible, deliberately become a first-class hacker, make an agreement with yourself: you are no longer obliged to take up stupid work (assuming, of course, that your family will not suffer from this), and in return always promise yourself do your job well. All the top-notch hackers I know seem to have made a similar agreement with them. Although, perhaps, they simply had no choice.The author would like to thank Jessica Livingston, Robert Morris and Sarah Harlin for subtracting earlier versions of this article.Translation - Ilya Etingof.
The original article can be found at http://www.paulgraham.com/gh.html The
article is taken from the site www.computerra.ru( http://www.computerra.ru/print/think/35350/ )