What is Agile?
Agile is a term used to describe approaches to software development emphasizing incremental delivery, team collaboration, continual planning, and continual learning where requirements and solutions evolve through collaboration. Agile software development refers to a group of software development methodologies based on iterative development.
Agile was created to mitigate against projects failure due to the waterfall model where Requirement, Design, implementation and testing were done sequentially.
Agile is not a process or set of practices. It’s a mindset and behavior, a way to develop software so that it sees the light of day and that is what customers needs.
Simply put, the most important part is all about having the “right” mindset. Below is a diagram by Dr. Ahmed Sidky that shows that Agile is a mindset. There are many practices that can be used, however using these practices without the principles, values and mindset is not Agile.
Unlimited Number of Practices: There are many specific agile development methods. Most promote development, teamwork, collaboration, and process adaptability throughout the life-cycle of the project.
The most popular Agile software development methodology are:
• Scrum – it is a good framework of practices (e.g. Daily Standups, etc) that helps with project management and the discipline. Is a good start to implementing Agile. However Scrum without Lean and Agile values will fail!
• XP – Scrum goes into practices that encourage technical excellence practices such as Test Driven Development (TDD), Test Driven Development, Refactoring, Pair Programming, Continuous Integration and Delivery, etc. XP practices compliment Scrum practices.
• Kanban – Consider for Development and operational teams such as DevOps whose nature of work and priorities are very dynamic
Why Adopt Agile:
• Shorten Time to Market
• Increase Productivity
• Improve Alignment with the Business
• Improve Predictability
• Better Team Morale and confidence
How to adopt Agile -
New to Agile
• If you have a waterfall or a similar model considering moving to an Agile model. Crucial to get executive/management buy in and support.
• Explain how Agile to your executive/management on how Agile would improve business outcomes and a proposal for adoption.
• Identify folks within your team who are proponents of Agile who will evangelize Agile to the rest of the team. Bring on board an Agile coach internally or externally.
• The Agile coach or a trainer can provide training and sell the benefits of Agile. It is very important that the team has a buy in for adopting Agile. Expect resistance for some because it is a change.
• Create Agile team of 6-9 people that is cross-functional in nature e.g. developers, Quality Engineers, Product Owner, a Scrum Master (this can be someone within the team or a specialized role=, etc. Have an ownership and accountability of a product/ sub-product/module
• When hiring for your team in the future, bring in folks who are proficient in Agile. They will bring in their ideas and culture to your team.
• Start with Scrum Practices and a few Agile Principles that the team wants to adopt. Here is what a Scrum Model looks like:
• Adopt user stories that shift focus to the customer’s goals. All agile user stories include a written sentence or two and, more importantly, a series of conversations about the desired functionality. It is of the following format:
As a < type of user >, I want < some goal > so that < some reason >.
• Adopt online tools (eg. Altassian, Trello) preferably with physical boards for measuring progress. I prefer physical boards as it provides the status of the team all the time and it is satisfying to move a card to done.
• Done means done! Setup a definition of done (DoD) only after which a piece of work is considered done. Here is an example:
o Tests and code have been implemented to support the user story
o CI build and all tests pass
o The code has passed review from at least one engineer
o Relevant documentation has been written or updated
o QE have updated and executed relevant tests
o QE have not found any Critical or High priority bugs
o Product Owner has signed off that the user story meets the requirements
• In order to facilitate tight collaboration between the team members have them seated together in an open areas so that they can easily talk to each other
• Start measuring Agile metrics such as velocity, burn down chart etc that is usually part of a tool
• Facilitate the team interact with the customer whether they are external or internal. Product Owner can be also a customer for the team.
• Reinvent Agile as the team goes along: Improve processes, practices, communication and collaboration, inspect and adapt. Having agile coach to guide and direct, who would also perform audits and reviews so as to help the team in adapting the best practices and fill any process gaps. Definitely, such process supports would be required by the team to sail through the agile journey even against the wind.
• Finally, Agile adoption requires persistence to make it work. There will be failures and frustrations but look at this as a path to eventually getting it right. One of the worst things to do is give up the adoption agile early under pressure when things are not going as expected. You should be prepared for at least a 6 month process before you call it quits
Already started on your Agile journey
Congratulations! Ask yourself:
• Is an Agile mindset and culture is in place in your team? Are the Agile practices being followed? Here is a quick checklist:
o Are your sprints 2-4 weeks in place, where you are delivering a potentially shippable product that is tested?
o Is Definition of Done in place and followed?
o Are demos to business stakeholders/customers happening?
o Is the team open to changes in scope to deliver what business needs most?
o Are you adopting technical best practices from XP such as pair programming, Test Driven Development, Continuous Integration, etc?
o Do you have ceremonies such as the Daily Standups, Sprint Planning Meetings, and Retrospective after every meeting
o PO roles and Scrum Master roles are well defined and followed?
o Is there a team culture of transparency, openness and continuous improvement?
o Do you have tools that facilitate Agile development?
o Are you tracking some of the Agile metrics such as velocity?
o Is your team sitting together and collaboration frequently to resolve issues? Are they working as a cohesive team?
o Does your team have a Product and Sprint Backlog?
• Are you getting the results you expected (See Why Adopt Agile section above)?
• Is there Executive/Management support for Agile in your organization?
I recommend an external Agile Expert to come in and do the analysis for your team.