Agile Software Development: Combining execution with creativity and innovation
In traditional plan-driven method for information systems the development phases are executed sequentially: requirement writing, analysis, design, coding and testing. Collecting information from up-front is the key for the traditional project management strategies.
In contradiction to traditional plan-driven approach, Agile has an adaptive value driven approach to software development. It favors minimum up front design without heavy documentation using short incremental iteration cycles. The result of each iteration is a piece of working software product which is delivered continuously throughout the project. At the end of each iteration the implemented increment of the software should be complete and potentially shippable.
Agile Framework and Execution
Agile Software development methods have been presented in order to improve development teams response to fast changing business requirements that’s why Agile encourages collaboration and receiving feedback from customer during the iterations because needs and priorities can change over the period and it’s important to have customer input not only during high level planning , but also during the implementation cycle in order to deliver the right product to the customer and have greatest return on investment (ROI) .
In order to better understand Agile Software Development and it’s principles, let’s examine Agile execution step by step.
Execution in Agile Software Development starts with Strategy planning that is the envisioning state where goals, vision and scope of the product are defined. It’s called a Visioning iteration and the output of such iteration is a Product Vision. In this stage the MVP is identified and prioritized by stakeholders and customers.
The next stage is Release Planning.. During the release planning teams and stakeholders collaborate together to shape a release plan based on the prioritized list and rough estimates of the team. The initial deadline of the release is being fixed, which is usually 3 to 6 Months. The output of the release planning is roughly estimated and almost prepared product backlog with User Stories. Based on the velocity of the team, the release plan is divided into small 1-2 weeks iterations required to deliver the estimated feature list.
Scrum, which is one of the most widespread Agile methods, prescribes four ceremonies for Agile teams to follow:
1. Sprint Planning Meeting
2. Daily Stand up
3. Sprint Review Meeting
4. Retrospective Meeting
All these Scrum meetings embrace Agile principle of Inspect and Adapt: understanding past performance is to inspect; figuring out actions for future development is to adapt.
During the sprint planning meeting, team members select from Product Backlog highest priority User Stories that have been already estimated during the backlog groooming and commit them to one or two week sprints based on team’s capacity and established velocity. The output of the Sprint Planning Meeting is Sprint backlog of estimated User Stories with defined Acceptance Criteria.
Daily stand up is the shortest ceremony in Agile Scrum. It is time-boxed to maximum 15 minutes and takes place every day preferably in the mornings. It measures team’s progress toward the sprint goal and identifies pitfalls early to take actions to remove or correct them. During the meeting the development team members answer three questions:
- What did I do yesterday that helped the Development Team meet the Sprint Goal?
- What will I do today to help the Development Team meet the Sprint Goal?
- Do I see any impediment that prevents me or the Development Team from meeting the Sprint Goal?
Stand up meetings help team members to collaborate and self organize in order to make quick decisions for fulfilling the sprint commitment and it is a key inspect and adapt meeting in Agile Scrum.
At the end of each sprint development teams have Sprint Review Meeting where they demonstrate the work they have accomplished during the sprint. It helps product owner and other stakeholders to evaluate the product and product backlog priorities. Scrum teams learn and then apply the knowledge gained in the next Planning Meeting.
Retrospective meeting is one of the most important ceremonies in Agile Scrum. It’s purpose is to look back at the sprint and make assessments about what went right and what went wrong and make a collaborative decision to improve them.
Retrospectives enforces learning and continuous improvement, help teams to inspect and adapt quickly, increases teams productivity and technical excellence and is the heart of Agile Scrum
Self-organizing and cross functional teams in Agile Scrum
As you saw Agile decentralizes the power from management to development teams giving them power and authority to self organize and make decisions on amount of work to be done at each iteration. The Agile Manifesto devotes a section to conveying the belief that “the best architectures, requirements and designs emerge from self- organizing teams”.
“Build projects around motivated individuals.
Give them the environment and support they need,
and trust them to get the job done”
Team Autonomy is one of the key principles of Agile Software Development. Team members who hold authority in their hands demonstrate better results in problem solving and decision making. Higher degree of autonomy can lead to greater risk taking and experimentation that makes teams more adaptive to environmental change. Diversity of cognitive approach helps to see the problems from different perspectives, stimulate learning and innovation, and think of multiple ways in problem solving.
For more details about different cognitive approach benefits for the teams see The New new Product Development game article by Hirotaka Takeuchi and Ikujiro Nonaka.
It is important to note that Agile team members must have clear understanding of the vision and business goals of the software project in order to align the creativity and innovation with business values that are crucial to customers and stakeholders.
Agile is more about people than process. Process is attached to people and the duty of the management is to shape environment of structured freedom, transparency and trust that encourages creativity and innovation in the context of Agile Execution.