I hope you can find something interesting in this list. (Books I considered not related to software development are excluded.)
2009
- [!!] Made to stick - why nobody remember company mission statement right after they hear it, but everyone know urban legends? It's a very practical book telling why it happens and how to make you ideas spread. The book of the year.
- [!] Refactor your wetware - great collection of ideas about how to improve and rewire your mind. Contains a lot of interesting references to other books. Can be a life-changing book!
- Don't make me think - web usability 101. Awesome reading. Nice pictures. I wish I had read this book years ago.
- Presentation Zen - make presentations like Steve Jobs :) It's real.
- Domain Driven Design - software design as it should be.
- Refactoring to patterns - the name says everything. Refactoring + patterns.
- Real World Haskell - hands-on book about Haskell. I haven't finished it though :(
- User stories applied - a guide how to use user stories in XP and Scrum.
- Manage it! - practical agile project management.
- The Humane Interface - interesting and sometimes surprising view on human interaction with computer interfaces.
- Developing Multi-agent Systems with JADE - makes sense to read only if you like multi-agents or use JADE.
2008
- [!!] My job went to India (was renamed to The Passionate Programmer) - very honest and realistic view on programming. Nothing about coding, only real-life pieces of advice. This is like The Pragmatic Programmer 2nd no-technology-edition. The book of the year.
- [!] Getting real - concise and opinionated book about web development and software development in general. It's awesome. It's free and available online in HTML format.
- Ruby Way - my favorite ruby cook-book. I still read it every now and then.
- Effective Java 2nd edition - a must-to-read book for every java developer. (Even if you've read 1st edition.)
- Implementation patterns - for me it's a bit unusual, but very interesting view on programming. Kent Beck can always take ordinary things and turn them around. This is Small Talk Best Practices rewritten for java.
- Analysis patterns - code is not the only thing you can reuse. Conceptual models might be more appropriate. Martin Fowler's first book. I'm a fan.
- Clean code - you should really care about your code. Agile Principles, Patterns, Practices was better, though.
- Release it! - real-life description how to create web applications which don't fail after going into production. (This book is focused on java.)
- Pragmatic SVN - concise and pragmatic guide to SVN.
- How to become a highly paid corporate programmer - controversial book. I didn't agree with a lot of things. That's why I kept reading.
- Scrum and XP from the trenches - real-life view on Scrum. Concise and easy to read. It's free to download from infoq.com.
- A Guide to the PMBOK - "old-school" ideas about management. Boring to read but very useful.
- Black swan - accept that there are unknowns you don't know about. Models we use to predict future will never really work. This is pragmatic nihilism.


I can't say for sure whether this diagram implies "design" not only as structure but also as activity. Probably, the main point of it is just "payoff line". If you redraw this diagram in terms of "features per iteration", you will get something like this.
From this diagram it's easy to see that the amount of features you can implement with "good design" is
After a certain point the harder you try to "improve" design, the worst result you get. In other words, there is also a limit of much effort it's worth spending on design. The worst part of it is that determining how close you're to "masturbation point" is always a judgment call. Basically you don't know where you are on the curve. Even when you feel you've crossed the point, there is always temptation instead of 