A standard work by one of the Inventors of the Erlang Programming Language Joe Armstrong. Though it mainly focusses on programming Erlang in a robust and practical manner it also covers and explains many aspects of asynchronous programming principles.
Not only a great introduction to the incredible Erlang Programming Language, this book is brief and straight to the point on many concurrent aspect of writing software. With over 20 years experience with developing this style Joe Armstrong shares not only important insights but also teaches you to create architectures in a distributed, robust and fail-proof manner.
Whether you plan to actually use Erlang in the end or not I highly recommend this book because it doesn’t only introduce you to this way of thinking, it goes into deep length of making you understand all implications and problems of the architecture you are building your software with. While many other cultures advocate “start building”, this book makes you understand while for some system it is much better to first think about the problem hard for a while and only start working after.
Probably one of the best books on system architecture written ever – with a highly practical approach to problem solving.