Wednesday, September 29, 2010

Agile Software Development as a Metaphor

An agile ninja

Software development has undergone a revolution in the last decade.  The formal software engineering method consists of the following steps:
  • Requirements: figuring out what the customer wants
  • Design: specifying on paper how the software should be built
  • Implementation: writing the software in a programming language
  • Testing: running tests to ensure the software acts as specified
  • Documentation: explaining how to use the software
  • Deployment: selling or installing the software
  • Maintenance: providing bug fixes as necessary
In the classic waterfall model, these steps are done one at a time.  Each step can be quite lengthy, and the final product is usually not ready until months have passed.  In particular, the requirements are considered to be almost a contract -- they cannot be changed once they have been formalized, because the design depends upon them.  Changing requirements means restarting the software design process.  The waterfall model is analogous to a samurai -- fighting is only allowed under strict rules that govern the fighter's code of conduct.
Agile software development is akin to a ninja -- flexible to the point of meeting customer needs, regardless of the methods necessary.  In agile development, a team meets regularly with the customer to flesh out requirements.  The team usually starts writing code to meet these requirements right away, and shows early versions to the customer to get feedback.  The developers and customers work in a tight collaboration, repeatedly revising requirements and software prototypes until the final version is ready.  The main phases of software development -- implementation, testing and documentation -- are tightly integrated and focused on delivering smaller, incremental pieces rather than the entire project at once.



Agile development is a great metaphor for how you should approach your education in a digital world.  Release your thoughts early and often.  Talk to your peers and mentors to get feedback regularly, rather than waiting until the end of a finished product.  Work in collaborative teams rather than solo.  Integrate your research, writing, and reflection into smaller chunks (a few paragraphs) rather than treating these as separate steps toward a larger whole (an essay). Iterate repeatedly until the project is polished into a final version.

In what other areas can you apply this metaphor?

4 comments:

Kevin said...

Very interesting ideas on education. Learning this way gives you the ability to change ideas and revise ideas multiple times, and continue learning. Other than just producing a finished product, and deeming it "finished" and never looking at it again. It really is a different view of education, though the idea has been voiced before: you can never stop learning.

Jake C said...

this is actually supposed to go on the post about Locke and the internet but it wont let me post a comment so here it is: i had no idea that the internet had such a hierarchy of organizations controlling and running it. the one that i found most interesting was ICANN. i had never even heard of it before. but when we talked about it in class yesterday i thought immediately of what locke wrote in his paper "of civil government". he said something like we give up our natural freedom to the government in order that they will protect us and our property in return. i guess ICANN is like the internet government. i give up some of my internet naming and administration rights in order that i dont have to deal with all the pain and liabilities of the internet. i know i wouldn't want to have to deal with all the troubles of the internet so i give up some of my internet freedoms so they deal with them.

Andrew said...
This comment has been removed by the author.
Andrew said...

I think this idea of Agile development should go to university professors (not necessarily those who are teaching this class). Some teachers give us a "finished" product - a lecture with fixed and ridged PowerPoint slides and they don't seem to look up at their students, ask, and see if they are understanding. Just as you mention our learning should be fluid and agile, teaching should be just as or more agile to make sure that students are successfully grasping the concepts they are teaching. See: The Last Wagon

Post a Comment