Elias Nogueira

@eliasnogueira

5 books I'll read to facilitate Software Engineering practices

A plan to facilitate developers on their journey

The background

In my new journey, as Agile Coach (yes, Agile Coach), I have a big challenge for the first quarter: facilitate, mentoring and coach technical people on agile teams.

You must be thinking: where the technical lead or something related?
So, we have few tech leads inside the teams and I also believe, like you, that we have to some tech manager or any position related.

Today we have 21 agile teams with around 60 technical people (programmers and testers). Some of them are really good at programming and testing software, some of them aren't.

What's my plan to start

First I'm inside some teams (like a new member) helping them to achieve some technical lack, mainly about quality and testing practices following the mindset and application of continuous integration and continuous deployment practices.

I believe that Agile Coaching Competency Framework from Lissa Adkins will help me a lot. So I immediately remembered from this post from AgileForAll to different ways to step into an agile coaching approach.

I decided to create a path to help the teams to achieve the best results they can as a team and as individuals. The figure below is the complete plan that will start with Technical Mastery as a Domain, following the Facilitation process and after the Mentoring and Teaching as a Content.

I'm a Quality Engineer [QE](and indirectly a developer that know how to develop software) and I know how hard it'll be teaching some programmers but facilitating, mentoring, teaching and professional coaching to others QE is in my blood.

With this plan in mind, I must review some concepts about software engineering. Some I know and I apply day by day, some will be a challenge for me.

Which books I chose

We need to start simple, but not so simple…
All the time, when I talk with developers about some practices and them need to skip a few steps (believing that they already know some steps) I mention the new The Karate Kid movie when the master teachs a simple thing: Jacket on, Jacket off.

We need to learn the base first, or as experienced developers, remember some base steps and how they are important like some design patterns, algorithms and so on.

Clean Code: A Handbook of Agile Software Craftsmanship

One of the must-read books for software developers. When I read this book (a long time ago) I change completely the way I write code, so I think the developers will change their way to write code.

I gonna revisit all concepts of Clean Code and start to talk with developers in terms of how easy will be their understanding of code.

Working Effectively with Legacy Code

We have a L.O.T of legacy code, not in Java or another programming languages for financial institutions, when I talk about the legacy code I talk about Clipper (yes, this old guy).

For legacy code in Clipper or Java (that's our languages) all developers must have in mind that not all code will turn into a new functionality or changed to a new technology, so we need to [carefully] change the existing code and turn it in a more readable and error prone-code, covering the code with tests.

Design Patterns: Elements of Reusable Object-Oriented Software

Have you chosen to work with software where you write code most of them in time? If your answer is YES you must know Design Patterns.

Probably one day (at the university, conference, work, etc…) you have heard about GoF (Gang of Four) and, no doubt, it is the best book about OO and Design Patterns.

When we have, at least, a minimum architecture and application of DRY and others principles of software development Design Patters will help us to write flexible and reusable code and design. Even most of the code examples are in C++ it worth the reading.

I'll gonna use the 23 pattern described in the book to facilitate some design and changing decisions.

Clean Architecture: A Craftsman’s Guide to Software Structure and Design

Every software (a decent one) have an architecture and sometimes different paradigms of programming (OO, functions, structured) and a good design. This book will help me, and the developers, to choose the right paradigm for out context and design principles (single responsibility, Liskov substitution, dependency injection, etc…)

Soft Skills: The software developer’s life manual

The last one book, and not less important, about soft skill.
This topic has helped me to be a better professional and I can bet you help you.

This book covers a lot of different topics (soft skills) and I think I'll just use more the chapters 3 — Learning and 4 — Productivity with developers to boost this two topics.

Have you faced something related? Let's talk and exchange some experiences at my Twitter, Facebook or Linkedin account.

More by Elias Nogueira

Topics of interest

More Related Stories