If you’re a software developer or a software user, it’s helpful to know what is meant by the term “Agile software development.” When a team of software developers works within a framework of agile development principles, the collaboration typically results in rapid progress towards the end goal of creating a useful, functional software product. This methodology is becoming increasingly important as more programming teams become familiar with it and implement its principles.
Lightweight vs Heavyweight Software Development
When describing varied approaches to developing software, some methodologies are deemed “heavyweight” and others are deemed “lightweight.” The Agile approach to software development weighs in on the lightweight side.
What this means: The heavyweight approaches to software development emphasize planning and heavy regulation, in some cases to the point of micro-management. The lightweight approaches are the opposite. Only the barest minimum of planning takes place. In place of all the planning, the team emphasizes taking action to quickly achieve the goal of having a working software prototype in hand. Once a prototype exists, it can be further refined to meet the end users’ goals.
How Agile Software Developing Began
In the year 2001, software developers convened a discussion regarding lightweight approaches to software engineering. They wrote a manifesto on the topic of Agile software development that provided an official beginning for the collection of Agile methodologies. The manifesto provides a framework of 12 principles all together. The principles focus on customer satisfaction, simplicity, teamwork and collaboration. The end goal is to develop the most useful software possible in the least amount of time necessary.
According to the manifesto, Agile software developers emphasize responsiveness over planning; they value individuals more than tools and interactions more than processes. Their goal is to prioritize the development of working software over its documentation. They find it most productive to collaborate and develop software, then troubleshoot and refine it as necessary. This is more productive than wasting upfront time on planning out every detail of how the software will function.
Team interactions are at the core of the Agile coding philosophy. Daily team meetings are typical to ensure that all team members are up-to-date on their current project. At these team meetings, each member shares a progress report including completed tasks and possible obstacles that affect the project’s outcome.
Iterations in Agile
One of Agile’s most important distinguishing characteristics is that its processes are iterative. After receiving end user feedback on an initial software release, team members often revisit the same work again with the goal of improving it. Iterations are goals that the team tackles within an agreed-upon time-frame, perhaps one week or one month.
Popular Agile Coding Methodologies
Agile software developers use a number of specific methodologies including Crystal, Scrum, Extreme Programming (XP), Feature Driven Development (FDD), Lean Development and others. These methodologies all allow for iterative workflow. They rely on a loop of continuous evaluation and feedback.
Where to Learn More About Agile Software Engineering
We hope you now have a clearer understanding of the underlying philosophy behind Agile software engineering. There’s much more to learn about the Agile method of coding. If you’re interested in finding out more, the Agile Alliance and VersionOne are two helpful resources that make further information and training available on the topic of Agile software development.