How to Become a Hacker (for fun)

Linux 28 min read

Why this article?

As the editor of the Jargon File, I often receive emails from enthusiastic newcomers to the internet, in which they (essentially) ask, “How can I become a great hacker wizard too?”. Strangely enough, it seems there isn’t a single FAQ or website that addresses this important question, so here’s mine.

If you are reading this document offline, you can find the latest (English-language) version at http://www.tuxedo.org/~esr/faqs/hacker-howto.html.

What is a hacker?

In the ‘Jargon’ file, you’ll find a whole host of definitions for the term ‘hacker’, most of which mention a keen technical mind, problem-solving skills and a delight in breaking down barriers. However, if you’re specifically interested in how you, too, can become a hacker, then only two things matter. There is a culture—a shared culture of outstanding programmers and network wizards—that stretches back decades, to the days of the first time-sharing minicomputers and the very first ARPAnet experiments. It was these people who coined the term ‘hacker’. Hackers built the Internet. Hackers made the Unix operating system what it is. Hackers run the Usenet newsgroups. Hackers keep the World Wide Web running. If you’re part of this culture, if you’ve contributed something to it and others in the community recognise you and call you a hacker, then you’re a hacker.

The hacker mindset is not limited to the culture of software hacking. There are those who apply the hacker mentality in other fields, such as electronics or music – in fact, you may encounter this way of thinking at the very highest levels of science or the arts. Software hackers recognise these kindred spirits, sometimes even openly calling them ‘hackers’ — some maintain that the hacker nature is, in fact, independent of what the individual actually hacks. Nevertheless, in the remainder of this document, I shall focus on the skills and behaviour of software hackers, as well as the traditions of the shared culture that gave rise to the term ‘hacker’.

There is also another group which claims to consist of hackers, but this does not reflect reality. These people (mainly teenage boys) are those who think it’s funny to break into computers or mess about with the telephone network. Real hackers refer to these people as ‘crackers’ and emphasise that they have nothing in common with them. According to real hackers, crackers are lazy, irresponsible and not particularly brilliant; they argue that breaching security measures does not make you a hacker, just as being able to hot-wire a car does not make you a traffic engineer. Unfortunately, many writers and journalists confuse the two terms, describing crackers as ‘hackers’ too; this irritates real hackers beyond words.

The fundamental difference: hackers build, whilst crackers destroy.

If you want to be a hacker, read on. If you want to be a cracker, read the alt.2600 newsgroup and prepare yourself for a prison sentence of between five and ten years once it becomes clear that you’re not as clever as you thought. So much for crackers.

A hacker’s approach

A hacker solves problems and creates things; they believe in freedom and mutual voluntary assistance. To be accepted by the hacker community, you must demonstrate a similar attitude. To behave in a way that meets this expectation, you must genuinely believe in this approach.

If you think you’re only behaving like a hacker so that others will accept you, then you’re missing the point. Believing in the validity of this behaviour is very important to you — it helps you learn, and it motivates you. As with any creative art form, it’s not enough to imitate the master with your mind alone; you must do so with your heart as well.

So, if you want to be a hacker, keep repeating the following things until you believe them:

1. The world is full of fascinating problems waiting to be solved

Being a hacker is fun, but it’s the sort of fun that requires effort. A large part of that effort comes from motivation. Successful athletes are driven by the physically exhilarating sensation of perfecting their bodies and pushing beyond their own physical limits by giving their absolute best. Similarly, you can become a good hacker if you are excited by problems waiting to be solved, and if your goal and motivation lie in developing your skills and training your mind.

If this isn’t how you naturally feel, you’ll have to change if you want to become a successful hacker. Otherwise, you’ll soon find that the energy you intended to put into hacking is being channelled elsewhere – such as towards sex, money or gaining social recognition.

(In addition to this, you need to learn to trust your ability to learn – to believe that even if you don’t know everything required to solve the problem, once you start breaking down part of the problem, you will learn enough along the way to tackle the next sub-task – and so on, until you have solved the whole problem.)

