What Is Agile?
What is the Agile methodology? If you think it has something to do with yoga, read on.
At its core, Agile software development is simply a pattern for managing the software development lifecycle in a way that reduces inefficiencies and maximizes value for the product owner(s).
In traditional software development (e.g. waterfall), large amounts of time and effort are spent designing the entirety of a system before anything is actually built. Once development begins, any changes to the design have extensive ripple effects and can be very costly. What Agile does is provide a mechanism to uncover these changes as soon as possible in the process to reduce the cost to change. To accomplish this, the process is broken down into smaller chunks (called increments) that contain the same steps as other processes – design, build, test, and user acceptance. If the design needs to change, the collateral damage to the rest of the system is significantly minimized. Additionally, Agile encourages the product owner to be intimately involved in each phase of the process, reducing the lag on feedback cycles. To accomplish this, Scrum (short, daily meetings to communicate status) is used to create a transparent and open communication forum for the development team and the product owners to collaborate.
Why Should I Use Agile?
Now that you understand what Agile is, let’s consider why you’d want to use it.
First let’s look at a simple scenario:
Bill visits his doctor on the first day of every year. He exercises regularly and eats well. His doctor tells Bill that he is in great shape. Bill deserves a big pat on the back.
A few weeks later Bill’s friend suggests he try these new protein bars. They’ll help Bill gain muscle mass. Fantastic! Who doesn’t want more muscle? Bill buys a year’s supply of protein bars and eats two at every meal.
After a few weeks Bill’s muscles do not look any bigger, but his pants are a little tighter. Fast forward one year: Bill has gained 100 pounds and doesn’t feel any stronger. Bill goes in for his annual doctor’s appointment and his doctor is shocked. What happened?
Bill made some big mistakes in his simple quest to stay healthy and get stronger.
What would have happened to Bill if he had visited his doctor a month after he started taking the protein bars instead of a year?
What would have happened to Bill if he had asked his friend some questions about these protein bars?
What would have happened to Bill if he had read the health warnings himself?
These three questions embody three of the core tenants of Agile development:
Shorter Feedback Cycles
What if Bill had visited his doctor more frequently? His doctor probably would have noticed the problem sooner and told Bill to stop eating so many protein bars.
In Agile development, communication is paramount. If the development team is working on something the product owner doesn’t want – both parties should figure that out as soon as possible. With Agile Development, constant communication and course correction are vital to delivering high quality value quickly and effectively.
Clear, Defined, Requirements and Transparent Communication
What if Bill had asked his friend more questions? His friend might have told Bill to lift some weights.
Understanding the requirements and goals of the product and product owners is incredibly important. Too many times, developers create a product that is “really cool,” but does not meet the objectives of the product owners. This requires re-work, degraded morale, and a lack of trust between the team and product owners. Through Scrum and shorter iterations of work, teams can afford to spend more time solidifying small chunks of functionality, delivering it in a short cycle, and course correcting where appropriate. Maintaining transparency throughout the iteration, the product owners can quickly see if the work is being done incorrectly or if there are misunderstood requirements. The onus is on the entire team to maintain constant communication and transparency to avoid incorrect or unnecessary development.
Project Artifacts Help the Team Stay the Course
What if Bill had done some simple research himself? At the very least he probably would have had more questions and might have gone to his doctor sooner.
Product and sprint backlogs provide a concrete road map for the team to deliver efficiently and effectively. As the requirements change, the backlogs reflect these changes. During a sprint, the goals and direction are clearly laid out in the sprint backlog, keeping the team focused and accountable for the work being done. At any point of the project, the product owners can examine the backlogs to gauge overall progress, prioritize work, and provide additional details or acceptance criteria for tasks.
Microsoft Continues to Adopt Agile Methodologies
Microsoft as a company has embraced the principles of Agile software development in a variety of ways. Leveraging the methodologies in their own product development, encouraging the Microsoft developer community, and offering incentives for developers clearly indicate that Microsoft is pro-Agile.
Microsoft Has Adopted Agile for Their Product Development
Microsoft has deliberately adopted Agile methodologies into their application lifecycle to serve as the model for all Microsoft development teams. Products like Team Foundation Services often release updates and feature enhancements on a two-week cycle. Operating systems like Windows, that formerly took many years to release, are targeting much shorter cycles. Look for more of their products to speed up their release cycles, delivering high quality value quickly and more effectively.
Microsoft Encourages Open Source Developers to Embrace Agile Methodologies
Microsoft has undertaken a strategic effort to offer its software development tools to the open source community through various programs. Open source projects that qualify for these programs receive free licenses for tools like Team Foundation Services and Visual Studio. Microsoft continues to lead by example, encouraging Agile methodologies across all spaces, leading to successful development teams delivering value quickly and more effectively.
Microsoft Has Provided Tools for Developers to Implement Agile Application Lifecycle Management and Scrum
Microsoft’s flagship Agile software development tool, Team Foundation Services, fully integrates with Visual Studio providing source code repositories, continuous integration build services, feature and sprint backlogs and other powerful tools and features.
More on Agile Methodologies
Where did Agile come from? – http://agilemanifesto.org/
The History of Agile – http://agilemanifesto.org/history.html
Timeline of Agile – http://setandbma.wordpress.com/2012/03/23/agile-history/
In Microsoft’s Words – http://www.microsoft.com/visualstudio/eng/alm/agile-development
Transform your business operations with our Microsoft solutions