The Book All Salesforce Developers Must Read
Last year I had the priviledge of being a technical reviewer for Andy Fawcett's book, Force.com Enterprise Architecture, it was publised in September 2014. It's taken me a while to get around to writing about it, but if you're developing on the platform then you can't afford not to read this book.
Who The Book Is For
This book is primarily focused at developers on the Salesforce1 platform who are building ISV applications and dealing with the trials and tribulations that are managed packages. That said, it should be emphasised that a solid 90% of the content is relevant to all developers on the platform, and even curious admins should not shy away from it; there are some great hints on how to get the most out of the standard platform features which do not require code.
What Will You Learn
In a sentence: you will learn how to design and build enterprise-grade applications on the Salesforce1 platform, making them scalable and maintainable.
If you're not familiar with the enterprise patterns for Apex then this book makes for an excellent introduction to them, walking you through the various areas involved, but crucially, it applies the ideas as well, with the construction of a real application being constructed throughout the course of the book (this was of particular interest to me since it was based around Formula 1, a sport close to my heart).
The book also covers in detail the mechanics of managed packages, highlighting best practices for creating them and also what pitfalls you need to watch out for. If you're just getting started with managed packages then please, please read this before uploading that first release build, otherwise you could find yourself in a world of pain later down the line.
An area that's all to often overlooked in developing applications is providing APIs for external developers to integrate with, and this is given a lot of focus, which definitely made me think twice about some of my approaches to these areas. It deals with verisoning your APIs too and suggests ways in which you can update your interfaces without causing issues for developers working against older versions.
I wish I'd had this book in my hands two years ago. Andy's book is exceptionally well written, with a well defined progression and a casual style that never gets bogged down by technical detail (not to say that it isn't detailed!); it's enjoyable to read and if you get to the end of it and haven't learned anything then I'll buy you a beer at Dreamforce this year.