Coaching Development Teams

A software development team is a kind of unique beast. It's a place where enthusiasm can drive great individuals to work 16 hours a day and having fun doing it, to deliver brilliant products beating expectations. But is can also be an unholy mess where everybody is just doing something, or maybe just adding crappy lines of code on the top of some others lines of code building a useless giant behemoth that could make you waste zillions.

Obviously, most projects are somewhere in the middle between heaven and hell, but this means that good projects can still become better projects and bad projects can also go worse.

How to make a development team successful?

As a consultant, I can only have one answer: "It depends…", meaning that there is no single recipe, and also that on-site observations and diagnoses are the primary steps when coaching development teams. Many times, the resulting to-do list is huge and spans from lack of organization, lacks in individual skills, bad logistics, wrong individual habits, flaws in the communication stream, wrong tools or architectural choices, wrong (or non existing) process, and so on. By adopting a lean and agile approach, every issue must be addressed removing all the slowing factors, one by one. This means doing things (like …coding, testing, and so on), explaining things by setting up a structured training program or simply applying training-on-the-job techniques with peers, documenting what needs to last in the most efficient way, exploring new methodologies and technologies and changing what needs to be changed. If it does not sound ambitious enough, I also want me and the team to have fun doing this.

Managing the development process

As you might note in the trainings section, I have a preference for Agile methodologies. However, the primary goal is to reach a better overall efficiency of the team. This must be achieved pragmatically, by choosing the right tool for the job. Sometimes it can be a highly structured RUP customization, sometimes it can be a very lean agile process, sometimes a pure XP implementation. In some other cases, a process definition can be an intermediate step, to move towards a more efficient one, after a better confidence is achieved.

Managing technologies

Technologies play a key role in every project. If they are not mastered correctly, the resulting pace is going to be slower. A group too biased towards doing instead of learning and doing better can be less efficient in the long run. Conservative choices are often considered to be safer, but often seeding a slow decay in productivity. Newer technologies might have a specific learning curve, that must be matched with the project goals, keeping in mind that every technology has a specific impact on the way the work should be performed and organized, thus resulting in different roles, pace, process and organization.

Managing people

A team is a group of individuals interacting to develop software applications. The nature of those interactions is often what defines a successful team. Leveraging existing interactions and defining more efficient ways to communicate can really boost efficiency and creativity, resulting in better ideas delivered in a shorter time.

Guarda questa pagina in italiano

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License