What does Agile mean to your organization?
Today it is almost 'bon ton' to talk about being 'Agile'. It is as if the word is written on billboards along every road you take: if you want innovations, be Agile; if you want to understand your clients, be Agile; if you want to manage your personnel, you seem to have no other choice.
And the market responds. Your bank is introducing a new Agile team to react to clients’ demands. A software company you approach to make a webshop proudly describes its Agile processes.
In reality, these are different Agiles and you may be prepared that businesses in different industries have quite different approaches.
In a broad sense, the one that you usually come across when speaking about the organization of a business as a whole, 'Agile' refers to the type of organization that incorporates small independent teams of people who have many or most of the skills the team needs to carry out its mission. Such teams are usually focused and dedicated groups of specialists created to work on a specific project that typically requires communication with customers and prompt decisions.
What characterizes such groups?
- Small size: Fun fact: Amazon CEO Jeff Bezos contends that a team is too big when it needs more than two pizza pies for lunch.
- Multidisciplinarity: Rather than having technology-based departments, required experts are embedded into a group of versatile specialists capable of performing the full cycle of work on a project on their own.
- Empowerment:Critically, Agile teams should have the authority and the resources to carry out projects without first seeking corporate approval and internal support, such as funding, planning and human resources.
- Accountability:despite greater independence allowing teams to make day-to-day, small stakes decisions, the decisions that could have significant consequences or that can only be made effectively with input and sign-off from multiple parts of the organization should be escalated to higher management.
- Individual significance: in small multidisciplinary teams, everyone matters, and selecting strong performers becomes an utmost priority.
- Clear goals: Agile teams should have the full picture of the project, clear vision of its objectives, stages and tasks, and the available resources.
Most importantly, independent teams should be created in meaningful areas, such as processes and capabilities that directly affect the customer experience where their multidisciplinary perspective, quick reaction and first-hand communication with clients can add the maximum value.
When you hear about Agile processes in IT, you should think of a narrower sense of this word related to Agile methodology which is based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. In its essence, the Agile approach suggests that high-quality, adaptive software can be developed by small teams using the principles of continuous design improvement and testing based on rapid feedback and change.
Hence, Agile processes encourage frequent inspection and adaptation; they promote teamwork, self-organization and accountability, as well as engineering best practices intended to allow for rapid delivery of high-quality software, and a business approach that aligns development with customer needs and company goals.
Agile development refers to any development process that is aligned with the concepts of the Agile Manifesto, developed by fourteen leading figures in the software industry and listing the key values and principles of Agile development as opposed to traditional approaches.
The Agile approach comes in different flavors, or frameworks: Scrum, Kanban, XP, or Extreme Programming, and Lean to name the most popular.
Scrum is a management framework used to organize work into small, manageable pieces that can be completed within a prescribed time period, called a sprint (2-4 weeks). In planning, organization and process management Scrum relies on at least three prescribed roles: a product owner (responsible for initial planning, prioritizing, and communication with the rest of the company), a Scrum master (responsible for overseeing the process during each sprint), and team members. Another common tool is the Scrum board : a visual representation of the workflow, broken down into manageable chunks called 'stories', with each story moved along the board from the 'backlog' (the to-do list), into work-in-progress (WIP), and on to completion. Probably, if you have been talking about Agile, you have heard the word Scrum: it has grown in popularity tremendously because it is rather simple and has a proven productivity boost.
Kanban is used to manage the project’s creation with an emphasis on the continued delivery and not overburdening the development team. Unlike Scrum, it does not have fixed periods of time to deliver results, but it rather relies on continuous work flowing from task to task. The method promotes continued collaboration by the client and team and encourages ongoing learning and improvements to provide the best possible workflow. Its main principles include visualization of work, limiting the number of simultaneous tasks and enhancing the workflow.
Extreme Programming (XP) is one of the most popular and at the same time controversial Agile methodologies. In its core, it is a highly disciplined method of continually delivering high-quality software faster. The customer is actively involved with the team in continued planning, testing and rapid feedback to deliver working software frequently. The software is supposed to be delivered in intervals of one to three weeks.
Lean software development is a value-based iteration methodology originally developed by Mary and Tom Poppendieck. It focuses on giving the customer an efficient 'value stream' mechanism that delivers the value to the project. By choosing only the features that have real value for the system, prioritizing and delivering them in small batches eliminates waste. Instead, the lean methodology emphasizes on speed and efficiency; relying on rapid, reliable feedback between customers and programmers. This methodology focuses on the efficiencies of its team’s resources, ensuring everyone is as productive as possible.
If you know how to use it, the Agile approach can deliver results faster and in a more controlled way. This article is only the beginning of a long journey, but it gives some understanding of what to expect from a software developing company that boasts about their agility, know how it differs from agility in banks and who the hell a Scrum master is.