It was over ten years ago that Agile was introduced to the development world. In that time, the development methodology has found great success. It has been implemented in organizations of all shapes and sizes. Its core values of small, iterative cycles, frequent deliverables, and measurable progress have become very attractive to businesses. Scrum, Feature Driven Development, and Extreme Development are common implementations of Agile. Although each approach has its differences, they strive toward the same result. At a glance, Agile is an excellent tool in battling unnecessary development and dissatisfied stakeholders. These elements have plagued software development projects for years. Agile's short programming cycles often promote a common question. What about the long-term focus of a project or product?
This is an important question that should not be overlooked. Application architecture and feature direction should not be taken lightly. A poor decision at this point can lead to customer frustration, low employee morale, and an overall lost of productivity. Although short iterations do not inherently encourage long-term thinking, Scrum's concept of a product backlog helps. The product backlog is a placeholder for all future requirements outside of the current iteration. These requirements are prioritized by constraints such as risk and business value. Continuous grooming of the product backlog is also encouraged during each sprint. So Agile has it covered, right? Not quite.
Although Agile lays the foundation for long-term thinking, the framework and execution are left to the team. This is unfortunate but can be overcome. Agile's support of self-organizing teams allows for the proper implementation of a framework. It's important for teams to define guidelines for managing long-term planning, focus, and grooming. The following section outlines a few strategies...
- Provide a quick status on long-term initiatives after each iteration.
- Setup recurring "long-term focus" meetings to discuss product direction, technical considerations, company goals, and much more. These are separate from task oriented meetings such as grooming.
- It's important to openly recognize and clarify short-term versus long-term solutions to areas such as problems, requirements, and conflicting priorities.
- If possible, avoid cannibalizing long-term planning for the completion of an iteration. Make it a priority.
- Provide an easy way for team members and stakeholders to contribute to the long-term direction.
- Build in break levers for team members to red flag work that might have potential long-term effects.
- Each team should assign one or two individuals such as a senior developer, team lead, or architect to help maintain the long-term focus. Including all teams members is not an effective use of the team's effort.
- Group items into themes and keep them in a visible location for continuous reference.
- Communicate, communicate, communicate. Constant conversation is key to avoiding long-term pitfalls.