Why This Document?
As a programmer and entrepreneur—and aspiring hacker—after reading Eric Steven Raymond’s document, I realized that it was time to write my own guide, one that’s more up-to-date and includes my own experiences. However, I don’t claim any unique authority on this topic either; if you don’t like what you read here, feel free to write your own guide.
Note: At the end of this document, you’ll find a list of Frequently Asked Questions (FAQ). Please make sure to read through them twice before sending any questions about this guide.
Also, consider supporting the hackers whose code you use and value. Many small but consistent contributions can accumulate to create greater value.
What Is a Hacker?
There is a shared community and culture of skilled programmers and network wizards whose history goes back decades to the early time-sharing minicomputers and the first ARPAnet experiments. The members of this culture invented the term “hacker.” Hackers built the Internet. Hackers built Unix, shaping it into the system we see today. Hackers created the World Wide Web. If you belong to this culture, if you’ve contributed to it, and others in it know who you are and call you a hacker, then you’re a hacker.
The hacker mindset isn’t confined to the software hacking culture. There are people who apply hacker attitudes to other things, like electronics or music—indeed, you can find this mindset at the highest levels of any science or art. Software hackers recognize these kindred spirits elsewhere and may call them hackers too—and some claim that hacking is really independent of the specific medium the hacker works in. But in this document, we will focus on the skills and attitudes of software hackers, and the shared culture that originated the term “hacker.”
Another group of people loudly calls themselves hackers, but aren’t. These are people (mainly young males) who enjoy breaking into computers and phone systems. Real hackers call these people “crackers” and want nothing to do with them. Real hackers mostly think crackers are lazy, irresponsible, and not very bright, and object to being lumped together with them. Unfortunately, many journalists and writers have been fooled into using the word “hacker” to describe crackers; this irritates real hackers no end.
The fundamental difference is this: hackers build things, crackers break them.
If you want to be a hacker, keep reading. If you want to be a cracker, head to the alt.2600 newsgroup or The Nest, and be ready for five to ten years in prison—after you realize you’re not as smart as you think you are. And that’s all I have to say about crackers!
Hacker Attitude
- The world is full of fascinating problems waiting to be solved.
- No problem should ever have to be solved twice.
- Boredom and drudgery are evil.
- Freedom is good.
- Attitude is no substitute for competence.
Hackers solve problems and build things, and they believe in freedom and voluntary mutual help. To be accepted as a hacker, you must behave as though you have this kind of attitude. And to behave as though you have the attitude, you must genuinely believe the attitude.
However, if you think cultivating hacker attitudes is just a way to gain acceptance in the culture, you’ll miss the point. Becoming the kind of person who believes these things is important for you— for helping you learn and staying motivated. Just like all creative arts, the most effective way to become a master is to imitate the mindset of masters—not just intellectually but emotionally as well.
Or, as the modern Zen poem has it:
Follow the path:
Look to the master,
Follow the master,
Walk with the master,
See through the master’s eyes,
Become the master.
So, if you want to be a hacker, repeat the following until you believe them:
1. The world is full of fascinating problems waiting to be solved.
Being a hacker is fun, but it’s hard work too. The work requires motivation. Successful athletes get their motivation from a kind of physical pleasure in making their bodies perform, pushing themselves past their limits. Similarly, to be a hacker, you have to get a basic thrill from solving problems, sharpening your skills, and exercising your intelligence.
If you’re not the kind of person who feels this naturally, you’ll need to become one in order to make it as a hacker. Otherwise, you’ll find your hacking energy sapped by distractions like sex, money, and social approval.
(You also need to develop a kind of faith in your own learning capacity—a belief that even if you don’t know everything you need to solve a problem, if you tackle just a piece of it and learn from it, you’ll learn enough to solve the next piece—and so on, until you’re done.)
2. No problem should ever have to be solved twice.
Creative brains are a valuable, limited resource. They shouldn’t be wasted on reinventing the wheel when there are so many fascinating new problems waiting out there.
To behave like a hacker, you have to believe that the thinking time of other hackers is precious—so much so that it’s almost a moral duty for you to share information, solve problems, and then give the solutions to others so they can solve new problems instead of having to perpetually readdress old ones.
However, note that “no problem should ever have to be solved twice” doesn’t mean you have to consider all existing solutions sacred, or that there’s only one right solution to any given problem. Often, we learn a lot about the problem that we didn’t know before by studying the first cut at a solution. It’s OK, and often necessary, to decide we can do better. What’s not OK is artificial technical, legal, or institutional barriers (like closed-source code) that prevent a good solution from being reused and force people to re-invent the wheel.
(You don’t have to believe that you’re obligated to give away all your creative products, though the hackers who do are the ones who get the most respect from other hackers. It’s consistent with hacker values to sell enough of what you create to pay your food, rent, and computers. It’s fine to use your hacking skills to support your family or even get rich, as long as you don’t forget your loyalty to your art and your fellow hackers while doing it.)
3. Boredom and drudgery are evil.
Hackers (and creative people in general) should never be bored or forced to do repetitive, mindless work, because when this happens, it means they aren’t doing what only they can do—solve new problems. This wastes everyone’s time and energy. Therefore, boredom and drudgery are not just unpleasant but actually evil.
For behaving like a hacker, you must believe this enough to want to automate away the boring bits as much as possible, not just for yourself but for everybody else (especially other hackers).
(There is one apparent exception to this. Hackers will sometimes do things that may appear repetitive or boring to an observer as a mind-clearing exercise, or in order to acquire a skill or have some particular kind of experience that you can’t get otherwise. But this is by choice—no one who can think should ever be forced into a situation that bores them.)
4. Freedom is good.
Hackers are naturally anti-authoritarian. Anyone who can give you orders can stop you from solving any problem that fascinates you—and, given the way authoritarian minds work, will generally stop you from doing anything interesting at all.
So, to behave like a hacker, you have to develop an instinctive hostility to censorship, secrecy, and the use of force or deception to compel responsible adults. And you have to be willing to act on that belief.
5. Attitude is no substitute for competence.
To be a hacker, you have to develop some of these attitudes. But having the attitude alone won’t make you a hacker, any more than it will make you a champion athlete or a rock star. Becoming a hacker will take intelligence, practice, dedication, and hard work.
So, you have to learn to distrust attitude and respect competence of every kind. Hackers won’t let posers waste their time, but they worship competence—especially competence at hacking, but competence at anything is valuable. Competence in demanding skills that few can master is especially good, and competence in demanding skills that involve sharp, analytical mental effort is best.
If you respect competence, you’ll enjoy developing it in yourself—the hard work and dedication will become a kind of intense game rather than drudgery. And that attitude is vital to becoming a hacker.
Basic Hacking Skills
- Learn how to program.
- Get one of the open-source Unix systems and learn to use and run it.
- Learn how to use the Web to its fullest and write HTML.
- If you don’t know functional English, learn it.
The hacker mindset is vital, but skills are even more important. Attitude is no substitute for competence, and you must have a basic skill set before any hacker will dream of calling you one.
This toolkit evolves slowly over time because the technology creates new skills and makes old ones obsolete. But in the present, the core essentials are learning to program, using and running Unix, writing HTML, and having a good grasp of functional English.
More to come in the following sections of this document…