There are two closely related aspects to a team’s being agile: planning or project management, and execution or engineering practices. When people think about agile projects, the focus is often either on the planning and project management process or the engineering practices. It’s important to understand that both aspects work together. This article discusses how the way you execute your engineering practices can help your agile process be effective.
Agile methods acknowledge uncertainty and manage it with techniques that rely on transparency, inspection, and adaptation, with an emphasis on working software. Agile projects allow teams to adjust goals in response to technical issues or changes in current needs or future technical or market forces.
Some agile methods, such as XP, focus on technical practices. Others, such as Scrum, focus on project management practices. Both planning and execution are necessary for an agile approach to work. Good planning makes it easier to execute in an agile way. Agile plans can only be effective if the team follows good engineering practices that give you the feedback that you need to inspect and evaluate and a codebase that will allow you to adapt.
To understand how engineering practices can drive improvements in the agility of your team, you need to understand the cultural challenges of being agile, and some basics of agile planning.
Agile is about incremental progress and continuous improvement. To become a better agile team, you need to acknowledge uncertainty and the possibility of failure. In many teams, this is hard to do. Getting good feedback requires changes in how you define requirements, develop features, and interact with others in your organization.
Defining requirements with precise-enough definition to show whether you have met the goal, while also maintaining enough simplicity that you can move from specification to development quickly, can be challenging. Developing, maintaining working code, and coding and designing in a way that allows for incremental development and continual feedback require new approaches and skills. Change, learning, and accepting and giving feedback are often difficult.