Last week, I covered what Waterfall Development is. Before we made a big push to implement Agile Methodology, we used this more traditional method, which can work well for projects that have very stable, documented requirements. This week, I’d like to explain Agile Development in a bit more detail than we’ve previously explained here on the blog.
Agile Methodology is an alternative to Waterfall and the main difference is the phases of development can be scheduled and executed iteratively, like on the picture to the left. The Agile process enables us to focus on delivering a custom software solution providing the highest business value functionality in multiple iterations, without the need to plan out every step in advance.
This allows our clients to see and touch the solution we are creating at the end of each iteration, typically after three to four weeks. We use this hands-on experience to help elaborate additional requirements and desired capabilities.
The iteration process is straightforward and provides an opportunity for Entrance to work closely with the client to refine the requirements and implementation of the requirements. Specifically:
- At the beginning of every iteration we evaluate the relevance of the existing requirements; some requirements may no longer be valid, others may need to be changed or new requirements may have been uncovered. Once the requirements have been evaluated and prioritized, Entrance then begins the process of building the appropriate software solution.
- Throughout the iteration, the solution is tested and evaluated by our developers, Quality Assurance (QA) team and the client against the requirements to ensure we are building the right solution.
- At the end of the iteration, a demonstration is conducted to show the client the capability that was built and to get feedback on the implementation. This provides the Client the opportunity to see and touch the solution, which is the impetus for refining the requirements, which will be implemented in the subsequent iterations.
- Lessons-learned from each iteration are captured and reviewed in an end of iteration “retrospective”. The lessons-learned are applied to subsequent iterations to create a continuous improvement cycle throughout the life of the project.
The Agile process works best when not all requirements are known at the onset of the project and there is a need to be flexible to accommodate changes in requirements as the Client learns more about what they need or want in a technology solution. This process allows for changes to requirements to be made throughout the lifecycle of the software development. This is accomplished at the beginning of each iteration where there is a deliberate and purposeful discussion about the relevant and most current requirements; as long as the Client is willing to make trade-offs regarding priority and scope of requirements this change process will easily accommodate a need to progressively develop a technology solution.
Although we can and do can utilize either the Waterfall or Agile approaches, we generally recommend the Agile Software Development process be utilized for most projects. The Agile process allows the internal and external teams to work closely together to build a solution that is relevant to changing or unknown needs.
Next week I will cover using Agile Methodology to uncover our client’s business goals with User Stories, so be sure to check back!
Get more here on how we work and our processes…