The quality of the workday cannot be counted—but it counts. This is true for all professionals, including software developers and development managers. Moreover, this is very appropriate for agile teams, because agile teams work toward delivering working software over short iterations at a sustainable pace.
The quality of the workday depends on several factors. These include people factors, hygiene factors, and factors related to tools and processes. Examples of people factors are health, attitude, self-esteem, personal values, leadership style, plus the skills and competencies of team members. Hygiene factors don’t mean how often your programmers bathe, but rather the work atmosphere, corporate culture, company policies and work infrastructure.
From a broken coffee machine to a water fountain that dispenses minuscule amounts of water every second, daily frustrations in working environments can hamper the emotions of team members. Let me add to the list the infamous printers that take a few extra minutes because of constant paper jams or low toner (and nobody knows where to find more toner or is willing to change the cartridge). Sound familiar and very obvious? This is true in the case of people factors too.
People factors and hygiene factors influence the proverbial “individuals and interactions.” According to the Agile Manifesto, agile development teams value “individuals and interactions” more than “processes and tools.” Of course, processes and tools can impact individuals and interactions either positively or negatively.
Agile teams need tools and processes that can enable and foster collaboration among team members, with the goal of improving productivity. Interactions among individuals make sense only when individuals remain efficient or focus on efficiency. Tools can improve efficiency when team members find ways to automate and optimize manual tasks in software projects.
An obvious step is to optimize the time spent by team members in information retrieval using tools or through interactions among themselves. How do we do it? We can do it by observing teams and understanding when and how they attempt information retrieval or initiate interactions to obtain information. I observed this in some of my projects and collected all information retrieval tasks where efficiency could be improved. Some of these involve questions related to:
• The overall status of tasks
• The number of defects reported in the current iteration
• Trends on those defects
• The status of build and build verification
Charts, task boards and information reflectors can improve efficiency in teams. Charts and task boards can improve the quality of collaboration too. In fact, with these mechanisms in place, team members will get an opportunity to gather required information efficiently, and talk about dependencies and other issues. This will improve the quality of interactions.
Also, tools for unit testing, static analysis, defect tracking, test automation and build management can positively impact a team’s efficiency. This applies to processes too. Agile or lean processes help team members move forward from iteration to iteration, realize the benefits of continuous improvement, and ensure positive reinforcement.