Should our methods be more agile?
Last night at the Agile Bazaar in Cambridge down the street from M.I.T., I had a chance to listen to both devoted advocates of "agile methodologies", as well as software developers seeking some relief from the arduous path of their profession (admittedly, I also took the opportunity to subject said same people to many of my opinions).
Some conclusions:
(a) Agile methodologies are probably as good as things will get as long as the human mind is the primary tool for creating software. My reason: the human mind is quite limited when it comes to activities such as software development. For instance:
+ There are only so many details a human can imagine and remember.
+ Human minds prefer tangible, physical things over imagined ones.
+ For most humans, the future is a fairly abstract concept, made vague largely by uncertainty and a general unwillingness to think really hard.
+ Humans like to be given information, and when they are not given information, they tend to make assumptions.
Implicity, the agile approach advocates working with these human short-comings, rather than against them. Short iterations produce concrete software to examine and build on. Short-term target dates can be envisioned with only modest effort. Planning for a short iteration is worthwhile because everyone can see it is not wasted activity. Frequent feedback validates direction and provides information. Goodwill is fostered because developers feel management understands their situation. This is all good.
(b) For as long as we've been doing projects, we've been using agile methodologies, but our culture tends to be too negative to see this. All organizations periodically correct the course of their projects. The problem is people usually view course correction negatively (probably because of the attendant blaming), instead of embracing it. Wouldn't it be a lot more productive if everyone involved in a project accepted, nay, advocated, nay, demanded -- before the start of the project -- there be some number of course corrections during the project?
(c) Agile methodologies need to accept outside constraints, rather than to try to re-educate them. For example, what to do about certain marketing departments, which don't care about how the software is created, but only that it be done by some date months away, and that it meet all expectations? In more than 25 years of software development, I have found it nearly impossible to educate uninterested parties. All the pontificating about scrums (an ugly word; can we change it?), iterations, extreme programming (another bad term), feature driven development, test driven development, and all that is agile will do little or nothing. What works is repeatedly and consistently exceeding the expectations of such parties. What also works is to actively seek buy-in sufficiently high in an organization. Agile proponents need to teach how to work with difficult stakeholders along with the mechanics of how to carry out projects.
(d) "Your software development process is what materializes when the heat is on" (a comment by an attendee) -- This is the crucible in which we need to find a less arduous way to create software. Do agile methodologies stick when the heat is on? What does stick?
(e) It's not clear that a lot of little iterations get you efficiently to your long-term goal. It seems some longer term planning and navigation needs to be blended with short development cycles to create sort of a "scrum fractal".
For more information about agile methodologies, visit http://www.agilealliance.org.
Some conclusions:
(a) Agile methodologies are probably as good as things will get as long as the human mind is the primary tool for creating software. My reason: the human mind is quite limited when it comes to activities such as software development. For instance:
+ There are only so many details a human can imagine and remember.
+ Human minds prefer tangible, physical things over imagined ones.
+ For most humans, the future is a fairly abstract concept, made vague largely by uncertainty and a general unwillingness to think really hard.
+ Humans like to be given information, and when they are not given information, they tend to make assumptions.
Implicity, the agile approach advocates working with these human short-comings, rather than against them. Short iterations produce concrete software to examine and build on. Short-term target dates can be envisioned with only modest effort. Planning for a short iteration is worthwhile because everyone can see it is not wasted activity. Frequent feedback validates direction and provides information. Goodwill is fostered because developers feel management understands their situation. This is all good.
(b) For as long as we've been doing projects, we've been using agile methodologies, but our culture tends to be too negative to see this. All organizations periodically correct the course of their projects. The problem is people usually view course correction negatively (probably because of the attendant blaming), instead of embracing it. Wouldn't it be a lot more productive if everyone involved in a project accepted, nay, advocated, nay, demanded -- before the start of the project -- there be some number of course corrections during the project?
(c) Agile methodologies need to accept outside constraints, rather than to try to re-educate them. For example, what to do about certain marketing departments, which don't care about how the software is created, but only that it be done by some date months away, and that it meet all expectations? In more than 25 years of software development, I have found it nearly impossible to educate uninterested parties. All the pontificating about scrums (an ugly word; can we change it?), iterations, extreme programming (another bad term), feature driven development, test driven development, and all that is agile will do little or nothing. What works is repeatedly and consistently exceeding the expectations of such parties. What also works is to actively seek buy-in sufficiently high in an organization. Agile proponents need to teach how to work with difficult stakeholders along with the mechanics of how to carry out projects.
(d) "Your software development process is what materializes when the heat is on" (a comment by an attendee) -- This is the crucible in which we need to find a less arduous way to create software. Do agile methodologies stick when the heat is on? What does stick?
(e) It's not clear that a lot of little iterations get you efficiently to your long-term goal. It seems some longer term planning and navigation needs to be blended with short development cycles to create sort of a "scrum fractal".
For more information about agile methodologies, visit http://www.agilealliance.org.