Biculturalism: This is old Spolsky, but it’s still good Spolsky —
In this essay from 2003, Spolsky responds to Eric Raymond’s just-published (at the time) book, “The Art of Unix Programming”. That book is a classic that just drips with old-school Unix disdain for anything else. (Don’t confuse that statement with negativity — the book is excellent and a must read for any programmer. You can read it for free at the link above.)
Anyway, Spolsky praises the book for its general content, but takes exception to Raymond’s general tone:
Raymond does attempt to compare and contrast Unix to other operating systems, and this is really the weakest part of an otherwise excellent book, because he really doesn’t know what he’s talking about. Whenever he opens his mouth about Windows he tends to show that his knowledge of Windows programming comes mostly from reading newspapers, not from actual Windows programming. That’s OK; he’s not a Windows programmer; we’ll forgive that. As is typical from someone with a deep knowledge of one culture, he knows what his culture values but doesn’t quite notice the distinction between parts of his culture which are universal (killing old ladies, programs which crash: always bad) and parts of the culture which only apply when you’re programming for programmers (eating raw fish, command line arguments: depends on audience).
In general, Spolsky makes a good point about the difference between commercial programs and open-source programs: commercial programs are written for users to enjoy. In contrast, open source programs are usually written for programmers to enjoy. Big difference.
Suppose you take a Unix programmer and a Windows programmer and give them each the task of creating the same end-user application. The Unix programmer will create a command-line or text-driven core and occasionally, as an afterthought, build a GUI which drives that core. This way the main operations of the application will be available to other programmers who can invoke the program on the command line and read the results as text. The Windows programmer will tend to start with a GUI, and occasionally, as an afterthought, add a scripting language which can automate the operation of the GUI interface. This is appropriate for a culture in which 99.999% of the users are not programmers in any way, shape, or form, and have no interest in being one.
It’s pretty true when you think about it. I’ve written several things that could be released under the GPL, and — in each instance — I was thinking, “I bet there’s a lot of developers that could use this.” Never did I write anything where I thought, “This will make my mother’s life easier.”