How to Simultaneously Focus on Software Development Process and Quality

[article]

In her Personality Matters series, Leslie Sachs examines the personalities and people issues that are found in technology groups from cross-functional, high-performance teams to dysfunctional matrix organizations.

Summary:

Engineers know the importance of process and quality, and many engineering disciplines emphasize quality control and quality assurance. Some people enjoy the challenge of focusing on quality, while others find it a necessary but less than exciting chore. Leslie Sachs looks at some of the factors that impact process and quality.

My father was an engineer and quality control expert. Quality was not just his area of expertise; it was also his way of life. I learned from an early age that waste was bad and costly from a number of perspectives. Whether we were planning a family vacation or fixing an old TV, my dad—as with many engineers—had only one mode of operating, and quality was implicit in all he did.

Many software engineers thrive on learning and mastering new technologies. These clever developers are experts in understanding emerging development frameworks and bleeding-edge tools. However, some of them also make a lot of mistakes. How can someone who understands complex logic also make a careless mistake when performing a routine chore?

Mistakes happen, and learning from them is a sign of maturity. While being careless and making slapdash mistakes may or may not be a sign of immaturity, failing to improve is certainly a professional liability. When it really matters, smart technology professionals ensure that they get their tasks right every time.

Process means creating a specific way to reliably complete the same task over and over again without a risk of making a mistake. Some people approach everything that they do with process and quality in mind. Others prefer the risk and excitement of achievement but see no value in putting up guardrails or IT controls. Guardrails are helpful when you are whizzing down a winding road in a fast car in the middle of the night. IT controls help the entire team develop software in a way that minimizes mistakes and costly rework.

How do you create this eclectic blend of process and excitement in your high-performance team?

Top-performing teams have members with diverse skills and views who still are able to focus on collaboration and teamwork. Agile development often has self-managing teams that result in highly productive efforts. Understanding the purpose of the team and its goals helps to ensure that everyone understands the importance of what is being done and the value of process and quality.

Some team members can be so competitive that they undermine the effectiveness of the rest of the team. You need to spot when personalities may adversely impact your organization and, at times, you may need to remove members who just cannot function harmoniously with the rest of the team. It can be very difficult to incorporate employees who always need to be “right” and individuals who have problems understanding others' points of view  And, the quiet colleague can be a challenge, too, if his demeanor is masking a passive-aggressive approach and he fails to meet critical deadlines. When coaching and directing discussion regarding their obstructive behavior is not possible, it may be more productive to have these people work independently as much as possible and then integrate their contribution without their physical presence at group meetings.

That's not to say that you need only to have quiet, cautious personalities in order to avoid conflicts. Taking some well-defined and calculated risks when you are writing software for a trading system is seen as  acceptable to professionals whose industry is based on complex, but rigorously researched decisions regarding cost-benefit ratio analyses. Similarly, smart people working on a life-support system for curing cancer in children will understand and value the importance of process and quality. Effective teams embrace their differences while still focusing on collaboration and communication.

Ensure that your team consists of capable members with diverse views and approaches. Ideally, you want a mix of both assertive and mellow personalities who are all committed to creating a group in which each person's voice is heard so that the final result includes everyone's expertise. Also, remember that clear articulation of the group's shared goal will often motivate the certain members of your team to collaborate more effectively.  Understanding the personalities, working methods, and communication styles of your team members will help you develop a much-desired high-performance team that is able to focus simultaneously on process and quality.

References
1. Aiello, Robert and Leslie Sachs. Configuration Management Best Practices: Practical Methods that Work in the Real World. (Addison-Wesley, 2010)
2. Cohen, Mike. User Stories Applied—For Agile Software Development (Addison-Wesley, 2004)
3. Beck, Kent. Test Driven Development by Example (Addison-Wesley, 2002)
4. Derby, Esther and Diana Larsen. Agile Retrospectives – Making Good Teams Great (Pragmatic Bookshelf, 2006)

About the author

AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.