A wishful thinking as a project manager, or a product owner is to meet deadlines and requirements of a client when developing a software.
It’s wishful because most of the times, deadlines are crossed, and requirements are either vague or alter.
Complex and sophisticated sort of software solutions are usually built by following agile approach.
Do you know 71% of the companies are using the Agile SDLC methodology?
This blog is for project managers and product owners who probably don’t clearly understand what is agile software development and how to put it into practice the best possible way.
Table of Contents
1- What is agile software development?
Before agile methodology was introduced, the Waterfall model was used mostly for project management and had many loopholes. In that model, each management stage comes after the other and work happens in stages’ sequence. From requirement gathering to ultimate project/product launch.
However, everything changed when agile methodology came into existence.
Do you know companies were using Waterfall model for software development before 2001?
Agile software development is all about flexibility i.e. anything can be changed at any given time. The focus was shifted from instruments/stages to more on people and collaboration. Moreover, the methodology doesn’t require much documentation where stakeholders spend hours and hours on materials/ resources that they may not need later or want to replace. Communication and such tools are key here.
Some key principles of agile methodology
1- Early and continuous delivery. Keep customer satisfaction as the highest priority. This is done by delivering the valuable software before time and the development is a continuous process rather than the end result.
2- Change in requirements at any development stage even at later stages. Agile development supports development changes at any stage keeping the competitive market in sight.
3- Agile project management delivers the working software frequently in a couple of weeks to a couple of months and the client doesn’t have to wait for 6 months to one year to see his product/service getting mature/developed.
4- Cross-functional teams (business and development) must work together daily till the project lasts.
5- Motivated people must be handed over the projects by offering them a conducive environment (trust) and support. This doesn’t involve micromanagement, rather empowering employees.
6- Face-to-face conversation is effective. Now teams collaborate via video calls but when the methodology was introduced it was highly appreciated to have face-to-face conversations/discussions.
7- Workable software is the ultimate goal. No matter how many hours your team spent if the software isn’t working, all of the efforts are useless.
8- Agile method promotes sustainable development including developers, sponsors, and users.
9- Achieving excellence daily or frequently improves agility in itself. This means giving attention to technical aspects and design continuously.
10- Keep things simple. If a task/project is possible with some easy way possible, why not.
11- Self-organization of teams delivers best designs and architectures.
12- Teams should reflect regularly, keep meetings aligned, become more effective.
2- The most used agile frameworks
1- A framework where team works in sprints typically of 2-4 weeks time long but usually do not cross a calendar month.
2- Before creating sprints, Sprint Goals are generated by the team involved and they get product backlog items needed for delivery.
3- Product backlog is created by the team in the sprint.
4- A daily scrum of 15 minutes covers the project/sprint progress and if there are any changes required.
5- At the end of each sprint, the completed tasks are termed under ‘ready for release’.
6- A Sprint Review takes place when the sprint is completed, highlights what’s done and feedback is discussed.
7- A Sprint Retrospective is where the team discusses what they learned from the last sprint and how they can improve in the future.
Here’s the process:
Product backlog > sprint planning > sprint backlog > daily scrum > sprint review
Another popular agile framework is Kanban which is mentioned in the Agile Manifesto. This one is different from Scrum and keeps the tasks/sprints going rather than being stuck or blocked or delayed.
1- Kanban limits the number of items/tasks in development but that doesn’t mean the hired team do less but the workflow is defined in a way that all team members are involved.
Here’s the process:
Tasks backlog > to-do > in-progress > test > deploy
2- Collectively team puts tasks on the board (any tool online) and uses columns to see work status. This allows all stakeholders to see the progress.
3- Active workflow enables you to identify where the task is stuck, helps in unblocking items and quickens the development process.
4- Continuous improvement and better teamwork.
EXTREME PROGRAMMING (XP)
1- A framework with a focus on delivery quality where developers strictly adhere to coding standards.
2- A test-driven development, a developer writes the code for the test and after testing the feature/code proceeds further in development.
3- Code is written in pairs, one developer writes the test code whereas the other developer writes the feature code.
4- Short iterations i.e. 2 weeks for development after planning.
5- Enough design and architecture are developed for building current iteration.
6- A continuous code integration with codebase i.e. a code is counter-checked with master code frequently.
3- Examples of agile project management
Often the frameworks of agile project development are quoted as examples, true in a way.
Backlog - an intake system is built where all requirements are broken down into tasks and usually put into backlog before development. During agile plannings, teams decide the tasks’ priority.
Sprints- a short iteration of 2-4 weeks where doable tasks are worked on and after completion, they are moved for sprint review.
Agile board - typically a Kanban board fits here. Where the progress can be tracked by anyone involved in the development/business.
4- Difference between:
Agile vs Scrum
1- Major difference between agile and scrum is that agile is a methodology whereas scrum is one of the frameworks of agile methodology.
2- Scrum is done using sprints, small deliverables. Agile methodology encircles everything which is delivered at the end of the project.
3- Agile has members from cross-functional teams whereas scrum project team typically has Scrum Master and Product Owner.
Agile vs Waterfall
1- Agile methodology is latest and flexible whereas Waterfall is old and rigid when it comes to software development.
2- Agile is iterative and adaptive approach towards project management whereas Waterfall is linear and doesn’t allow changes during or later stages of development.
3- Waterfall can work well for small projects whereas agile is good for complex and unique projects.
4- Agile involves client feedback whereas Waterfall doesn’t involve client.
Agile vs Kanban
1- Agile is a project management methodology whereas Kanban is one of the agile frameworks.
2- Workflow visualization using Kanban board happens in Kanban framework whereas in agile end product or result is concerned.
3- Focused on task management from column to column as they complete, agile is an overall project management process.
Agile vs DevOps
1- Agile focus is on developers and development cycles whereas DevOps enables operation teams for continuous integration and deployment.
2- DevOps nurture the relationship between two teams working in silos whereas the agile focus is on the organization to move away from the conventional rigid development processes.
3- Agile involves sprints, boards, etc. whereas DevOps may have hyper releases per day.
5- Kind of projects ideal for agile software development
Clients are often confused if their project is meant for agile software development or other frameworks like we mentioned earlier.
Agile project management is meant for complex and long projects where the focus is continuous development delivery and iterations/changes are possible whenever demanded from the client.
Simple and typical projects can be accomplished by using Waterfall methodology. Agile project management delivers well-organized software, highly adaptable to changing environments/requirements. If the goal is clear, and have sufficient time, this is when you shouldn’t be using agile.
In many cases, clients prefer clear documentation and detailing of each and every change/phase of development. Agile doesn’t support that much documentation since there is continuous development, interaction between teams and on the way adaptations and clear documentation may not be provided.
If you laid down all the benefits of agile methodology for a given software project and client seems reluctant, don’t force or push. Without customer continuous feedback and high involvement, the agile software development is impossible.