Common reasons to adopt Agile and Scrum:
- accelerate time to market: deliver more value for your users, faster
- predictability: stabilize the release schedule
- increase quality: continuous improvement towards faster development and fewer mistakes
What is Agile?
Different people understand it differently. Project managers might see it as a new methodology of working that appeared as a reaction to the classic one, waterfall. Managers might see it as something that can improve business results because it worked for other similar companies. Developers might see it as yet another management idea.
To me, agile is more than that. It’s a new philosophy of work that combines three things: feeling good, being disciplined and focusing on results. When in an agile team, I
- feel good because I work with great people, I have a goal and I am very connected to results
- am disciplined because I know it helps the team and because the team helps me
- focus on results because I know the team’s goal and it satisfies me to fulfill it.
Agile started as a reaction against a style of work that was increasingly used in software development in the 90s. This style of work involved a lot of documentation and bureaucracy. The bureaucracy started from a big problem with software development: at least one-third of the projects were canceled while another third of the projects were going over budget. The natural response to such problems is to add more control.
Agile took a different route. The people who created the Agile Manifesto, the official birth certificate of the movement, thought that we can do better software with less micro-control and more macro-control. As a manager, they said, instead of focusing on what each person does, you should focus on what a team produces. As a team member, it is your responsibility to plan your own work, find solutions to the problems and improve your work environment so that you work better. As a manager, you should focus on how to provide the necessary freedom and environment that fosters collaboration and focuses on people and how to solve the problems that stand in their way (so-called impediments). As a team member, you are totally responsible for the results. As a manager, you only look at the results and at how to make your teams happier (because happy teams have great results).
If we take the example of a company that creates a newspaper, this is how agile would work:
- The manager sets goals and constraints. For example, we publish a new edition every week, we must sell at least 10000 copies, we never discuss topics related to politics.
- The team is formed from all the roles needed to create the newspaper. They can be writers, investigators, reviewers, photographers, designers. We would ideally want typographers on the team as well, but it’s not always possible.
- If the team is too large (larger than 9 people), multiple teams are created with complete responsibility for one slice of the product (for example sports section, external section, trivia section etc). Small teams have better collaboration and faster communication than large teams.
- The team creates its own process to deliver the newspaper in the given constraints. A few already defined frameworks exist, like Scrum or Kanban.
- After 6 months, the manager challenges the team with higher goals. For example: sell at least 20000 copies and avoid topics related to football players. The team tells him what they need to do in order to make it happen. For example better marketing, lower price by lowering production costs by changing the typography etc.
- Given these new constraints, the team must collaborate more closely. Maybe they must review each other’s articles so that they are of better quality. Maybe they pick topics together to tap into the ideas of each and every member of the team. Maybe they pair work on investigating a story (you should remember that one of the best investigation ever, the one on Watergate, was written in a pair: Bob Woodward and Carl Bernstein)
This example shows a few important agile concepts:
- Manage by goals, not by tasks. “It’s your responsibility as a team to deliver the newspaper every week and fulfill our goals.”
- The servant leader: “Let me know what you need to accomplish this goal and I promise to help you solve your problems.”
- The only measure of progress is a product that makes sense: “I don’t care if your article is 50% done. I want to see how the full newspaper evolves from the general structure through article titles and first draft for each article to the final version.” This approach is called incremental and iterative development.
- High-quality feedback early and often: Reviewing each article as early as possible, even in the first draft phase, helps increase the quality, reducing the creation time and improves the skills of the team. The final feedback is given by the readers: how many buy the newspaper? What do they think about each article?
- Trust: “I trust you can fulfill this goal, given the right conditions. I am here to create these conditions”
- Collaboration: If each journalist works on his or her own, the speed and quality of the end product will only be as good as they are. But if they work together, they learn from each other, improve the quality through reviews and deliver work faster. This is possible because they are knowledge workers; creating knowledge requires as much brain power as possible, unlike creating nuts and bolts.
When I first learned about these concepts, they totally made sense to me. I liked that each role of a company is pulling its own weight. The managers think about strategy, growing the teams, improving results. The creative people have the freedom to innovate and use their skills as long as their work helps the goals of the company. Everyone is helping everyone instead of one person controlling the others. The administrative people have more predictability because the team synchronizes often.
Principles behind the Agile Manifesto
We follow these principles:
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Business people and developers must work together daily throughout the project.
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Working software is the primary measure of progress.
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Continuous attention to technical excellence and good design enhances agility.
Simplicity–the art of maximizing the amount of work not done–is essential.
The best architectures, requirements, and designs emerge from self-organizing teams.
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.