Agile Technical Practices Distilled

A Learning Journey in Technical Practices and Principles of Software Design


This is a book on Agile technical practices. The intent of this book is to show you how to improve your overall software design skills. Mastering these skills will get you one step closer in your journey, whether that’s to join a top-class Agile development team, take on more projects and responsibility, or progress in your professional development.

We (the authors) have been working as software developers and coaches over the years, altogether accumulating more than half a century of experience. During this period of working in the trenches teaching software design, we have created a lot of content and shared many anecdotes of real professional life. Based on the feedback we’ve had, we thought it made sense to organize all the information in a single place, following a logical sequence and creating a learning journey.

In Agile Technical Practices Distilled, we touch on all the principles we consider most important to master software design. All too aware that in our profession, too much detail can obscure the ability to learn, we have carefully selected our topics of focus. You’ll learn individual practices (namely, XP practices like TDD, refactoring, pair programming, simple design, and more) in a step-by-step journey.

We are very excited to share with you our personal selection of content and the lessons we have learned the hard way. It is our genuine hope that in Agile Technical Practices Distilled you will find many new and useful tools to put in your software design toolkit.

Meet the authors

Pedro Moreira Santos

Pedro Moreira Santos

Cokaido, Barcelona (Spain)

Pedro has over 25 years of experience in the software industry. He has worked in finance, aviation, consultancy, media and retail industries and built a wide range of software, ranging from embedded systems to cloud-based distributed applications.

He has lived in Portugal (Lisbon), Brazil (São Paulo), Spain, Netherlands (Hilversum), Belgium (Gent), London (UK) and currently he is based in Spain (Barcelona), where he founded Cokaido and focuses on educating and inspiring other developers. He has spent hundreds of hours in pairing sessions as well as coaching and mentoring developers at all levels of proficiency. His tutoring experience covers almost every aspect of software development: programming basics, object-oriented and functional design principles, refactoring legacy applications, pragmatic testing practices, architectural decisions and career development choices.

Marco Consolaro

Marco Consolaro

Alcor Academy, London (UK)

Describing himself as a Software Craftsman, Systems' thinker, Agile technical coach, entrepreneur, philosopher, restless traveler – all blended with Venetian humor – Marco learned coding in Basic on a Commodore when he was nine years old. He graduated from Venice University in 2001 with a degree in Computer Science.

Since then, Marco has worked in Italy and the UK, always looking to learn something new. When his journey led him to the Agile principles, he quickly realized the effectiveness of such an approach for both technical and organizational areas. He now strongly believes that an iterative approach based on trust, transparency, self-organization and quick feedback loops is the key to success for any team in any discipline.

His dream is to see these principles understood and implemented at every level in businesses and public administrations.

Alessandro Di Gioia

Alcor Academy, London (UK)

In the past 18 years Alessandro has helped a variety of companies (from small start-ups to large enterprises) embrace Agile technical practices.

He has worked in Italy and Norway. For the past few years he has resided in London.

His professional life changed when he came across Agile methodologies, especially eXtreme Programming (XP). He likes concise, expressive, and readable code as well as making existing solutions better when needed. He is always trying to learn better ways of designing asynchronous distributed architectures and crafting software, in either an object-oriented or functional style.

Although Alessandro considers himself a forever learner, he is also a coach and a mentor because he loves to share his experiences with others.