2. No one should ever have to solve the same problem twice

Creative minds are a valuable and limited resource. They should not be wasted on reinventing the wheel when there are so many new and interesting problems waiting to be solved.

A characteristic of a hacker’s behaviour is that they are aware that other hackers’ time is valuable — which is why they feel it is almost a moral duty to share information. With the help of the solutions shared in this way, other hackers can tackle new problems.

(Don’t go thinking that you have to contribute every intellectual product resulting from your creativity to the collective, although the more you give, the more the other hackers will respect you. It’s compatible with hacker values if you sell enough of yourself to pay the rent and be able to buy food and computers. It’s fine if you support your family through hacking, and even if you get rich, as long as you don’t forget that you’re a hacker.)

3. Boredom and mindless drudgery are bad

Hackers (and creative people in general) should not be condemned to boredom or made to do mindless, repetitive work; if this does happen, it means they are not doing what they are best at – finding solutions to new problems. This waste is bad for everyone. That is why boredom and mindless, repetitive work are not only unpleasant, but also bad for everyone.

If you want to act like a hacker, you need to believe in it so much that you automate the tedious tasks as much as possible, not just for your own sake, but for everyone else’s too (especially for other hackers).

(There is one apparent exception to this rule. Hackers sometimes do things that may seem tedious and robotic to an outsider, but in reality these are necessary to develop a skill or gain practice in something they would otherwise never learn. However, this is the hacker’s own choice — no thinking person should ever be forced into boredom.)

4. Freedom is a good thing

By their very nature, hackers are anti-authority. Anyone who tries to boss them about is hindering them from solving the interesting problem they’re currently working on — and since we know how the minds of those who boss others about work, this will inevitably happen sooner or later; they’ll come up with some silly excuse. So you must fight against this bossy behaviour wherever you encounter it, lest it stifle you or your fellow hackers.

(This does not mean that all forms of authority should be criticised. Children need guidance, and criminals must be held accountable for their actions. A hacker may decide to accept a certain level of control if, in doing so, they gain something that is more important to them than the time wasted following instructions. But this can only be limited; there is no question of the kind of personal submission expected by people with a bossy mindset.)

The very essence of a bossy person is censorship and secrecy. They are distrustful of anything involving voluntary cooperation and information sharing — they only like the sort of ‘cooperation’ that they control. So if you want to behave like a hacker, you must develop an instinctive aversion to censorship, secrecy and the violent coercion of responsible adults. You must not only believe that this is right, but you must act accordingly.

5. Behaviour is no substitute for competence

To become a hacker, you need to develop some of the qualities listed above. But you cannot become a hacker simply by copying someone else’s behaviour, just as you cannot become a world-class athlete or a rock star. Becoming a hacker requires intelligence, practice, dedication and hard work.

That is why you must learn not to judge by behaviour alone, and to respect all forms of expertise. A hacker does not waste their time on pretenders, but values expertise – particularly expertise in hacking, though expertise in any other field is also worthy of recognition. If your expertise covers a field that few people understand, that’s good; if you’re an expert in a field that requires precise logical skills, mental strength and the ability to concentrate, that’s the best.

If you value expertise, you’ll find joy in developing your skills – hard work and dedication to this will be a serious game, not just drudgery. This is vitally important if you want to become a hacker.

Basic skills for hacking

A hacker’s mindset is vital, but skills are even more important. Behaviour is no substitute for competence; there is a fundamental set of skills you must possess before hackers will consider you one of their own.

These skills change gradually over time; as technology advances, new fields emerge that require new skills, whilst the old ones become obsolete in parallel. For example, programming in machine code used to be one of the basic skills, whilst knowledge of HTML has only recently become necessary. Currently, the following form part of a hacker’s basic knowledge:

1. Learn to program

This, of course, is essential knowledge for any hacker. If you don’t know any programming languages, I recommend you start with Python. It is well-designed, well-documented and relatively beginner-friendly. Although it is a good language for beginners, it is not just a toy; Python is a highly versatile and flexible language, suitable for creating large-scale projects.

