A Solution Framework
The solution space we have traditionally inhabited is too narrow. Tools, frameworks, and methodologies are insufficient. We need to add the elements of alternative perspectives and respect for the human condition, along with transparent communication, to the mix to identify lasting solutions that work for everyone.
Figure 2-1 presents one way to look at the range of issues of the software development space.
Figure 2-1 The range of issues in software development
As with any human endeavor, software development starts with individuals. Each has his or her own unique set of values, motives, attitudes, and skills based on experience, training, and aptitude. Everyone else's personal environment is just as real as yours. Any affront to that environment, any lack of appreciation for "where you are coming from," is not taken well. Emotions are far more tactical, but just as real and important to consider as the longer-range motives and attitudes.
When these individuals gather into groups, we start to deal with interaction and the formation of relationships. We've all been involved with relationships that have been effective and with those that could stand improvement. The goal is to move into relationships that are positive, that embody mutual respect and a sense of belonging.
When organized into teams, we then are dealing with the coordination of a diverse set of individuals. Teams lean on systems and guidance to help them align toward a common vision. This is the first step teams take to solve a problem.
With appropriate direction, these teams will work together to solve problems for stakeholders. Not only have they evolved systems for interaction, but they are now working toward a specific common goal. The intent is to progress toward that goal and eventually an ability to determine whether the endeavor was a success or a failure.
This progression is most effective when taken in order, with nothing implicitly left to chance. Each piece taken for granted is an invitation to failure, particularly if success and failure is measured in dimensions beyond having shipped on the target date.
When looking at the breadth of issues across this range, from individuals through to stakeholders, typical approaches such as the incorporation of a packaged process framework or the purchase of a tool tend to provide superficial support at best. Although they can be seen as critical for structuring and managing huge amounts of data on large projects, all tools depend on appropriate and accurate data for good results. For requirements or design tools and for packaged processes, the overall results will be no better than the quality of the information used as input. This data and information comes from interactions across the team.
Tools, frameworks, and methodologies tend to emphasize those aspects of organization that are in the Teams area in this figure. These are necessary, to be sure, but hardly sufficient. Have you ever been involved in the deployment of a tool or methodology without 100 percent buy-in? Many purchased solutions of this type are no longer used even a year after purchase. It is the team that chooses whether to use the tool, or to learn how to use it effectively.
Our ongoing reliance on tools and methodologies is misguided in that it is largely prescriptive. The issue is not the original intent, but how this intent is translated into practice by most teams. A superficial understanding of the rationale and applicability behind well thought-out approaches drives most teams to implement these changes in a dysfunctional manner.
It is all about the people.
Software Is a Team Sport
Our motives, attitudes, skills, and team relationships are all fair game to explore and leverage as opportunities for change. We need to take personal ownership and responsibility for the results of our behaviors.
Effective software teams are more than a management issue. We cannot equate software development to the assembly-line floor, despite attempts to do so.
Procedures can serve as a guideline for what to do and provide structure for managing our information. However, they are insufficient to guarantee success in all but the most trivial cases. Projects and tactical situations are all different. A key component of these differences is the evolution of relationships as teams work together. If not carefully managed and nurtured, these relationships will almost surely erode over time.
Software is a creative endeavor done with real humans (with emotions, feelings, needs, and concerns that are both diverse and important). As Maslow suggests in his hierarchy of needs, we cannot rise into the ranks of optimized teams until our physiological and safety needs have been properly dealt with.
We need to take responsibility for explicitly and consciously managing our relationships in our teams, and to proactively design the approach we use as a team to develop software. This demands participation from all stakeholders involved and appreciation from all parties of the contribution (technically and emotionally) from everyone at the table.
Communication needs to be precise, open, and transparent. Hidden agendas cannot be tolerated, and we all need to be more effective with the skill of active listening. We need to be capable of empathizing with the positions of others before we pitch our case in discussions. Listening needs to be more than biding time to formulate our counterargument, more than waiting for an opportune moment to blurt out our perspective, and more than tolerating that noise from the other person's mouth.
Each person needs to respect differences within the group and be sure to address concerns from these different perspectives. Vive la difference. These differences make for unique and innovative solutions, long-lasting and strong relationships, and teams that will succeed now and in the future.
We all need to be able to consider the ramifications of our actions and understand the rationale behind what we are being asked to do. If something does not fit well with our mental model of appropriateness, we need to be able to speak up. Silence is not golden, and the absence of conflict is too often apathy. If the fit cannot be made, we need to be prepared to talk with our feet.
Although this approach is a tougher and deeper commitment to change, the solution is much longer lasting and significantly more rewarding. We need to stop playing with the symptoms. There really never will be a silver bullet.