I often ask myself: "What can I do to improve my daily work, to become more efficient and a better developer in the non-technical sense?" In the end, it's all about being agile. But what does that mean? I assume you already know about the agile manifesto:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

The book "Practices of an agile developer" gave me some good tips on getting 'more agile'. It's not one of these books that give you just a detailed text about what those four lines mean, it's merely meant to be a guideline that will guide you through the day if you are working in an agile team.

Each section begins describing the non-agile way and then tells why this is bad and what you should do to get better results.

The best about the book is this, a PDF that summarizes all guidelines from the book with a short description. If you want to read it, you can grab a copy here.

I don't get money for this link, I just read this book and found it worthy to be mentioned here! In fact, I love the books from Pragmatic Programmers, I read Programming Ruby, Metaprogramming Ruby, The RSpec Book, Programming Erlang - Software for a concurrent world, Agile web development with Rails and I'm currently reading Pragmatic Thinking and Learning.