Be aware that you won’t achieve the expertise of a hacker, or even that of a simple programmer, if you only know one language – you need to learn to think about programming problems independently of any specific language. To become a true hacker, you need to reach the point where you can learn a new programming language in a matter of days, using the documentation and building on what you already know. This means you need to learn several languages that are very different from one another.

If you’re getting serious about programming, you’ll need to learn C, the fundamental language of Unix (though I wouldn’t recommend C as your first language regardless). Other important languages include Perl and LISP. It is worth learning Perl for practical reasons; it is often used for creating dynamic web pages and for system administration, so even if you never write Perl yourself, it is definitely worth learning to read it. LISP is worth learning for the profound sense of enlightenment you feel when you finally manage to understand what it’s all about; this experience will make you a better programmer for the rest of your life, even if you don’t end up using LISP very often.

Ideally, you should learn all four of these languages (Python, C, Perl and LISP). As well as being the fundamental languages of hackers, they take very different approaches to programming, so you can gain useful and valuable new knowledge from each one.

I can’t give an exhaustive description of how you can learn to program – it’s a very complex subject. There is one thing I can tell you, though: books and courses aren’t worth very much (many, and probably the vast majority, of hackers are self-taught). What does make sense is: (a) reading code and writing code.

Learning to program is just like learning to write in your own mother tongue. The best way is to read what the masters have written, then write something yourself, then read a good amount of code, write a little more, read some more, write a bit more… and repeat this process until you start to recognise the good qualities of your role models’ code in your own.

In the past, it was difficult to find good, readable code, as the source code for major programs was rarely made available to novice hackers. This has changed drastically; today, open-source software, programming tools and operating systems (all of which were written by hackers) are easily accessible to anyone. This brings us to the next topic…

2. Get hold of an open-source Unix system and learn how to use it

I’m assuming you have a PC, or have access to one somewhere (kids these days have it so easy :-)). The most important step on the path to becoming a hacker is to get hold of some version of Linux or BSD-Unix, install it on your machine, and learn how to use it.

Yes, there are other operating systems in the world besides Unix. But they are distributed as binaries, meaning you cannot read or modify the code. Learning to hack on DOS, Windows or macOS is like trying to learn to dance whilst wearing a straitjacket.

That said, we mustn’t forget that Unix is the operating system of the Internet. Whilst you can learn to use the Internet without any knowledge of Unix, you certainly cannot become an Internet hacker. That is precisely why hacker culture today is quite firmly Unix-centred. (This has not always been the case; some old-timers still cannot come to terms with it, but the symbiosis between Unix and the Internet has become so strong that not even Microsoft can really dent it.)

So, set up a Unix system – personally, I prefer Linux, but there’s plenty of choice (and yes, you can run Linux and DOS/Windows alternately on the same machine). Learn how to use it. Play around with it. Mess about on the Internet with it. Read the source code. Modify the source code. Under Linux, you’ll come across programming tools (e.g. C, LISP, Python and Perl) that you wouldn’t even dare to dream of under a Microsoft operating system; you’ll have a great time, and you’ll soak up so much knowledge that you won’t even realise it, until, as a professional hacker, you look back on those days.

You can find information on how and where to obtain Linux on the page entitled ‘Where can I get Linux?’.

You can find help and links relating to BSD Unix at www.bsd.org.

(Note: I do not recommend attempting to install Linux or BSD on your own if you are a complete beginner in this field. If you’re trying your hand at Linux, find a local user group – such as [LME] in Hungary – and ask for help, or get in touch with the Linux Internet Support Co-Operative. LISC also runs IRC channels where you can get [English-language] help.)

3. Learn how to use the World Wide Web and learn how to write HTML

Most of what hackers create operates unnoticed in the background, facilitating work in factories, offices and universities, seemingly without affecting the lives of non-hackers. The Web is the one major exception: the huge, glittering hacker’s playground that even politicians acknowledge is changing the world. For this reason (and a whole host of other compelling reasons), you need to learn how to work with the Web.

