Nowadays you can find lots of “must-read” lists about software engineering in general, as well as specific topic or language. All these years I had an impression that some parts are missing from the big picture, especially for the beginners. Yes, it’s important to know your current language of choice in depth, or be an expert in some tool or technology. But you probably also feel that some common knowledge exists, that is between “Hello World” / MVC tutorials and books covering specific topics. I was lucky to find one of such books a while ago and recently I have found another one.
Implementation Patterns by Kent Beck
I was introduced to Implementation Patterns a couple of years ago by my colleague Pavel. It’s an amazing collection of “how-to”s and recipes covering our day-to-day software design activities, but not on a high system level, instead it’s focused on a design of your classes / modules, clear naming and refactoring. It’s also very OOP-focused, but lots of principles are similar and can be used in FP.
Implementing Domain-Driven Design by Vaughn Vernon
iDDD book is my recent finding. I’m still reading it, but I can already say that it’s something I’ve been looking for a very long time. I have huge problems with bootstrapping new engineers without real enterprise experience (read: experience with big and complicated domain-specific systems). It’s so challenging to explain SOA and DDD principles, because expertise in those areas can be very limited and knowledge is subtle. Also it has nice introduction to Event Sourcing and Eventual consistency.
From now on I’m going to recommend these books to every single new hire or beginner who needs an advice. Go and read them if you haven’t ;-)