Agile is an iterative approach to project management and software development that helps teams deliver value to their customers faster and with fewer headaches.
Agile was a dramatic change from the “Waterfall” model that has been the standard since the 1970s. Waterfall is a linear approach where all requirements are gathered before beginning and then project phases progress in a strict linear order, where a phase can’t begin until the previous phase has been completed. Once all phases are completed, there is a launch of the completed project. Changes and modifications are disruptive, difficult and expensive during development and after launch.
In Agile development, requirements, plans, and results are continually evaluated, there are launches at the end of every 2-week “sprint”, so teams have a natural mechanism to respond to problems and are able to quickly make changes during development. Agile methodology is not defined by a set of specific development actions or techniques. Rather, the Agile methodology is made up of a group of methodologies committed to exhaustive iterative feedback cycles and continuous improvements.
Why choose Agile methodology?
Teams that choose Agile can respond to market changes and customer feedback quickly without ruining an entire year's planning. The iterative incremental process allows your team to collect feedback on each change and integrate it into future plans with minimal costs.
The protagonists of Agile are not the numbers: the first and most important thing is the people. As outlined in the Agile manifesto, true human interactions are more important than rigid processes. Collaborating with clients and teammates is far more important than rigid, inflexible processes, just as delivering a solution that solves the customer's problem is more important than painstakingly detailed documentation.
An Agile team shares a vision and makes it come true in the way they think is best. Each team sets its own standards for quality, usability, and integrity. Their definition of "finished" will allow them to determine how quickly they will complete the job. Although it can be intimidating at first, company leaders find that when they trust an agile team, the team has a greater sense of commitment and strives to meet (or exceed) management expectations.
Principles from the Agile Manifesto
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Changing requirements welcome, even at the end of development. Agile processes leverage change for the customer's competitive advantage.
- Deliver software that works frequently, from a couple of weeks to a couple of months, in preference to the shorter timescale.
- Entrepreneurs and developers must work together on a daily basis throughout the project.
- Build projects around motivated people. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Software that works is the main measure of progress.
- Agile processes promote sustainable development. Sponsors, developers, and users should be able to maintain a steady pace indefinitely.
- Continual attention to technical excellence and good design improves agility.
- Simplicity, the art of maximizing the amount of work not done, is essential.
- The best architectures, requirements, and designs come from self-organizing teams.
- At regular intervals, the team reflects on how to be more effective, then tunes in and adjusts their behavior accordingly.
These principles provide a path for us to develop software both from our own experience and by collaboration with our team and stakeholders. Through the Agile experience we have learned to value:
- Individuals and interactions > processes and tools.
- Software functionality > extensive documentation.
- Collaboration with the client > contractual negotiation.
- Responsiveness to change > following a plan.
Although we value the elements on the right, we value much more those on the left.
“Efficiency is doing things the right way. Effectiveness is doing the right things." – Peter Drucker
Accelerating Software Development
A well-tuned Agile process is the foundation of rapid, efficient and flexible software development. To be effective and achieve the desired market and company objectives, it is essential to tune the daily work of the team with the strategic objectives of the organization.
The key to aligning your company's strategy with what's happening on the development front line is clearly defining themes, goals, and metrics.
Themes are large areas of related work, defined over a period of time and oriented to a specific purpose. Themes are made up of user stories that all relate to a specific high-level organizational goal, e.g. increase conversion in the shopping cart or increase retention in a mobile app. Stores are short requirements or requests written from the perspective of an end user that can be executed by the development team within the span of one sprint (2 weeks). Stories are an important frame of reference for teams. It helps them to verify if their work is contributing to the progress of business initiatives. Managing tasks by story also helps managers understand if enough resources have been allocated for a story to be completed within one 2 week sprint or if a story is under resourced.
The Agile Advantage
Agile allows for great flexibility, constant testing and improvement while providing a structure and plan to a process that is continuously evolving and responding to clients / users needs. The velocity of change in today’s marketplace requires a development methodology that can keep up. Agile is a critical tool in our ability to enable our clients to survive and thrive in the new digital normal.