This doesn’t just mean you need to learn how to use a web browser (anyone can do that), but also that you need to learn HTML, the language of the web. If you don’t know how to program, whilst learning HTML you can pick up certain good habits that will stand you in good stead in your future studies. So go ahead and create a website.

Just because you have a website doesn’t even come close to meaning you’re a hacker. The web is full of websites. Most of them are meaningless, content-free rubbish – colourful rubbish, you might say, but rubbish all the same. (You can read more about this on the HTML Hell page).

For a page to be worth reading, it must have content – it must be interesting and/or useful to other hackers. This leads us on to the next topic…

Status within hacker culture and the community

Like most cultures without money or an economy, reputation is a defining element of hacking. You try to solve interesting problems, but only those who are also experts in the field in question can judge just how interesting these problems actually are and how good your solution really is.

Similarly, when you play by the hackers’ rules, you learn that you earn your stripes based on how others view your expertise (which is why I wrote earlier that you’re not a real hacker until others call you one). This fact is obscured by the image that portrays hacking as a solitary pursuit, as well as by the widespread view within hacker circles that pride or the opinions of others cannot be part of the motivating factors.

To be precise, hacking is what anthropologists call a ‘gift culture’. In such a society, you do not gain renown by oppressing others, nor by being attractive, nor by possessing things that others covet, but by giving. You happen to devote your time, your creativity and the fruits of your expertise to others.

Essentially, there are five things you can do to earn the respect of hackers:

1. Write open-source software

The first (and most important and widely accepted) way to gain a foothold is to write a program that hackers consider useful or fun, and to make the source code available so that the whole community can use it.

(We used to call these projects ‘free software’, but as it wasn’t clear to everyone whether ‘free’ referred to ‘liberty’ or ‘cost-free’, many of us now prefer the term ‘open-source’ software.)

The most respected figures in hacker culture are people who have written large, useful programs that were widely needed, and then made them available to the community so that everyone could use them freely.

2. Help test and debug open-source software

The work of those who test and fix open-source software is also extremely valuable. In this imperfect world, it is inevitable that a significant portion of the time allocated to software development is spent on debugging and fixing bugs. That is why any sensible open-source maintainer will agree with me when I say that a good beta tester (who can clearly describe the symptoms, pinpoint the problem accurately, can put up with bugs in rushed releases, and is willing to use a few simple diagnostic tools) is worth their weight in diamonds. A single such beta tester can determine whether debugging is a despairing, exhausting nightmare or merely a useful inconvenience.

If you’re new to this, look for a program currently under development that interests you and try to be a good beta tester. From there, things will fall into place naturally: after testing, you can help with debugging, and afterwards you can assist with development. You can learn a lot this way, and earn brownie points with people who may be able to help you later on.

3. Publish useful information

Another useful thing you can do is to gather useful and interesting information and publish it on the website or in the FAQ (Frequently Asked Questions) documents.

The maintainers of the main technical FAQs receive almost as much recognition as the programmers who write open-source software.

4. Help keep the infrastructure running

Hacker culture (and, by extension, the development of the Internet) is maintained and kept running by volunteers. A great deal of necessary, yet less spectacular and appealing, work needs to be done to keep the system running — mailing lists must be administered, newsgroups moderated, vast software archives maintained, and RFCs and other technical standards written.

People who carry out these tasks well are held in high regard, because everyone knows that their work is incredibly time-consuming and not as much fun as coding. Those who do this sort of work are dedicated.

5. Serve the hacker community

Finally, you can contribute to and promote hacker culture itself (for example, by writing a detailed introduction on how to become a hacker :-)). This isn’t something you can do until you’ve been part of the hacker community for a certain amount of time and have made a name for yourself through one of the previous four points.

The hacker community has no formal leaders, but it does have its heroes, ‘elders’, historians and spokespeople. If you’ve been in the fray for long enough, you might well become one of them. But remember: hackers are wary of ‘elders’ who are too full of themselves, so it’s dangerous to achieve this status in a showy manner. Don’t strive for it; instead, position yourself so that it falls into your lap, then remain humble and nurture your relationships carefully.

