Agile is a way to manage projects in an efficient and effective way. It can be used for any type of projects, but it was mainly founded in software development. Agile breaks down larger projects into small, manageable chunks called iterations. At the end of each iteration, something of value is produced. The product which is produced during each iteration should be a usable product to gain feedback from users or stakeholders.
Agile refers to any process that cope with the concepts of the Agile Manifesto. In 2001, 17 software developers met to discuss lightweight and efficient development methods. They published the Manifesto for Agile Software Development, which covered how they found “better ways of developing software by doing it and helping others do it.”
Unlike Waterfall project management, which is strictly sequential: you don’t start design until research is done and you don’t start development until the designs are completed; agile has designers, developers and business people working together simultaneously and in parallel.
There are many different flavors of agile. It is up to your team to come up with the best process for you. All these flavors follow a short life cycle which repeats during each iteration. Not all phases in the agile development cycle may happen in succession. They are flexible and always evolving and improving, with many happening in the parallel.
- Requirements Analysis: Key stakeholders and users meet to identify business requirements that are quantifiable, relevant and detailed.
- Planning: Once an idea is confirmed viable, the project team comes together to identify features, prioritize each feature and assign them to an iteration.
- Design: The design is prepared from the requirements identified and the team considers what the product or solution will look like, deciding on a test strategy or plan to proceed.
- Implementation or Development: Developing features and scheduling iterations for deployment.
- Testing: Test the code against the requirements to make sure the product is actually solving customer needs. This phase includes unit testing, integration testing, system testing, and acceptance testing.
- Deployment: Deliver the product to customers. Once customers start using the product, they may run into new problems that the project team will need to address in future iterations.
Agile allows you to roll out your concept to your users as quickly as possible. During every sprint an agile project delivers something of value and testable. At any point, you may determine you want to launch what has been delivered and start building a user base or testing your hypothesis. Conducting testing during each iteration means that bugs get identified and solved more quickly.
Flexibility & Embracing Change
Agile project management is based on accommodating change. Software projects consistently change. As a software product comes to life or the market expands, you should be able to react and update the product accordingly. With shorter planning development cycles, there’s always a room and opportunity to refine and re-prioritize the backlog to handle changes throughout the project.
Agile is extremely beneficial for projects where the end-goal is not clearly defined. As the project progresses, the goals will become more evident and clear and the team can adapt accordingly.
Incremental releases means that the product can be used early in the process by the stakeholders. Embracing change in agile means it is not a problem to change the scope midway through the project, unlike waterfall project management, where it is impossible to talk about change in the middle of the project.
Strong Team Interaction
Agile embraces frequent communication and face-to-face conversations and ensures that every team member is on the same page. Thus, enhancing transparency throughout the project without doubts and negative thoughts.
There are a number of specific methodologies to implement agile. We will describe only two of the top used agile methodologies: Scrum and Kanban. Other methods are Extreme Programming (XP), Feature-Driven Development (FDD), Adaptive System Development (ASD), Dynamic Systems Development Method (DSDM), Lean Software Development (LSD) and Crystal Clear.
Scrum is one of the most popular implementation methods of agile. It is an iterative development model often used to manage complex software and product development. Fixed-length iterations called sprints lasting one to two weeks long, allow the team to ship software on a regular basis. At the end of each sprint, stakeholders and team members meet to plan next steps.
Scrum Process Steps
- Product Backlog: It is a list of all the desired features for the product. Before each sprint, the product owner presents the top items on the backlog in a sprint planning meeting. The team determines the work they can complete during the sprint and moves the work from the product backlog to the sprint backlog.
- Backlog refinement: At the end of each sprint, the team and the product owner meet to make sure that the product backlog is ready for the next sprint. The team may remove tasks and stories that are not relevant. Also, due to some bottlenecks, there may be some tasks which could not be completed during the previous sprint and can be moved to the next sprint.
- Daily Scrum meetings: This is a 15-minute stand-up meeting that has to be happen at the same time and place daily during the sprint. Each person in the team has to answer 3 questions:
- What did you do yesterday?
- What are you going to do today?
- Do you need any help or are there any blockers in the way?
- Sprint review meeting: At the end of each sprint, the team presents the work they have completed as a live, workable demo. Also at the end of each sprint, the team discusses about how well Scrum is working for them and suggests any changes that need to be made in the next sprint. This meeting is called Sprint Retrospective.
Kanban means ‘visual sign’ in Japanese. It is a visual framework used to implement Agile and shows what to produce, when to produce it and how much to produce. It encourages small, incremental changes to your current system and does not require a certain set up or procedure, which means, you can overlay Kanban on top of existing workflows.
A Kanban board is a tool to implement the Kanban method for projects. Traditionally, this tool has been a physical board, with magnets, plastic chips or sticky notes on a whiteboard. In the recent years, many project management software tools have created online Kanban boards.
A Kanban board, is made up of different swim lanes or columns. The simplest boards have three columns: To do, in progress and done. They also may consist of backlog, ready, coding, testing, approval and done columns.
Core Practices of Kanban
Every Kanban project should follow these core principles and practices:
Visualize the workflow: A visual representation of your work allows you to understand the big picture and see how the flow of work progresses. By making all the work visible you can identify issues early on and improve collaboration between teams.
Manage & enhance the flow: The flow of work throughout the Kanban board shoule be monitored for possible improvements. A fast, smooth flow shows the team is creating value quickly.
Limit work in progress (WIP): Work in progress limit determines the minimum and maximum amount of work for each column on the board or for each workflow. By putting a limit on WIP, you can increase speed and flexibility and reduce the need for prioritizing tasks.
Make explicit process policies: Everyone needs to understand how things work or what qualifies as ‘done’. Modify the board to make these processes more clear.
Improve continuously: The Kanban method encourages small, continues changes that stick. Once the Kanban system is in place, the team will be able to identify and understand issues and suggest improvements.
In our next post on agile project management, we will discuss key differences between Scrum and Kanban and how to use one or both for your benefits.