Head First Software Development

A lot of good people have screwed up a lot of well intentioned software — you already know you don't want to be one of them. Head First Software Development pulls together years of software development experience to give you the hard lessons learned by people who have written software before you (or have tried really, really hard to).