In my previous blog, Software Development Using Agile Methodology, I wrote about main key values of Agile Methodology, one of which prefers people over processes in software development. While reading Martin Fowler’s article “The New Methodology”, this paragraph has caught my attention:
One of the aims of traditional methodologies is to develop a process where the people involved are replaceable parts. With such a process you can treat people as resources who are available in various types. You have an analyst, some coders, some testers, a manager. The individuals aren’t so important, only the roles are important. That way if you plan a project it doesn’t matter which analyst and which testers you get, just that you know how many you have so you know how the number of resources affects your plan.
Alistair Cockburn in Characterizing People as Non-Linear, First-Order Components in Software Development, makes a strong point that:
Predictable processes require components that behave in a predictable way.
However, as he suggests, people are not predictable components. Furthermore his studies of software projects have led him to conclude that:
People are the most important factor in software development. Some refer to people as “components”. That is how people are treated in the process/methodology design literature. The mistake in this approach is that “people” are highly variable and non-linear, with unique success and failure modes. Those factors are first-order, not negligible factors. Failure of process and methodology designers to account for them contributes to the sorts of unplanned project trajectories we so often see.
I agree with both of them and convinced that we all like to see ourselves treated as individuals and not replaceable units, since software development is a highly creative and professional work. This also increases morale and productivity in the team which has a direct effect on the quality of the delivered system. We all know that software processes are often imposed by management and are often resisted, especially when management is not technical enough. In agile methods – people are usually self-organized and instead adopt the processes that the whole team agrees upon. People are treated as competent professionals and as such are the best to decide how to conduct their work.
Another interesting characteristic of being Agile is that developers must be able to make all technical decisions and not management. For example, only developers can estimate how much time will specific feature take to be completed. This allows technical leadership and is recognized as the expertise. Since entering management often means loosing the edge in current technology trends – it is often the case to have technical team leaders who can be in charge of important technical decisions.
The bottom line is – treat people the way you want to be treated yourself and results will follow.