Instead of only one long iteration of performing these SDLC activities sequentially, an Agile team works with the client or stakeholder to identify the highest priority business needs. It then repeatedly conducts these activities in short durations (sprints) to deliver these needs early and often in the project cycle.
Responsibilities And Deliverables To Consider
The Agile Process
A common theme in Agile methodologies is the adaptation of a methodology and procedures to a given team or organization’s culture, history, and staff. Leading with someone that understands how this is done can create a perfect fit for your project, your development team, and your organization.
Listed below are examples of the responsibilities and deliverables your development team must consider:
- Provide development process/methodology assessment, mentoring, and guidance.
- Outline methodology to be followed, keeping in mind industry best practices and client standards.
- Quantify and outline milestones to ensure project is on track.
- Outline deployment strategy.
- Provide a framework to log activities.
- Ensure that new system is easy to understand and maintain.
- Provide an outline to ensure security requirements are met, ranging from authentication/authorization to securing data from accidental damage or penetration.
- Implement change management process.
- Identify component dependencies (other applications, external data feeds, etc.).
- Establish volume objectives (throughput, storage, etc.).
- Ensure the product adheres to service level agreements.
- Implement access/security constraints.
- Ensure the product adheres to auditing/regulatory requirements.
- Establish and enforce accessibility standards.
- Provide system and technical design document.
Solve The Right Problem
A key consideration for an agile development project is, “What problem are we solving?” This is a more difficult question than it seems at first. For clients, there are near-term, medium-term, and long-term needs for their software. Some business groups within the client’s company may want different functionalities from other groups.
Agile development allows us to test out potential solutions without committing to the long term and that is powerful. We can build a minimum viable product and present it to the client within a few weeks. From there, we have something concrete that we can test and gather feedback on. If that prototype promises to be successful, then great. We’ll add more features and functionality to it (in similar quick sprints and feedback cycles) to get it ready for deployment. If the early prototype misses the mark for exactly what the client needs, we only spent a few weeks on it and we can easily re-tool our solution based on feedback.
This ability to solve the right problem is the most significant advantage of agile development. It’s also what makes estimation so hard. Often, the problem we’re solving can change. So how do we create reasonable estimates for our clients?