CM wiki web
AgileDevelopment
Whats your definition of AgileDevelopment?- Refers to the speed of operations within an organization and speed in responding to customers (reduced cycle times). In contrast, "Adaptable" refers to the ability to respond to macro changes, such as a change in legislation, entrance of a strong competitor, etc. (Result)
AgileDevelopment Methods
AgileDevelopment Methods and Extreme Programming XP have disrupted our view of software development, leading the industry towards lean, adaptable development methodologies. XP and AgileDevelopment Processes will change the way software is developed for some time to come. An "agile" methodology or process is one that adheres to the tenets of the AgileManifesto. Some examples of agile software development methods are: SCRUM, Jim Highsmith's Adaptive Software Development?, Feature Driven Development?, the Crystal series, DSDM, Agile Modeling?, and, of course, XP. Also see the AgileAlliance and AgileManifesto -- PatrickEgan? Agile software development methodologies are based on short cycles of iterative development. By developing software in an iterative and rapid fashion, a development team can put working software in the hands of the customer quickly to solicit feedback and refine the requirements for the software system under development. What is the role of SCM for Agile Software Development Projects?? Add your comments to Agile SCM -- MichaelSayko? - 20 Dec 2002 What comes around goes around - agile has been around for more years than people know - and it got its start in the hardware world. My first encounter with agile methods occured in the summer of 1969. It was between my junior and senior years working towards a BS Aeronautics and Astronautics. My focus at the time was low speed aerodynamics and structural analysis. I recieved a National Science Foundation summer grant to determine the range of validity of a linearization of a non-linear stability theory. I needed to solve the non-linear problem which of course began my love affair with computers. I learned Fortran, numerical methods, and of course how to entice the operator to let me into the computer room at 2 am in the morning so I could get rapid turn around on my program. OK, how is that agile? Well the numerical method I used, Predictor, Corrector, had been established and used to solve hardware problems many years before I or computers came along. The basic thing I remember about the method is that rewrote the equation in form f(x) - x = 0. You guessed a solution, calculated a result, based on how far off from zero the result was you calculated a new value of x and did it again. You continued this until the remaining error was acceptable (e.g. you got an error of say .00001). When I got into industry I saw and used similar methods within "heavy weight" approaches. They were most often applied to high risk areas and involved, build a little, test a little, correct a little, do it again until you get it right situtations. That said, I didn't write this to disparage the Agile community. My experiance helps explain why I feel comfortable with it and why I have a hard time understanding many of the objections to it. The fact is, its an extension for software of what the overall Engineering community has been doing for years. In fact (new thought for me) maybe its one of the necessary steps in creation of a true Software Engineering profession! -- BobVentimiglia? - 21 Feb 2003 Excerpt from Martin Fowler's paper "The New Methodology" Agile methods have some significant changes in emphasis from heavyweight methods. The most immediate difference is that they are less document-oriented, usually emphasizing a smaller amount of documentation for a given task. In many ways they are rather code-oriented: following a route that says that the key part of documentation is source code. However I don't think this is the key point about agile methods. Lack of documentation is a symptom of two much deeper differences:- Agile methods are adaptive rather than predictive. Heavy methods tend to try to plan out a large part of the software process in great detail for a long span of time, this works well until things change. So their nature is to resist change. The agile methods, however, welcome change. They try to be processes that adapt and thrive on change, even to the point of changing themselves.
- Agile methods are people-oriented rather than process-oriented. They explicitly make a point of trying to work with peoples' nature rather than against them and to emphasize that software development should be an enjoyable activity.
So what's the point of emphasizing the heavy documentation then, why do organizations insist on doing it? The way I see it, the reason might have something to do with responsibility. Maybe producing something is not enough to those organizations. Maybe they make the effort for the sake of being accountable for the product, not just for the developers who created it. In my understanding, these organizations believe that there is some valuable knowledge that needs to be shared, and make an attempt to capture and maintain that shared knowledge in the form of documentation. After all, we have to admit that in many respects, we are still living Gutenberg's era, we still believe that writing down words on readable media is the numero uno method of knowledge sharing. Anyhow, let's not put too much notice on the format, as Fowler points out in the paper "The New Methodology", there is a deeper difference here. Do the apostles of AgileManifesto promote the process of turning private knowledge into shared knowledge? I do not see that, at least not on the surface level. This is where I see the main difference between the "heavy-weight", "document-oriented" "process-savvy" approaches versus the "agile" and the like. -- TerryMiramax? - 17 Jan 2003 [Note: Some WikiPageRefactoring was done on the above. See HeavyDocumentation to expand on that term.] From the various agile mailing-lists, books, and face-to-face conversations with noted "agilists", I know that AgileDevelopment "apostles" believe that knowledge is valuable and should be shared. They suggest that documentation is not necessarily the best means of sharing it. According to the field of KnowledgeManagement?, documentation is a form of static, passive knowledge. It is a good way to record knowledge for posterity (or posterior
but is not necessarily the best form of knowledge transfer. For that, human interaction is what the "agilists" say they prefer. They say they aren't against creating documentation per se, but prefer face-to-face interaction (and perhaps "lite" docs) where some heavier-weight methods instead overrely upon more documentation.
-- BradAppleton? - 21 Jan 2003
From the Community Forums:
- It sounds like agile CM is similar to what I call RAPID CM - as in Rapid development. Just a new word for an old idea. Oh well, we all have to repackage from time to time. (a mild attempt at humor).
or the more recent Agile Software Development Ecosystem's by James Highsmith). If you're really interested in the complexity-theory angle, look at Highsmith's book Adaptive Software Development (but it might be easier to just get the gist of it from the aforementioned articles if you don't want to get quite so buried in it).
I hope that helps! I think Agile is an important thing to understand, and not simply write-off as "what's old is new again". I think a lot of its current popularity is from the classic vicious cycle of bouncing back and forth between extremes. Before CMM, there was not enough emphasis on process. Then many started taking it too far in the other direction as people clamored for CMM-ratings (passing the test and having the appropriate docs & bureaucracy became more important than the process and its effectiveness for many shops that misapplied the CMM).
Now the swing is going back in the other direction, and "agile" is a big part of that. But there is something new underlying a lot of the old stuff making a "comeback".
-- BradAppleton? - 06 Feb 2003
Note that much of the above has since been summarized and reorganized into the CMBoK under the section on CM's Contributions to Development

AgileDevelopment