Agile software development offers an alternative to traditional project management by emphasizing close collaboration between programmers and business experts, along with flexibility, functioning software and self-organizing teams.
The Agile Manifesto
In 2001, 17 programmers came together on a mission to create better ways of developing software. They formed a consensus around four central concepts which became the Manifesto for Agile Software Development. According to the manifesto, agile developers value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiations
- Responding to change over following a plan
The 12 Principles of Agile
In addition to the manifesto, the programmers established 12 principles:
- Satisfy the customer with early and continuous delivery
- Welcome changing requirements at any point
- Frequent delivery of working software
- Work with business people throughout every project
- Support and trust motivated individuals
- Deliver information face to face
- Measure progress through working software
- Promote sustainable development
- Perpetual attention to technical excellence
- Embrace simplicity
- Self-organizing teams work best
- Periodic review on how to improve
Agile developers also assert that self-organizing teams produce the best architectures, requirements and designs, and that agility is enhanced by continuous attention to technical excellence and good design.
What is Scrum?
Scrum is a management framework that uses one or more self-organizing and cross-functional teams. Scrum provides structure for roles, meetings, rules and artifacts, and teams organize and adapt their processes within this framework.
It was developed in the middle 1990s by two developers and was unveiled at a conference in 1995. Scrum’s two developers were among the 17 who created the Agile Manifesto six years later.
Scrum roles are limited to three: Product Owner, Development Team members and ScrumMaster who split traditional project management tasks.
Scrum uses “Sprints,” which are fixed-length, repeating time periods that are typically one or two weeks during which Scrum teams attempt to build a shippable product increment or deliverable result before moving on to the next Sprint.
Scrum’s benefits include the ability to develop a set of high-value features first and obtaining and incorporating feedback along the way.
Another unique feature of Scrum is the meeting progression, of which there are five: Backlog Refinement, Sprint Planning, Daily Scrum (or daily stand-up meeting) Sprint Review and Sprint Retrospective. The ScrumMaster facilitates each meeting, but has no decision-making authority.
How are Agile and Scrum Related?
The Agile Manifesto did not include any concrete processes or steps, so many developers adopted Scrum to provide a methodology to move forward on projects. When Agile and Scrum work together, organizations combine the “business side” and the “technical side” to achieve objectives and attain success.
Scrum provides an important structure with a simple and predictable set of roles, tasks and meetings. With no surprises to manage, teams are able to focus on the project and learn as they go.
The Importance of Agile Development
In today’s competitive global business environment, organizations need to move fast. Change happens all day, every day, and there is no time to wait for people to catch up.
Agile development features less bureaucracy, fewer layers and more streamlined processes – all of which help keep businesses nimble, more competitive and ready to meet customers’ needs.
Many top-tier programmers around the globe prefer agile software development. Companies in every industry are embracing its tenets and shifting to agile cultures.
Computer science majors who plan to make their mark and want to thrive with the top programmers and the best organizations should be well-versed in the Agile Manifesto and its principles, as well as Scrum.