What is Agile Software Dev (ASD)?
First let’s start with the basics: Dictionary definition of agile:
Something that is agile is “Characterized by quickness, lightness, and ease of movement; nimble.” i.e. able to change quickly and easily.
In software application development; ASD means to have processes in place that will allow software teams to react to changing requirements in a rapid way. A practitioner of agile can use different methodologies within several frameworks to “be” agile.
Agile Software Development’s guiding principle focuses on keeping code simple, testing often, and delivering bits of functionalities soon as they’re ready. The goal of ASD is to build upon small client-approved parts as the project progresses; that is as opposed to delivering one large application at the end of the project.
There are various methodologies that are collectively known as agile. They all promote the values of the agile manifesto and they are consistent with the above principles.
Some of the more known methodologies are:
- Adaptive Software Development
- Agile Data Methods
- Agile Modelling
- Agile Unified Process (UP)
- Crystal
- Dynamic Systems Development Method (DSDM)
- eXtreme Programming
- Feature-Driven Development (FDD)
- Lean Development
- Microsoft Solution Framework for Agile
- Six Sigma
- Scrum
- Test-Driven Development
Why Agile?
“— accept that the project’s goal is a moving target —“
There are many reasons to why software teams should consider agile processes for their development but the one reason that stands out the most for me is that writing formal project specs is hard, time consuming + never complete. There is a trail of thought which says …“software cannot be completely specified through documentation or a model” and I agree with this especially for large projects.
– …people don’t know and cannot completely visualize what the software should be like till they actually play with it
– … a document can have plenty of information, but real knowledge is hard to put on paper; complete, rigid specifications are never complete
– …communication is never perfect and correction through feedback loop is essential
– … accept that most project will have changing requirements that evolve over the project life span
Moreover agile development can be exciting and invigorating for software teams whereby they are not just working of specs. Collaboration with end users is generally one of the things I find most rewarding about the job.
Pillars of Agile:
– Early collaboration between all stakeholders
– Active user involvement throughout the project
– Clear vision of needs, solutions and value
– Capture requirements at a high level; user stories is beneficial + low cost.
– Focus on simple solutions rather than complex solutions with features that may or may not be used
– Don’t try to predict future features
– Develop small, incremental releases frequently
– Early delivery of “good enough” features better than “perfectly” with later on.
– Testing should be done continuously in parallel to development (test automation imperative) – test early and often
Migration to agile:
Over the years increasing development teams have started to adopt agile methods and there have been many success stores…
In reality, though, agile is not a magic bullet that will solve all software development issues in your projects.
Adoption of agile is a big decision that mustn’t be taken lightly regardless of the methodologies or techniques to be employed. Understand the dynamics and pillars of agile techniques is vital. (Cherry picking won’t cut-it).
Whichever technique chosen; time MUST be given to map out the correct infrastructure/procedures to be used before jumping into the agile bandwagon.
One last thing to point; getting management buy-in is very important as often that could the major stumbling block.


Leave a reply to Anonymous Cancel reply