Software development is a social activity that involves a lot of interaction with other people. On top of that, it is changing very fast and keeping up the latest changes and trends is a challenge.

Having said that some patterns, trends, things never change and in fact they are the re-iteration of the ideas from past. Sometimes, they are just the implementation of great ideas and theories that were not possible to deliver but now possible.

In this context, I recommend some classics here in case you really need to understand where things are coming from and what they really are.

The Pragmatic Programmer

“The cool thing about this book is that it’s great for keeping the programming process fresh. The book helps you to continue to grow and clearly comes from people who have been there.” — Kent Beck

“I found this book to be a great mix of solid advice and wonderful analogies!” — Martin Fowler

The Pragmatic Programmer: Andrew Hunt, David Thomas: 8601404321023: Books

Clean Code

“Even bad code can function. But if code isn’t clean, it can bring a development organisation to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn’t have to be that way. “

Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin)

Velocity: A Business Novel

A really good novel on business transformations and lean production. You may find a lot similarities in your startup culture and development lifecycles while reading this great story.

Velocity: Combining Lean, Six SIGMA, and the Theory of Constraints to Accelerate Business Improvement: A Business Novel

Building Evolutionary Architectures

The fast paced business environment and change is being the only constant in today’s world, Evolutionary Architecture is the most exciting idea I have been following for last couple of years.

I have had a chance to attend The O’Reilly Software Architecture Conference in 2017 and this idea become even more eye opening. I strongly recommend this if your organisation is in the transition of going from Monolithic to Microservices Architecture.

Building Evolutionary Architectures

Building Microservices

“Distributed systems have become more fine-grained in the past 10 years, shifting from code-heavy monolithic applications to smaller, self-contained microservices. But developing these systems brings its own set of headaches.” We cannot really avoid talking and building Microservices in this age. Why not reading it from experts?

Building Microservices

Beyond Legacy Code

I have listened a podcast on .NET Rocks! vNext which has featured the author of this book. As we always end up working with legacy software in one way or another, having these recipes as a book is a great way to attach that problem

Beyond Legacy Code: Nine Practices to Extend the Life (and Value) of Your Software

Domain Driven Design

This all-times classic is going to be around for a long time. Making sensible design decisions would require a lot of experience but first of all knowing the theory behind good designs is a must have.

Domain-Driven Design: Tackling Complexity in the Heart of Software