What to do and what not to do to make agile work for your team
Agile has been a hype word in the industry for a few years now. Many agile ideas surfaced in the 1970s and it was explained as a reaction against traditional approaches to project development. It is a set of values and principles used as a foundation for decision making within teams. The approach offers users new versions/releases of software development following brief periods of work, which are known as sprints. With traditional methodologies, the project is released at the end of the project cycle. Companies such as IBM openly use agile methods to develop software.
Agile values
The main agile values stated by the Agile manifesto are:
- individuals and interactions over processes and tools;
- working software over comprehensive documentation;
- customer collaboration over contract negotiation; and
- responding to change over following a plan.
Scrum
Scrum is the most used of the many frameworks of the agile methodology. It is characterised by cycles or stages of development which are known as sprints. They are usually sequential periods of time, with one immediately following the other and the team will have a sprint planning meeting where they decide on tasks and projects they will focus on during the sprint period. Sprints break down big complex projects into bitesize pieces, which helps to make projects more manageable.
In the scrum team, there will be a scrum master who will be holding the team accountable and make sure everyone stays on task and is abiding by the agile values and principles. The product owner is responsible for maximising the value of the product resulting from the work of the development team. The development team are professionals who do the work delivering a releasable increment of the product at the end of each sprint.
Advantages
-Increases motivation because programmers want to work to meet deadlines every sprint.
-Focus on quality is the main focus in the scrum method.
Allows developers to reorganise priorities.
Disadvantages
-It could be easy for teams to lose focus on the project as a whole because they will spend periods of time focusing one part of it.
-Lack of defined roles for some developers which could lead to confusion amongst team members.
Kanban
Kanban is similar to scrum but it doesn’t involve sprints. The work is done in no blocks dedicated to specific parts of a project. This method uses a Kanban board which is a table divided into columns that show every flow of production. As the development evolves, the information on the table changes. When there is a new task a new card is created. Instead of a scrum master, there will be an Agile Coach who will be overseeing all the tasks and they decide on the number of tasks that a team can take on at a given time.
Advantages
-The team can view all the tasks of a project.
-Allows continuous deliveries.
-You can limit the number of running tasks, taking into consideration their resolution and deliverability.
Disadvantages
-Members of the team can misinterpret the information on the board especially when its revealed its outdated.
-There can be time related issues such as delays because there are no time frames to the Kanban system.
Lean Development
Lean comes from lean manufacturing. There are 7 essential principles to this method and these are:
- Eliminate waste: Deleting anything that does not add value to the customer’s project
- Build in quality: Use agile practices which build quality into the process such as pair programming- two programmers work together at one workstation. Test Driven Development (TDD)- where you write a test before you write just enough production code to fulfil that test.
- Create knowledge: Promote strategies, such as iterative development, that help teams discover what stakeholders really want and act on that knowledge.
- Defer commitment: Don’t focus too much on planning and anticipating ideas without having a prior and complete understanding of the requirements of the business)
- Fast delivery: Deliver value to the customer as soon as possible instead of working recklessly for the sake of speed
- Respect the team: Respect for people is often neglected.
Lean development teams can encourage respect for people by communicating and managing conflicts and empowering each other to do their best work. - Optimise the whole: The development sequence has to be perfected enough to be able to delete errors in the code.
Advantages
-Allows the team to delete unnecessary activity which saves money and time.
-Development is prepared in teams in the decision making process which decreases the time needed to deliver functionalities.
-Easily adaptable to projects any dimensions.
Disadvantages
-You will need extremely dedicated and talented developers because the methodology is dependent on the team’s abilities.
-Easy to lose focus because the tasks are divided into a number of elements.
Agile has been credited with making software projects more successful at meeting user, customer and business needs. If you are thinking about employing agile methods to your team we hope that this has helped you start thinking about a different way of working.