Everyone said that visual diagrams would have helped them, not realizing that I would require diagramming in future assignments. I decided my students just liked to complain about anything that delayed them from getting to the keyboard. When I would not let anyone turn on a computer until everyone had successfully done a diagram for the program, students began helping each other so they could get to the computers faster. The more successful students were appalled that the steps in their diagrams were not always logically and/or efficiently sequenced. When I explained individually to students what was wrong with their organization, each one understood what to do. Soon, the students actually stopped complaining because they were no longer going crazy at the computer, trying to rearrange functions that had been done without connection to each other and without much logical thought. The diagram maps saved them a lot of programming time.
The theme tying these books, articles, and web sites together is that each contains some insight, skill, or bit of information that I feel is valuable for computer scientists. I've accumulated these recommendations over a number of years. The only specific source that I think I should mention is a nice packet of photocopies called The Way of the Net Warriors -- it contains a number of very good articles about research and writing. Unfortunately I don't own a copy of this packet, but using a borrowed copy I wrote down the titles of most of the articles, and some of them appear in this list.