Joel Spolsky recommends the following books to self-taught programmers who apply to his company and need to fill in some gaps in their training.
- Structure and Interpretation of Computer Programs
- The C Programming Language
- The Unix Programming Environment
- Introduction to Algorithms
The one that has me scratching my head is The Unix Programming Environment, first published in 1984. After listening to Joel’s podcast, I thumbed through my old copy of the book and thought “Man, I could never work like this.” Of course I could work like that, because I did, back around 1990. But the world has really changed since then.
I appreciate history and old books. I see the value in learning things you might not directly apply. But imagine telling twentysomething applicants to go read an operating system book that was written before they were born. Most would probably think you’re insane.
Update (16 November 2010): On second thought, I could see recommending that someone read The Unix Programming Environment these days even though technology has changed so much, but I’d still expect resistance.
How -do- you work then? Among all the other ways of doing things, don’t you ever write shell scripts?
For one thing, the book assumes you’re sharing a machine with many other people, competing for limited resources, as was the norm back then. Running commands with
nice
, deleting.o
files quickly to conserve disk space, etc. For another, in 1990 the command line was primary. The GUI was mostly a way to arrange multiple terminal windows. Now the GUI is primary, and the command line is an add-on for automation or miscellaneous tasks.I do write scripts, but I use PowerShell or Python, very different experience from Bourne shell.
I’d replace The Unix Programming Environment with Advanced Programming in the Unix Environment (by the late Richard Stevens). Still useful if you want to do systems programming in Unix and I think there’s a recent updated edition (by a different author),
I’ve worked through Linux Application Development by Johnson and Troan. That’s about as far back in time as I am willing to go anymore.
“The Unix Programming Environment” is the only book on this list I haven’t read, so I can’t really comment on it. It does sound dated. I note, though, that it’s not the oldest of the four.
For me and many others, the Unix platform has become increasingly important: so many applications are server-based now. Even if you chose to write scripts in PowerShell or Python, you may end up reading a lot of Bash.
Connecting this post with your post on old books, I often recommend Thomas Standish’s old “Data Structure Techniques” [ http://tinyurl.com/mzpjyl ]to grad students and others who want to read about data structures. That was a text we used as freshmen, but today’s students would look askance at it. It is still a great way to learn basic data structures without all the language-specific and other decorations in today’s DS books.
Yeah. You are correct. The book “UNIX PROGRAMMING ENVIRONMENT” is awesome. I got a old battered copy of the same recently. After going through the pages, I was awestruck with the information it held. Though it was compiled years before my birth. Its worth a reading. We can always apply and upgrade the techniques mentioned. I would suggest the book as a must read, for everyone who chooses UNIX.
I’m old enough to have read “The UNIX Programming Environment” when it was still fresh — and to have already known and loved UNIX even then. What I remember about the book is that it conveyed the UNIX approach/attitude/gestalt a lot better than anything else I’ve read. Indeed, it made the UNIX Way explicit for me, whereas up till then it had been a thing felt, but not really understood.
I still recommend it to people. But you’re right, I might be misleading them. I should reread the book, to find out whether I still find it at all relevant — and if so, to get an idea of which bits to tell people to take with a grain of salt.