INTERHACK  


Unix User Hierarchy

People who come into contact with the Unix system are often told: "If you have trouble, see so-and-so, he's a guru," or "Bob there is a real Unix hacker." Often, they are baffled by these appelations, and do not pursue the matter further.

What is a "Unix Hacker?" How does he differ from a "Guru"?

To answer these and other questions, here is a draft of the "Unix User Hierarchy":
Name Description and Features
Beginner
  • insecure with the concept of a terminal
  • has yet to learn the basics of ed
  • has not yet figured out how to get a directory listing
  • literally types <RETURN> for carriage return and is then confused when an error message which says syntax error: newline or ; unexpected occurs
  • thinks Unix are people who guard harems
  • thinks "C" is a Bell Labs Acronym for "COBOL"
novice
  • knows that ls will produce a directory listing
  • still has trouble with typing carriage returns after each line of input
  • still has the erase character set to #
  • has heard of the visual editor, but calls it "vye"
  • has heard of the C programming language, but has never used it
  • has had his first bad experience with rm
  • is wondering how to read his mail
  • is wondering why the person next to him seems to like Unix so very much
user
  • uses vi and nroff, but inexpertly
  • has heard of regular-expr's but has never seen one
  • has figured out that - prcedes options
  • has attempted to write a C program and has decided to stick with Pascal
  • is wondering how to move a directory
  • has never heard of sdb
  • thinks "emacs" is a trademark for McDonald's quarter pounder with the works
  • knows how to read his mail and is wondering how to read the news
  • uses ^ for shell pipes
  • holds the Unix manual upside-down
knowledgeable user
  • uses nroff with no trouble and is beginning to learn tbl and eqn
  • uses grep to search for fixed strings
  • has figured out that mv will move directories
  • has learned that learn doesn't help
  • somebody has shown him how to write C programs
  • once used sed to do some text substitution
  • has seen sdb but does not use it himself
  • thinks that make is only for wimps
  • writes scripts for Bourne shell
  • can't understand the Unix manual, but at least knows which section to look in
expert
  • uses sed when necessary
  • uses macros in vi, uses ex when necessary
  • posts to news at every possible opportunity
  • writes ksh scripts occasionally
  • writes C programs using vi and compiles with cc
  • has figured out what && and || are for
  • thinks that human history started with !h
  • occasionally looks in the Unix manual for help
hacker
  • uses sed and awk with comfort
  • uses undocumented features of vi
  • writes C code with cat > and compiles with r cc
  • uses adb because he doesn't trust source debuggers
  • can answer questions about the user environment
  • writes his own nroff macros to supplement the standard ones
  • knows how to install bug fixes
  • writes Unix manual entries for new commands
  • reads the source code instead of the manual
  • attempts to breach system security
Guru
  • uses m4 and lex with comfort
  • writes assembly code with cat >
  • uses adb on the kernel while the system is loaded
  • customizes utilities by patching the source
  • reads device driver source with his breakfast
  • can answer any Unix question after a little thought
  • uses make for anything that requires two or more distinct commands to achieve
  • has learned how to breach security but no longer needs to try
  • can write 8 lines of Korn shell what it would require 600 lines of C code
WIZARD
  • writes Unix device drivers as shell scripts using cat >
  • fixes bugs by patching the binaries
  • can answer any question before you ask
  • writes his own troff macro packages
  • dreams in vivid C
  • has a Unix OS flowchart tatooed on his chest
  • modifies running Unix kernel from the console switches
  • has ported Unix to run on a friend's Sinclair 1000
  • is on a first-name basis with Dennis, Brian, Ken, and Bill


corporate | research | news | people | projects | publications | services | feedback | legal

C Matthew Curtin (Original author unknown)
Last modified: Tue Dec 9 18:00:29 EST 1997