Unix: The Good, the Bad, and the Ugly

Unix in all of its flavors is a system designed by geeks for geeks.

Geeks like to tweak the bits, and all Unix systems come with complete source code, in most cases free. Thus there is little or no profit incentive for a vendor to invest large amounts of development capital in the software; the business model just isnít there to recoup that investment. This has important and profound consequences in the nature of the system.

In this brief essay I consider not only what makes Unix good or bad, but also how that impacts its primary users, the students in a typical university computer science curriculum.

The Good

1.  Stability. Unix is famous among its adherents (but not much beyond them) for "stability." The most important (though not most widely promoted) aspect of that stability is the fact that the business model does not support a complete rewrite every couple years, so the software you write to run on it today will still (mostly) work five years from now, saving vast amounts of maintenance cost and increasing the stability of the application programs that thus don't need continual upgrades just to run.

2.  Stability. The stability promoted by Unix adherents refers to the fact that it doesn't crash as often, provided that you don't do any of the small list of things known to make it crash. Other systems also don't crash very often, but their small lists of things known to make it crash are different from Unix and from each other and even from previous operatings systems with the same name (but different because this is a complete rewrite). The result is that it's harder to learn and avoid doing those things.

3.  Free. Many versions of Unix -- notably Linux -- are free for the download or copying cost. If you are doing some niche-market thing like running a server farm, where the number of users in the market is too small to justify the cost of developing good software to do it, then you must hire an expensive guru to manage it. Add to that the cost of Windows on every box and you have doubled the expense of the operation. Since you have to pay the geek anyway, why not use his favorite system and not pay for the system software.

4.  Hard to Learn. This is actually a good thing for computer science students, because it increases the marketability of your technical skills. Once you have climbed the steep learning curve that is Unix, you have a rare and valuable skill that will guarantee full employment -- at least until the industry learns how costly it is to keep the system running and replaces it with something better, a good ten years or more. By then (who knows?) you will be a manager, and above all that.

5.  Hard to Learn. Another benefit of being hard to learn is that by learning Unix you sharpen your memory and cognitive skills, which makes you more competitive in any technical market. Learning Unix helps you think like a computer, which you must do to be a good programmer, even a non-Unix programmer.

6.  Easy to Program. I call it the Law of Conservation of Complexity, the fact that there is no way to eliminate the complexity in a complex task. If you have a computer program do it, the program will either be easy to write and hard to use, or else the other way around. Unix is easy to program because it is hard to use.

7.  Self Esteem. A side benefit of your increased cognitive skills is that you are better able to discern the foolish and illogical thinking of most other people, so you can feel good about yourself, and maybe even put them down. That doesn't do much for your social skills, but geeks are known to do poorly at that anyway.

8.  Feeling of Power. You wouldn't believe the rush you get from typing in arcane and complex commands and having the computer do exactly what you told it to do. Only in Unix.

9.  Apparent Productivity.  Most employees are not rewarded for doing a good job, but for appearing to work hard. Unix requires you to type in many long commands to do what a small number of quiet mouse clicks and drags would do in some other system, and all that clickety-clicking sounds very productive in the manager's ears. It's especially helpful if you are not such a great typist, because then you will spend a lot of time banging away on the delete key, which is slightly faster than typing complex commands, so it sounds like you are working even faster when in fact you are going slower.

10.  Slow. That doesn't seem like an advantage, but when computer software runs slow, the users need to buy new and faster hardware to get their work done, which stimulates the economy. Microsoft is getting the message, and they are trying to get Windows to run as slowly as Unix. They have not yet succeeded, but give them time.

11.  Graduate. Let's face it, university computer science courses are structured around the only operating system that the professors can read the source code of, so even if you join the 98% of computer users who never touch Unix after you graduate, you still must know it to pass the computer science courses so you can graduate. That's life.

The Bad

1.  Hard to Learn. This is probably the worst part of Unix, which will keep it from becoming the mainstream system its proponents hope for. Apple has tried to put a pretty face on it in OSX, but you still must learn all the grungy command line stuff to get real work done.

2.  Business Model. The Unix business model has no profit incentive for fixing bad design. In fact the business model encourages bad design, because that keeps it hard to learn, thus providing full employment for the volunteers doing the work maintaining it.

3.  Business Model. Because Unix is maintained by geeks for their own use, they have little incentive to bring it into the 21st century. See the benefits above.

4.  Total Cost of Ownership. Because Unix is a system for geeks, you need a geeky guru nearby to use and support it. Other systems need guru support also, but not as much. The (original) MacOS required about 2% guru time per seat; Windows needs closer to 5% per seat, but Unix needs about 50% guru time for support per seat. At today's salaries, that's prohibitively expensive. Unless you are that guru.

5.  Conservation of Complexity. Because Unix is easy to program, it's hard to use. Somebody must pay the bill, and in Unix it's the users.

6.  Slow. Unix is actually the slowest of all operating systems. It doesn't seem that way to its users, because it's so hard to do anything in Unix that they spend most of their cognitive effort figuring out what to do next, instead of just sitting there waiting for the faster but much easier to use systems work. When you actually time things with a stopwatch, Unix is slower. Its proponents are quick with excuses. Then they quit running comparisons.

The Ugly

1.  Out of Date. Let's face it, Unix was designed 35 years ago, and it's showing its age. Modern systems are event-driven; Unix is still file-oriented, the way everything was 35 years ago. Modern systems have an integrated graphical user interface (GUI); in Unix it's bolted on as another "user", with all the overhead that costs. Modern computer software uses structured data; in Unix everything is stored as text files (so the geeks can read them), which the software must continually convert to and from their internal data structures. That's part of what makes it slow.

First draft: 2004 January 21