Links
Currently




« 17 December 2003 - 3:30 pm | Main | 20 December 2003 - 7:28 pm »

18 December 2003 - 9:13 am
What are the cultural differences between Unix and Windows programmers? There are many details and subtleties, but for the most part it comes down to one thing: Unix culture values code which is useful to other programmers, while Windows culture values code which is useful to non-programmers.
Joel on Software has a great discussion of the cultural differences between Windows and Unix programmers in the guide of a review of Eric S. Raymond's new book, The Art of UNIX Programming. It's a long read, but very interesting if you're into this sort of thing.

Posted by on 18 December 2003 at 9:13 AM

Comments

This excerpt from Joel's article is great. I'm not saying I agree with it totally, but I think the raises some good points and is very articulate.

-begin quote-
There are too many monocultural programmers who, like the typical American kid who never left St. Paul, Minnesota, can't quite tell the difference between a cultural value and a core human value. I've encountered too many Unix programmers who sneer at Windows programming, thinking that Windows is heathen and stupid. Raymond all too frequently falls into the trap of disparaging the values of other cultures without considering where they came from. It's rather rare to find such bigotry among Windows programmers, who are, on the whole, solution-oriented and non-ideological. At the very least, Windows programmers will concede the faults of their culture and say pragmatically, "Look, if you want to sell a word processor to a lot of people, it has to run on their computers, and if that means we use the Evil Registry instead of elegant ~/.rc files to store our settings, so be it." The very fact that the Unix world is so full of self-righteous cultural superiority, "advocacy," and slashdot-karma-whoring sectarianism while the Windows world is more practical ("yeah, whatever, I just need to make a living here") stems from a culture that feels itself under siege, unable to break out of the server closet and hobbyist market and onto the mainstream desktop. This haughtiness-from-a-position-of-weakness is the biggest flaw of The Art of UNIX Programming...

Posted by Adam on 18 December 2003 - 8:41 PM

Wow, David, thanks for the pointer to that article. I found it very interesting indeed.

If you take the American-Japanese differences a little further, and look at biological diversity, it makes sense that two communities would come up with different customs if they were not in contact, and then later view each other as really different. But at the core of the two cultures are humans with basically the same strengths and faults.

While Windows has come a long way, I don't feel uncomfortable saying that as recently as 5 years ago, Windows was built on a "house of crap" -- an unstable kernel built without attention to how long it would run or the types of activities it would support. Unix has always been concerned with a quality process space with assurances on protection and kernel stability.

Unix systems have developed very nice GUIs that let you launch programs from graphical interfaces. I think the GUI that most imitates Windows is Lindows.

Finally, let's admit that Microsoft didn't invent the GUI, end-user-friendly approach they're credited for. It was Xerox, and then Apple, and everybody else has basically copied it.

Viewd that way, a nice GUI on a stable foundation is what Linux can and should offer. And the open-source approach is surely a winner.

Posted by rkc on 19 December 2003 - 7:08 AM

First, although I think Joel makes a convincing case for a number of his arguments in his article, I don't agree with everything he says. But, it does seem very clear that if Windows gives you nothing else, it does give you consistency between applications. Ctrl+C is always going to copy when I'm in Windows, no matter which app I'm running. Similar statements cannot be made for any of the Unix GUIs I've used.

Here's the part of the article I found most disturbing. This is a direct quote from Raymond's book: "Classic Unix documentation is written to be telegraphic but complete... The style assumes an active reader, one who is able to deduce obvious unsaid consequences of what is said, and who has the self-confidence to trust those deductions. Read every word carefully, because you will seldom be told anything twice." Now, in our heart of hearts, all of know that this is a blatant falsehood. Man pages are often poorly written. This isn't because the writer "assumes an active reader, one who is able to deduce the obvious unsaid consequences of what is said," but because the author of the program doesn't like to write documentation and does so poorly when forced to do so. Taking an obvious problem and embracing it as part of the ethos of UNIX is a bad idea. A good idea would be to write better documentation, and that should be what Raymond advocates. I won't speak to why he doesn't; perhaps he's too close to the issue to see the problem. Also, I'm not saying that Windows has great documentation. In general, I've found it to be fairly poor as well. However, the various UNIX flavors have a reputation for being obtuse and hard to use. One obvious step on the path to overcoming this reputation is to better document things.

Alright, that's enough of a rant for now. Time to get back to work.

Posted by david on 19 December 2003 - 8:52 AM

I agree that there is something to be said for consistency, and the Windows "you have to play this way if you want to map your window onto the screen" mentality does help out. The fact that every app in Unix *could* respect a convention certainly doesn't mean that they do -- emacs is a great example. Copy and paste could be (easily) remapped to any keystrokes but the behavior of emacs is initially very unexxpected.

Posted by rkc on 20 December 2003 - 5:47 AM

 
Recent Posts About the Author Navigation

David is an occasional blogger, software engineer, Nintendo fanboy, liberal, news magazine addict, voracious TiVo user, and bibliophile. He was born in St. Louis, grew up in southern Indiana, and returned to St. Louis to attend Washington University. He hasn't managed to escape yet. He's a fan of free wine tastings, too many tv shows to name, and eating out.

David makes his living developing web applications used internally by his employer. He doesn't blog about work because he's heard too many stories about that causing workplace troubles.

There's more on the about page.

Recent Comments
Recent Photos
© 2000 - 2006 David Warner, et. al.