The word “Agile”, there was a time when this word referred to the ability to move quickly, easily in a more tangible sense, and associated perfectly with synonyms like ‘nimble’, ‘acrobatic’, ‘light footed’, and it goes on and on.
Now in the context of software development the word Agile seemed to have gained new depths. Very much like the word “Tablet” originally referred to as measured amount of medicine, or a stone slab but now fondly associated with mobile devices.
In 2013 I began to get the feeling that Agile in the context of software development was more of a buzz word than anything else. Going through articles, job ads, seminars, and presentation papers, the word seemed to be carefully placed to suggest emphasis that good practise is been carried out here, or associated alongside other terms like Scrum, and or Extreme Programming (XP); in numerous places I encountered the following associations “knowledge of Agile / Scrum” essential, or “we work according to the Agile methodology”. Confusing right? I thought so. Somewhere in an attempt to perhaps impress, have we lost the true meaning of the term “Agile” in the context of software development. In a series of articles coming up in 2014, I go back to 101 basics and discover the true meaning of the word “Agile” with regards to software development. I explore published papers, investigate companies, and individuals that evangelise the Agile methodology. Like every other methodology it is a means to an end (the delivery of practical, quality software), but is it a one size fits all solution, or a classic solution as I have once been told, is it a representation of an approach, and where should this approach be best adopted, are there alternatives that work just as well, It will be great to identify truly how other just as buzzy words like “Scrum”, “Extreme Programming”, Kaban, Lean … really relate to Agile.
So what is Agile in a software development context?
Modern Analysis has it in its glossary as “a general term and conceptual framework used to describe a number of “light-weight” methodologies, such as Extreme Programming (XP), SCRUM, and Rapid Application Development (RAD), which exhibit a series of common characteristics. Some of these characteristics include iterative analysis and development, time-boxed iterations of a predefined length, delivery of the most critical features and functions first, delivery of a complete build with an initial set of limited features within a few months (often 1-2 months), small cross-functional teams usually of 6-9 team members, daily team communication meetings, and reduced levels of documentation.”
Telerik, a company that offers as a service tools for Agile project management and collaboration, simply refers to it “as a family of development process, not a single approach to software development”.
However we cannot begin to define Agile until we look to the source - The Agile Manifesto which states
“We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.”
From these definitions Agile should begin to take shape not as a separate entity for software development, or an association say to the “V model” or the “Waterfall model” or “Scrum” but as a concept that allows for the development of practical, quality software. Be it in Extreme Programming (XP), Scrum, Rapid Application Development (RAD), Lean, Kaban … it is the idea of creating better ways to develop software, while helping clients to achieve their business goals, without exploiting the talent that goes into such development, instead looking to develop partnerships. In the next article we explore companies that have adopted some form of Agile approach to software development, and explore a vital question, where does an Agile approach fit into small, medium, and large scale software development projects.