The Hacker / Geek Connection

Contrary to popular belief, you don’t have to be a ‘nerd’ to be a hacker. That said, it can be an advantage – in reality, many hackers are ‘nerds’. If you’re socially excluded, it helps you to focus on the things that really matter, such as contemplation and hacking.

This is why many hackers embrace the ‘nerd’ label and even proudly use the more blunt term ‘geek’ – thereby distancing themselves from conventional social expectations. You can read more about this topic on the Geek page.

If you can manage to devote enough attention to hacking to become a good hacker, whilst still leading a normal life, then that’s fine. This is a much easier task for a newcomer these days than it was in my time, back in the 1970s; nowadays, society is much more tolerant of tech enthusiasts. What’s more, more and more people are realising that hackers often make excellent lovers and husbands.

If you’re drawn to hacking because you’ve got no life, that’s OK too – at least nothing’s distracting you. You might even develop a life later on.

Style points

Once again, to become a hacker, you need to think like a hacker. There are things you can do to this end when you’re not sitting in front of a computer. These are no substitute for hacking (nothing can replace that), but many hackers engage in such activities, so they are also linked to the essence of hacking.

  • Read science fiction. Attend science fiction-themed clubs and meetings. (There you can meet hackers and proto-hackers).
  • Study Zen and/or practise martial arts. (Meditation is similar in many ways.)
  • Learn to listen to music with a critical ear. Learn to appreciate different musical styles. Learn to play a musical instrument or sing.
  • Get to grips with wordplay.
  • Learn to write well and correctly in your native language. (Surprisingly, many hackers – including some of the best I know – are good writers.)

The more of these things that come naturally to you, the better a hacker you are. It is not entirely clear why these particular things are relevant, but there is likely a connection between them and the range of abilities associated with the right and left hemispheres of the brain, which are essential for a hacker (a hacker must be able to think logically, but must also be able to step outside the apparent logic of a given problem).

Finally, a few things to avoid:

  • Do not use silly or boastful usernames or nicknames.
  • Don’t get involved in pointless arguments (flame wars) on Usenet (or anywhere else).
  • Don’t call yourself a ‘cyberpunk’ and waste your time on someone who calls themselves one.
  • Please do not send emails full of spelling and grammatical errors.

If you do things like this, you’ll just get a bad reputation – people will only remember what a daft person you are. Hackers have good memories – it can take years for them to forget your early blunders and accept you.

I’d like to return to the issue of nicknames separately. Hiding your real identity behind nicknames is childish and foolish, and is behaviour typical of crackers, warez d00dz and other inferior life forms. A hacker doesn’t do that; they’re proud of what they do and what they’ve achieved, which is why they like people to know their real name. So if you’re using a nickname like that, drop it, because amongst hackers it just brands you a loser.

Other resources

Peter Seebach maintains an excellent Hacker FAQ for managers and bosses who are unsure how to deal with hackers among their staff. If Peter’s page is unavailable, try searching for a copy of the page via Excite.

The login page has something to say about the skills and attitude of a Unix hacker.

I have written an essay entitled ‘A Brief History of Hacking’.

I wrote an essay entitled ‘The Cathedral and the Bazaar’, which provides a detailed analysis of how communities centred around Linux and open-source software function. I explored this topic in even greater depth in the follow-up, ‘Homesteading the Noosphere’.

Frequently Asked Questions

Q: Will you teach me how to hack?

Q: Ever since I first published this page, several people have been asking me every week (often every day) to “teach them everything about hacking”. Unfortunately, I have neither the time nor the energy for this; my own hacking-related projects take up 110 per cent of my time.

Even if I were able to teach hacking, I couldn’t do so, because it’s a mindset and a skill that you have to master on your own. You’ll find that real hackers are happy to help you, but they won’t respect or acknowledge you if they have to spell everything out for you.

Learn a few things first. Show that you’re making an effort and that you can learn independently. After that, only bother the hackers with specific questions.

