These are the books that have helped me become a better programmer, no particular order:

Practical Object Oriented Design in Ruby
by Sandi Metz

A great resource about dependency injection.

Growing Object Oriented Software Guided By Tests
by Steve Freeman and Nat Pryce

Using tests to guide your software as well as the design of your objects, definitely worth the read.

Clean Code
by Bob Martin

How to write less code, keep it clean and clear. In my opinion, should be a must read for members on my team.

Head First Design Patterns

A very approachable take on the world of Design Patterns. A beast to get through, but easier than the classic Design Patterns book.

Elegant Objects
by Yegor Bugayenko

A primer on true object oriented code. Tips on OOP, that take a long time to discover on your own.