|An agile ninja|
- 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
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?