Just checked out a pretty fantastic book, The Productive Programmer by Neil Ford.
I’m only about half-way through it, but so far I find it fantastic. I read it at night before going to bed. This speaks of its readability, but it’s a bad strategy, since I get excited while reading it and want to try things out. Every night for the last three nights I’ve said to Bettina “man, I wish I’d read this book years ago”.
It’s obviously aimed at the developer, but I think about 40% of the tips in it are relevant to Bettina, who is a school teacher. The thesis of the book can be summarized as follows: The GUI makes things easier for a computer neophyte, but less efficient for the power user. As programmers, a major part of our work is data entry (we form the data in our heads, but it’s gotta get into the computer). So it behooves to put a little effort into making the data entry part more efficient.
He discusses various repetitive, boring tasks that chew up our time and attention, and then gives tricks to improve your efficieny, on windows, mac, and Linux based systems. He also discusses good algorithms for figuring out how much time to spend automating problems, and how not to shave yaks.
Me personally, I would expand his thesis to include end users. How much time do you spend working with your computer? Bettina is a school teacher and she spends at least 20 hours a week on the damn thing. Me I spend like 60. I think 20 is about minimum for anyone who works with a computer at all. So I think we’d all benefit from learning better computer work habits. Because the author writes to programmers however, he rightfully assumes a certain amount of computer savy. This might make the book unnaproachable for less technically literate users. I have a hard time judging that. But if you think you can read it, I highly recommend it.
It’s also inspired me to start posting the most useful productivity tips that I run across, so look forward to that. Does anyone know of an existing blog that specializes in programmer-productivity tips (I’m not talking language stuff here, just computer-human interaction)?