Things you must read if you haven't already

(or rather, "How to think like a software engineer and not a programmer"):
(and if you have read something on this list, shouldn't you read it again? :-)

Here is a list of books and papers that really are the baseline of software engineering knowledge that you need to know about.  You can still be a better-than-average developer not knowing all this, but if you've read most of these you are most likely to be an excellent developer.  And since programming productivity varies up 100x between any two developers, don't you think you should do everything in your ability to be at the top end of that curve? :-)

Famous Articles and Papers
  1. "No Silver Bullet: Essence and Accidents of Software Engineering" - Fred Brooks.  The most famous paper, period.
Important Books
  1. The Mythical Man-Month (Brooks)
  2. Peopleware (DeMarco & Lister)
  3. The Decline and Fall of the American Programmer (Yourden)
  4. The Practice of Programming (Kernighan & Pike)
  5. Joel on Software (Spolsky)
  6. Writing Solid Code (Maguire)
  7. The Pragmatic Programmer (Hunt & Thomas)
  8. The Art of Unix Programming (Raymond)
  9. Extreme Programming Explained (Beck)
  10. Test Driven Development: By Example (Beck)
  11. Refactoring (Fowler)
  12. Design Patterns (Gamma, Helm, Johnson & Vlissides)
  13. Rapid Development (McConnell)
  14. Programming Pearls, 2nd Ed (Bentley)
  15. The Rise and Resurrection of the American Programmer (Yourden)
      Seriously, go and read all of these.  You won't be sorry.

      Less Important, but still good books
      1. Software Engineering: A Practitioner's Approach, 3rd Ed (Pressman)
      2. The Elements of Programming Style (Kernighan & Plauger)
      3. Code Complete (McConnell) - haven't read the 2nd ed