- This short cartoon answers the question 'What Is Agile?' And will give you the background to understand the Agile principles and values and how they can help.
- Agile is designed to accommodate change and the need for faster software development (as discussed in the Agile Manifesto's Values and Principles). The project leader typically facilitates the work of the development team, eliminates bottlenecks, and helps the team stay focused in order to deliver software iterations on a regular basis.
- About Agile Software Development. Agile Software Development has been creating software for network administration and secure remote access since 2003. With over 30 years combined experience in software development, network management and domain administration, we build our tools for ease of use and functionality.
By: Dan Hellem
Agile developmentis a term used to describe iterative software development. Iterativesoftware development shortens the software development lifecycle. Agiledevelopment teams execute the entire software development lifecycle insmaller increments, usually called sprints. Sprints are typically 1-4weeks long. Agile development is often contrasted with traditional orwaterfall development, where larger projects are planned up front andexecuted against that plan.
Prerequisite: You need basic knowledge of software development process and software development methodologies. After completing this course, you will be able to: 1) Demonstrate the ability to participate effectively in agile practices/process for software development. 2) Explain the purpose behind common agile.
Delivering production quality code every sprint requires the agiledevelopment team to account for the accelerated pace. All coding,testing, and quality verification must be done each and every sprint.Unless a team is properly set up, it can fail. And sometimes failmiserably.
This article lays out a few key success factors for agile developmentteams:
- Diligent backlog refinement
- Integrate early and often
- Minimize technical debt
Diligent backlog refinement
An agile development team works off of a backlog of requirements, oftencalled “user stories”. The backlog is prioritized so the most importantuser stories are at the top. The product owner owns the backlog andadds, changes, and reprioritizes user stories based on the customer’sneeds.
One of the biggest drags on an agile team’s productivity is a poorlydefined backlog. A team cannot be expected to consistently deliver highquality software each sprint unless they have clearly definedrequirements.
The product owner’s job is to ensure that every sprint, the engineershave clearly defined user stories to work with. The user stories at thetop of the backlog should always be ready for the team to execute on.This is called backlog refinement. Keeping a backlog ready for an agiledevelopment team takes an incredible amount of effort and discipline.
When refining the backlog, remember the following:
Refining user stories is often a long-lead activity
Elegant user interfaces, beautiful screen designs, and customerdelighting solutions all take time and energy to create. Diligentproduct owners refine user stories 2-3 sprints in advance. They accountfor design iterations and customer reviews. They work to ensure everyuser story is something the agile team is proud to deliver to thecustomer.
A user story is not refined unless the team says it is
The team needs to review the user story, and agree it’s ready to workon. If a team has not seen the user story until day 1 of a sprint,that’s a big red flag.
User stories further down the backlog can remain ambiguous
Don’t waste time refining lower priority items. Stay intently focused onthe top of the backlog.
Integrate early and often
Continuous integrationand continuous delivery(CICD) sets your team up for the fast pace of Agile Development. As soonas possible, automate your build, test and deployment pipeline. Itshould be one of the first things you complete when starting a newproject.
With automation, your team will avoid slow, error prone, andtime-intensive manual deployment processes. And let’s face it, if youare releasing every sprint, your team doesn’t have time to do thismanually.
CICD also influences your software architecture. They ensure youdeliver buildable and deployable software. When you implement adifficult-to-deploy feature, you become aware immediately as the buildand deployments will fail. CICD forces you to fix deployment issues asthey occur, ensuring your product is ever ready to ship.
CICD key activities are:
Unit testing
Unit tests are your first defense against human error. Unit tests shouldbe considered part of coding and checked in with the code. Executingunit tests should be considered part of your build. Failed unit testsmean a failed build.
Build automation
Have your build system automatically pull code and tests directly fromsource control when builds execute.
Branch and build policies
Configure your branch and build policies to build automatically as yourteam checks code into a specific branch.
Deploy to an environment
Setup a release pipeline that automatically deploys your builtproject(s) to an environment that mimics production.
Agile Methodology
Minimize technical debt
With personal finances, it’s easier to stay out of debt than to dig outfrom under it. The same rule applies for technical debt. Technical debtincludes anything the team must do to deploy production quality code andkeep it running in production. Examples are bugs, performance issues,operational issues, accessibility, and others.
Keeping on top of technical debt requires courage. There are manypressures to delay fixing bugs. It feels good to work on features andignore debt. Don’t be fooled. Sooner or later, somebody must pay thetechnical debt. Just like financial debt, technical debt becomes harderto pay off the longer it exists. A smart product owner works with theirteam to ensure there is time to pay off technical debt in every sprint.Balancing technical debt reduction with feature development is adifficult task. Read Creating productive, customer focused teamsfor ideas on how to manage this.
Always Be Agile
Being agile means learning from what you do and continually improving.Agile development provides many more learning cycles than traditionalproject planning. Each sprint provides something new for the team tolearn.
For example:
- A team delivers value to the customer, gets feedback, and thenmodifies their backlog based on that feedback.
- They learn that their automated builds are missing key tests andinclude work in their next sprint to address it.
- They find that certain features perform poorly in production andmake plans to improve performance.
- Someone on the team hears of a new practice and the team decides totry it out for a few sprints.
If you are starting with agile development, expect more learningopportunities. Way more. An Agile team doesn’t waste thoseopportunities.
Get started with free agile tools in Azure Boards.
Dan is a Senior Program Manager with Microsoft's Azure DevOps. Dan focuses on the Agile space as well as the customer adoption of the service. Before coming to Microsoft in 2012 Dan spent his career building applications using Microsoft technologies and assembling Agile teams centered on delivering high quality software to customers. |
Multipart article
by Kate Eby on Aug 18, 2016
Organizations are experiencing enormous success in meeting the fast-paced change of customer needs by adopting the Agile software development methodology, which offers an iterative approach to the design and development of software. The Agile approach embraces the constant changes that occur in the development of technology – allowing teams to break the lengthy requirements, build, and test phases down into smaller segments, ultimately delivering working software quickly and more frequently.
This article will cover the Agile development lifecycle and the process workflow that takes place during an iteration.
See how easy it is to create a Kanban board in Smartsheet
Kanban boards are fast and easy to create in Smartsheet in just two steps.
Agile Software Development vs. Waterfall Software Development
There isn’t a single methodology that you can apply across all projects. However, many teams are moving toward an adaptive methodology, such as Agile, and moving away from the predictive, Waterfall methodology when developing software. The conventional Waterfall development method follows strict phases, sticking to the original requirements and design plan created at the beginning of the project. A project manager spends time negotiating milestones, features, resources, working at length in the planning stages of a project, usually developing a full-blown project plan that details how the work will be moved through many gates to completion.
Customers finalize requirements before development begins and then a lengthy development process occurs, with the project manager tracking every movement of the project through each handoff and finally on to delivery. If everything goes well, this process produces an on-time, on-budget release. The chief drawbacks to this approach are well-documented: it is not responsive to change and it takes a long time to deliver working software. When technology forms the field of play and drives every change, a six month (or longer) release cycle, with requirements chiseled in stone, does not meet the business need.
The history behind Agile software development is one of frustration with the traditional waterfall methodology. Agile is designed to accommodate change and the need for faster software development (as discussed in the Agile Manifesto's Values and Principles). The project leader typically facilitates the work of the development team, eliminates bottlenecks, and helps the team stay focused in order to deliver software iterations on a regular basis. It is less about milestones than it is about hours, feature selection, prioritization, and meetings.
Unlike the Waterfall model, the development team ultimately decides at the beginning of a sprint (or iteration) what can be accomplished in the timeframe and sets out to build a series of features, delivering working software that can be installed in a production environment at the end of the sprint. Since Agile software development methods (such as Dynamic Systems Development Method- DSDM) are flexible, most are suitable for method tailoring – where development teams can adapt the flow to meet the needs of the product.
See how Smartsheet can help you be more effective
Watch the demo to see how you can more effectively manage your team, projects, and processes with real-time work management in Smartsheet.
The Agile Lifecycle
There are a variety of Agile software development (or system development) methodologies, including, but not limited to:
- Disciplined Agile Delivery (DAD)
- Adaptive Software Development
- Kanban
- Scrum
- Scrumban
- Extreme Programming (XP)
- Dynamic Systems Development (DSDM)
- Feature Driven Development
- Lean Software Development
The overall goal of each Agile method is to adapt to change and deliver working software as quickly as possible. However, each methodology has slight variations in the way it defines the phases of software development. Furthermore, even though the goal is the same, each team’s process flow may vary depending on the specific project or situation. As an example, the full Agile software development lifecycle includes the concept, inception, construction, release, production, and retirement phases.
The Agile Process Flow
- Concept - Projects are envisioned and prioritized
- Inception - Team members are identified, funding is put in place, and initial environments and requirements are discussed
- Iteration/Construction - The development team works to deliver working software based on iteration requirements and feedback
- Release - QA (Quality Assurance) testing, internal and external training, documentation development, and final release of the iteration into production
- Production - Ongoing support of the software
- Retirement - End-of-life activities, including customer notification and migration
This view presents the full Agile lifecycle model within the enterprise. In any enterprise there may be projects operating simultaneously, multiple sprints/iterations being logged on different product lines, and a variety of customers, both external and internal, with a range of business needs.
Agile Software Development Lifecycle
The Agile Iteration Workflow
The Agile software development lifecycle is dominated by the iterative process. Each iteration results in the next piece of the software development puzzle - working software and supporting elements, such as documentation, available for use by customers - until the final product is complete. Each iteration is usually two to four weeks in length and has a fixed completion time. Due to its time-bound nature, the iteration process is methodical and the scope of each iteration is only as broad as the allotted time allows.
Multiple iterations will take place during the Agile software development lifecycle and each follows its own workflow. During an iteration, it is important that the customers and business stakeholders provide feedback to ensure that the features meet their needs.
Agile
A typical iteration process flow can be visualized as follows:
- Requirements - Define the requirements for the iteration based on the product backlog, sprint backlog, customer and stakeholder feedback
- Development - Design and develop software based on defined requirements
- Testing - QA (Quality Assurance) testing, internal and external training, documentation development
- Delivery - Integrate and deliver the working iteration into production
- Feedback - Accept customer and stakeholder feedback and work it into the requirements of the next iteration
For the duration of the project, while additional features may be fed into the product backlog, the rest of the process is a matter of repeating the steps over and over until all of the items in the product backlog have been fulfilled. As a result, the process flow is more of a loop and not a linear process.
Making the Agile Process Work for You
As with any methodology, there are advantages and disadvantages (Read about the advantages and disadvantages of Agile). The Agile method is more suitable in situations where customers and project stakeholders are available to provide input, functional portions of software are needed quickly, flexibility is desired to accommodate changing requirements, and the team is co-located and able to effectively collaborate. As with any change, integrating Agile processes into your business can be overwhelming. Below are four activities that will help support the adoption of Agile workflow:
- Daily Meetings - Host consistent or daily stand-up meetings to maintain open communication, hold workers accountable, and keep each iteration moving forward
- Live Demonstrations - Deliver live demonstrations of each iteration’s final product to show progress
- Share Feedback - Receive feedback from stakeholders and customers and share it with the entire team before the next iteration begins
- Remain Agile - Make changes to your process based on feedback to ensure each iteration improves the last
Using Smartsheet to Manage the Agile Lifecycle
Empower your people to go above and beyond with a flexible platform designed to match the needs of your team — and adapt as those needs change.
The Smartsheet platform makes it easy to plan, capture, manage, and report on work from anywhere, helping your team be more effective and get more done. Report on key metrics and get real-time visibility into work as it happens with roll-up reports, dashboards, and automated workflows built to keep your team connected and informed.
What Is Agile Project Management
When teams have clarity into the work getting done, there’s no telling how much more they can accomplish in the same amount of time. Try Smartsheet for free, today.