The software engineer's bookshelf

Summary

Every so often I see threads on various software engineering websites asking for lists of book recommendations. Over the years I’ve built up quite a decent collection based on those lists ranging from how to structure code to following your heart.

Here is my aggregation of recommended must reads for every software professional:

Coding

Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman
David Hoover, Adewale Oshineye

A book on software craftsmanship. Learn to embrace the craft of code and exceed expectations of your customers, coworkers, and self. Targeted at new developers, but everyone can really benefit from this.

Clean Code: A Handbook of Agile Software Craftsmanship
Robert Martin

Learn how to communicate and write easy to follow self documenting code.

Code Complete: A Practical Handbook of Software Construction, Second Edition
Steve McConnell

An extremely long, but relatively easy read. This book contains an incredible amount of topics guiding you to writing better code.

Design Patterns: Elements of Reusable Object-Oriented Software
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

A classic patterns book that provides typically simple solutions to regularly occurring design problems. Uses c++ for example code, but easy enough to follow with any sort of object oriented programming knowledge.

Refactoring: Improving the Design of Existing Code
Martin Fowler

Learn the techniques of effective refactoring.

The Architecture of Open Source Applications
http://www.aosabook.org/en/

A collection of writings from various popular open source projects and their design/architectures.

The Design of Everyday Things: Revised and Expanded Edition
Don Norman

Learn how to appreciate and understand good & bad design. Understand concepts like discoverability, constraints, and feedback.

The Pragmatic Programmer: From Journeyman to Master
Andrew Hunt, David Thomas

46 indispensable tips for software professionals that help guide you to writing better code and being a better team member.

Professional development

How to Win Friends & Influence People
Dale Carnegie

Life skills book. Learn how to authentically interact, appreciate, and ethically manipulate people.

Meditations
Marcus Aurelius

Many simple ideas and explanations to help you deal with everyday life and figure out what is truly important.

Pitch Anything: An Innovative Method for Presenting, Persuading, and Winning the Deal
Oren Klaff

Learn how to read situations and take control. Audio book is recommended, Oren is a great story teller.

The Alchemist
Paulo Coelho

Through the the journey of a young shepherd named Santiago you should learn about following your heart and finding your way in the world.

You Can Negotiate Anything: The World's Best Negotiator Tells You How To Get What You Want
Herb Cohen

Learn how to deal, react to, and resolve difficult situations.