Over the years many managers have asked me to focus on creating processes and establishing expectations that are consistent and repeatable. As a good corporate citizen, I bought in and adopted the mantra. In hind-sight, I wish I had a quarter for every time I asked someone else to increase consistency and repeatability. My working-retirement could start tomorrow with those coins.
Consistent and repeatable? In the software development industry, where change occurs in the blink of an eye? These adjectives just do not complement the continually shifting demands and objectives of IT project stakeholders. One technological advancement and consistent and repeatable practices are as obsolete as the now defunct technology.
An approach that I find much more feasible is: simple and adaptable. Structure is crucial to software development and testing. Check lists ensure production environments remain stable and communication plans keep stakeholders informed of upcoming changes. Simple processes are easy to understand, and the spirit of the instruction allows for adaptable decision-making. Unfortunately, human nature motivates us to “improve” on processes. Left unchecked, subtle tweaks and clarifications transform simple guidelines into complex and rigid constructs that are difficult to comprehend and maintain.
“Life is really simple, but we insist on making it complicated.” ~ Confucius
One example of this complexity, within the software testing industry, is the development of elaborate systems to coordinate defect management efforts and track testing progress. Simply stated, we develop software to help develop software. The irony of this dilemma should not be overlooked. Software test professionals manage the fallout of scope creep, delayed timelines, and shifting priorities as a part of our daily efforts. We in turn (consciously or not) impose those same frustrations on ourselves by adding the nice-to-haves and metric-of-the-moment capabilities to our work-enabling technical system(s).
Eventually the processes created to improve efficiency within the software development lifecycle become barriers to success. Over-engineering test processes introduces unnecessary complexity, as now you have teams (and associated cost) dedicated to overseeing that system rather than the primary work. Keeping processes simple frees resources (human, monetary, and technological) to focus on clarifying objectives and adapting strategy to meet the fluctuating needs of end users.
Successfully simple processes emerge when social and technical systems are in balance. Software development and testing are socio-technical efforts. Social (human talent, goals, team structure) and technical (workflows, technology, tools) systems combine to create the programs and apps that drive commerce, entertainment, and pretty much everything we do these days. Unfortunately, as the example above indicates, improvement efforts tend to focus on the technical side of the spectrum.
Here are four ways to strengthen social interactions and create simple, adaptable processes:
Ensure Goal Alignment Associated Social Skills: Communication, Adaptability, Coordination Determine whether the requested change supports project, departmental, and organizational objectives. Regardless of process efficacy, when goals are not aligned it is impossible to achieve success. Additionally, be sure to monitor for (and reject) nice-to-have changes that add complexity without tangible value.
Obtain Buy-In Associated Social Skills: Communication, Coordination, Supportiveness, Interpersonal, Teamwork Know who will be affected and ensure that all parties can weigh in on the change. Steps that work well for one team may cause undue hardship for another. Alternatively, when one group fails to act in a certain way it undermines the effectiveness of another. Discussion clarifies points of interaction, aligns expectations, and helps ensure process does not restrict progress.
Address Gaps and Overlaps Associated Social Skills: Communication, Problem-solving, Teamwork If the existing process is silent on a controversial detail and/or teams are working at cross-purposes, or duplicating efforts, a process change may be required. Failing to perform a specific step and performing the same step five times both undermine simplicity and project success.
Assess Value Associated Social Skills: Communication, Problem-solving, Adaptability, Coordination, Teamwork Periodically (i.e., quarterly, annually, or at the completion of an effort) review processes to assess the cost benefit of the overall process or steps involved. Be sure to identify and discontinue non-value add practices (i.e., obsolete metrics and rubber-stamp approvals) and be prepared to genuinely evaluate the need for costly tools and time-consuming steps.
Complexity does not appear, or disappear, overnight. Be mindful of the tweaks and details poured into your processes and leverage social capabilities and systems to assess the situation(s) at hand. Strong social interaction cultivates the trusting, supportive behaviors required to establish and maintain simple, adaptable guidelines.