Emily Bache pracuje w branży od ponad 20 lat. Na co dzień zajmuje się trenowaniem zespołów programistów w zakresie dobrych praktyk związanych z agile. W naszym wywiadzie opowiedziała więcej na temat swojej pracy oraz podejścia do projektów oraz podzieliła się wiedzą w zakresie złych praktyk, które często dezorganizują prace w firmach i startupach. Zapraszam do lektury.
You are an experienced Agile trainer and promoter of the „Samman” method. What is the „Samman” methodology and who is it aimed at?
Technical coaches work with software development teams to help them adopt better coding practices. The Samman method is a concrete approach that many technical coaches use. The focus is on iterative and incremental development practices. The Samman method has two main parts: learning hour and ensemble working.
In the learning hour the coach uses exercises and active learning techniques to teach the theory and practice of skills like Test-Driven Development and Refactoring. In the Ensemble sessions the whole team collaborates together with the coach in applying these development techniques in their usual production codebase.
The expected outcome is that teams work more effectively and consistently with iterative and incremental development techniques. Ultimately the organization becomes able to build new features in their software with a shorter lead time and higher quality. You can find out more about this coaching method on the Samman Society website.
Emily Bache jest jedną z prelegentek tegorocznej konferencji Infoshare 2022. Bilety na to wydarzenie z 15 proc. zniżką możesz kupić tutaj.
Can you define what good programming practices are for you?
I teach a lot of different techniques depending on the situation of the team I’m working with. A common theme is the ability to work in small, safe steps, sharing your work often, and designing code in such a way that enables you to respond to change. You want to have a codebase that you feel comfortable and happy working in, and that lets you quickly take advantage when you spot an opportunity to change something and create value for users.
It seems that you hear about good practices everywhere, yet many programmers write „spaghetti code”. What do you think is the most common reason for having bad practices?
I’ve certainly worked with a lot of developers that have “spaghetti code” and are not enjoying working on it. Their organizations are also suffering from the high cost of changing that software. I think there are two main reasons for this situation. Firstly there can be a lack of skill. Developers may not realize there are safe ways to improve the code, or perhaps if they do, they are not skilled enough to do it. Secondly there can be a problem with culture. Even if developers are skilled at improving code design, they won’t do it unless this behaviour is encouraged and rewarded.
So should programmers, engineering teams or team leaders of software development companies be trained directly to promote good practices?
All of the above! Everyone needs to understand what good looks like and pull together in the same direction.
How best to promote good practices, programming principles?
The most effective approach I’ve seen so far in my career is technical coaching at the development team level, together with agile and leadership coaching of the organization as a whole. Developers need to learn new skills and ways of working, and the rest of the organization needs to learn agile ways of working too. I often see organizations wanting to make improvements to lead times and deployment frequency and hiring a bunch of agile coaches for the process and leadership, but forgetting that developers need coaching too.
There are also some pieces of technical infrastructure that need to be set up in a way that enables developer collaboration. I mean infrastructure to support trunk-based development, ensemble working, continuous integration, continuous testing, self-service deployment etc. Developers need new skills but also to be in an environment where it’s easy and encouraged to do the right thing.
What can companies do in this regard, and what can programmers themselves do?
Decision makers could do worse than pay attention to the book “Accelerate” by Nicole Forsgren et al. There is a lot of advice in there that is backed by credible research about real companies.