The very first value in the Agile Manifesto draws a line in the sand. In it, the Agilists clearly state their belief that people are of greater importance in determining software project success than are processes or tools.
The software process community generally acknowledges the importance of people, but the processes they build do not always reflect such a belief. Like the toolmakers, the writers of processes often focus so closely on the completeness and robustness of the processes themselves that the ability of people to follow them is compromised. For example, a person may find that the role he or she is assigned by the process may require activities beyond his or her skills, abilities, or time constraints.
Compounding this problem, when people cannot see the value of the work products or activities that a process prescribes, they will consciously or unconsciously undermine or circumvent that process.
Process writers also tend to pay little attention to tools. While they acknowledge that the right tools can make any process more efficient, they do not routinely consider the available tools when designing processes. In light of this discussion about the effects of tools on process, such a lack of attention can have serious negative effects as the organization attempts to integrate a new process with an incompatible tool set.
The software process community generally acknowledges the importance of people, but the processes they build do not always reflect such a belief. Like the toolmakers, the writers of processes often focus so closely on the completeness and robustness of the processes themselves that the ability of people to follow them is compromised. For example, a person may find that the role he or she is assigned by the process may require activities beyond his or her skills, abilities, or time constraints.
Compounding this problem, when people cannot see the value of the work products or activities that a process prescribes, they will consciously or unconsciously undermine or circumvent that process.
Process writers also tend to pay little attention to tools. While they acknowledge that the right tools can make any process more efficient, they do not routinely consider the available tools when designing processes. In light of this discussion about the effects of tools on process, such a lack of attention can have serious negative effects as the organization attempts to integrate a new process with an incompatible tool set.
So we see that of people, process, and tools, all are important to our projects’ success. they are the three legs on which projects stand. To make one leg longer or shorter than the other two would make the project unstable, and eliminating any of the three would cause the project to fail. The success of our projects depends on all three.
The role of people
Our people are our most precious resource. In the business of creating intellectual property, people have a preeminent role.
Processes cannot create. Tools cannot exercise intellect. Turning ideas into working software requires people. People imagine, people interpret, people envision what they expect to build, and then people turn that vision into reality. Without people, software cannot be written.
but people have shortcomings. People make mistakes that result in defective software. People forget things so that their solutions are incomplete. People envision the future imprecisely so that their plans and estimates may be poor. People can keep only a limited amount of information in their minds at one time, so they may miss the consequences of their decisions. People misinterpret what others say so that information is lost in communication. People remember imprecisely so that facts are subject to dispute. People are expensive and may work slowly so that projects run over budget and schedule. People are bored by repetition so that some tasks are ignored or performed poorly.
Because of all these things and more, people by themselves are insufficient to ensure a successful software project. A team of even the best people in the software industry will have an uncertain likelihood of success. All people need the support that is provided by processes and tools to mitigate for their shortcomings so they can do their best work.
The role of processes
Processes identify the roles of the people on the project, the actions those people will take, and the work products those people will produce. In fact, the Agile Manifesto’s contention that interaction among individuals is more important than “process” belies a misunderstanding of the nature of process.
After all, it is the process that is being followed that determines who will interact with whom, under what conditions the interaction will take place, what will be the subject of that interaction, and what will be its result.
Indeed, “interaction” cannot be more important than “process,” because interaction is, itself, part of the process!
The importance of process lies precisely in the shortcomings of people, as we already discussed people make mistakes, so their processes include checks and balances. People forget things, so their processes remind them of what needs to be done. People are imprecise, so their processes identify where precision is needed. And people are limited, so they rely on their processes to keep the important facts before them. Processes that do these things provide the support people need to mitigate for their shortcomings.
Processes are essentially nothing more than tools that mitigate for people’s shortcomings. Good processes make people able to harness their intellectual abilities and effectively apply them to solving problems.
When consistently applied, good processes produce predictable results. And documenting those processes allows multiple people to share them and work together toward common goals.
The role of tools
All software projects use tools. At the very least, they use an interpreter or compiler and linker. Most also use a code control system and something to track bugs.
The main purpose of tools is to make processes more efficient and people more productive. Many labor-intensive tasks can be done more efficiently by either replacing human effort with a tool (such as when we run automated tests) or by supplementing human effort (as is the case when the compiler converts source code we have written into object code).
Repetitive tasks that produce boredom in people (and the resultant errors) can often be relegated to tools. The key to ensuring that a tool is effective lies in making sure that it supports the people who do the work as well as the processes those people use. A tool supports the process when it makes that process less laborintensive and easier to follow.
Balancing people, process, and tools
People, processes, and tools: No one of these is more important than the others. Each has an important role to play in ensuring the success of our projects. None can be eliminated or de-emphasized without having an adverse effect on the project.
Our people are the source of the creativity, intellect, and vision that is required to build software. These key strengths make people indispensable to the task of creating software. But people’s shortcomings can jeopardize our projects’ success. Errors, oversights, miscommunication, and the like are common human frailties. People have come to depend on processes to mitigate for these shortcomings and make success more achievable.
Individuals rarely document their processes and often do not recognize that they follow them. But in organizations, attention to and documentation of process is the key to ensuring that the processes are followed consistently and modified when necessary so they remain beneficial to the organization. Finally, tools make both the people and their processes more efficient by leveraging people’s effort and taking over some of the more mundane (though critical) activities in our processes.
Our people are the source of the creativity, intellect, and vision that is required to build software. These key strengths make people indispensable to the task of creating software. But people’s shortcomings can jeopardize our projects’ success. Errors, oversights, miscommunication, and the like are common human frailties. People have come to depend on processes to mitigate for these shortcomings and make success more achievable.
Individuals rarely document their processes and often do not recognize that they follow them. But in organizations, attention to and documentation of process is the key to ensuring that the processes are followed consistently and modified when necessary so they remain beneficial to the organization. Finally, tools make both the people and their processes more efficient by leveraging people’s effort and taking over some of the more mundane (though critical) activities in our processes.
To be sure, there is a clear hierarchy: People require the support of processes, and tools must support both people and processes. But to claim that any one of them is more important than the others is to add unnecessary risk to our projects.
Nice Read. When you want your team to work as per set plan, you need processes to support your plan. It is crucial that the IT is aligned to your business processes.
ReplyDelete