Q: So where do I start?

A: Probably the best way to get started with hacking is to attend a Linux User Group meeting. You can find a list of these groups on the LDP General Linux Information Page; there’s likely to be one near you, perhaps at a college or university. You can easily get hold of Linux from members of a Linux Users’ Group, and they’ll certainly help you with the installation too.

Q: When should I start? Am I too old for this now?

A: No matter how old you are, motivation is what counts. Hacking generally attracts the interest of those aged between 15 and 20, but I know of exceptions at both ends of the scale.

Q: How long will it take me to learn how to hack?

A: It depends on how talented you are and how hard you work. Generally speaking, if you’re clever, you can acquire respectable skills within 18 months or two years. Nevertheless, don’t think that’s all there is to it; if you become a true hacker, you’ll never stop learning, and you’ll spend the rest of your life perfecting your skills.

Q: Would you help me hack into a system, or teach me how to break into one?

A: No. Anyone who asks such a question after reading this FAQ is too stupid for me to teach anything to, even if I had the time. Any email sent on such a subject will end up in the bin, or worse still, the sender can expect a rude reply.

Q: I’ve been hacked. Can you help me prevent future attacks?

A: No. This question is always asked by people who use Windows. Windows systems cannot be made effectively secure or resistant to hacking; there are too many vulnerabilities in the code and the software architecture – it’s a bit like trying to bail water out of a sinking ship with a glass. The only reliable solution is to switch to Linux or some other genuinely secure operating system.

Q: Where can I meet and talk to real hackers?

A: The best solution is to look for a Linux or Unix user group and attend their meetings (you can find links on the LDP website at Metalab).

(I would previously have written here that you cannot meet a real hacker on IRC, but it seems this is changing. These days, genuine hacker groups – such as those active in the GIMP and Perl communities – have their own IRC channels.)

Q: Can you recommend any useful books on hacking?

A: I maintain the Linux reading list ‘HOW TO’, which might be of help to you. Loginataka might also be of interest.

Q: What should I learn first?

A: HTML, if you’re not already familiar with it. There are plenty of books on the market about bad HTML – full of flashy, distracting elements that focus on trivialities – and a disappointingly small number of good ones. My personal favourite is the O’Reilly publication HTML: The Definitive Guide.

However, HTML is not a programming language. If you’re ready to start learning to program, I’d recommend choosing Python. Many people recommend Perl, which is certainly more widespread than Python, but it’s harder to learn and (in my opinion) isn’t as well designed. You can find a collection of links for beginner Python programmers on the web.

C is really important, but at the same time much more difficult than Python or Perl. Don’t try to learn it first.

Windows users, do not get stuck on Visual Basic! You’ll pick up bad programming habits from it, and it’s not portable – it’s entirely dependent on the Windows platform. Best avoided.

Q: Do I have to hate Microsoft?

A: No, you don’t have to. Not because it doesn’t deserve it, but because hacker communities existed before Microsoft, and they’ll still be around long after Microsoft has become a thing of the past. Instead of hating Microsoft, focus on your own strengths. Write good code; you’ll achieve more that way than by badmouthing Microsoft, and you won’t even jeopardise your reputation.

Q: But doesn’t open-source software development threaten programmers’ livelihoods?

A: That’s unlikely — in fact, the open-source software industry tends to create new jobs. If writing a program generates a net profit, the programmer will be paid, regardless of whether the program is open-source once it’s finished. It also doesn’t matter how much ‘open’ software programmers write; there appears to be a growing demand for new and bespoke applications. I’ve written more on this topic in the Open Source pages.

Q: How do I get started? Where can I get a free Unix system?

Q: Further up on this page, you’ll find links to the most popular free Unix distributions. To become a hacker, you’ll need motivation, an entrepreneurial spirit and the ability to learn independently. Get started now…


Eric S. Raymond esr@snark.thyrsus.com</esr>

Translated by:

Emese Kovács < emese@goliat.eik.bme.hu >

Back: Linux articles (62)