The Rise of AgiFall
Although there are some subtle variations, there are basically two methods for software development. They are Waterfall and Agile together, they become AgiFall.
A balanced approach to software development that provides flexibility while maintaining focus on a well-defined scope provides the best of thosetwo most popular development methodologies. The primary goal of software development should be to provide functionality as quickly as possible, allowing for adjustments in the process, with the understanding that that there is an over-arching need that must be met to have a working solution at the end of the project.
Waterfall starts off with the creation of the vision and scope of the program. And then, defining in detail what it is going to do (requirements). Once the requirements are complete, they are passed on to the designer or architect. The architect designs the software and documents that design in the functional requirements from which developers can write the software code. At this point, the cost and the timeline of the overall development effort can be identified. Implementation, or development, is the next stage. Once completed, the program is passed on to a team that verifies all the functionality of the program. After that the software is released to the customer and goes into its maintenance cycle.Waterfall is a sequential process. If the program does not perform as desired, the process begins again from the top of the waterfall to create a second version.This type of development is suitable for programs with very specific and well defined functions. It's a very reliable way to get a product to market. Its costs can be contractually fixed and a customer knows that the product they get will match their specifications. However, identifying each and every detailed specification at the very beginning can be challenging. As a result, a strong Change Management Process is needed as part of the Waterfall process.
The alternate approach is called Agile. It is not a "method" per se but rather an umbrella term to describe the many variations to a philosophy or approach to development. The process begins with an analysis, design and implementation, just like waterfall. However, rather than try to design and develop the entire software application all at once, the software is broken down into sections which are prioritized in a backlog. Then, a small piece of functionality is selected for design and development. The goal is to get that piece of the software into the hands of end users quickly to check to see if it meets their needs. If not, adjustments can be made. Then, the next set of functionality follows the same process, and over time, the entire application comes together.The added bonus for the customer is that if they're not entirely clear on how it's going to function, or if they are up against a rapidly evolving market, they have the latitude to alter the the software throughout the development process..Can the two strategies be successfully combined?Everybody is looking for a better solution. Waterfall provides a fixed time frame and a fixed cost; Agile provides flexibility, feedback, and adaptability to achieve a more customized end-product with opportunity for end user or customer input along the way.
The result of trying to get the best of both worlds is called AgiFall. It consists of a much looser form of Waterfall methodology with Agile principles applied. It makes everything a little bit faster, a little bit less costly, and most importantly helps to improve the quality of the final product.The project begins with a discovery process in which all the key stakeholders meet to gather the high level requirements for the project. From there a document is created that focuses on the vision and scope. It consists of enough design work to allow for a high level estimation of effort during this phase. This helps customers set an overall target budget against which the desired features and functions of the software can be prioritized.Another key step prior to kick off is the prioritization of the features and time estimates into a high level plan for the overall project. Features are grouped into Iterations so that an overall project schedule can be developed to execute the project within the desired timeframe and budget.Once the Iterations begin, progress is tracked and adjustments to the plan are made based on the actual development, learnings, and interactions of the project team. These iterations are repeated until all items are completed, the project reaches the budgetary limit, or the final time for delivery has been reached.The result of this combined method is that the timeline speeds up considerably and errors are detected sooner and sent back for correction. Dealing with small errors as soon as they arise saves time and cost versus a major refactoring at the end of a project.
AgiFall incorporates Agile principles and provides a great product in a reasonable timeframe. It delivers the best of both worlds to ensure your software development project is a success.If you need highly-adaptable, versatile, beta-type development approach that can pivot on a dime, go Agile. If you must have completely fixed costs and contractual timetables, go with Waterfall. We think there’s an effective middle road when your vision for the final solution is still a little fuzzy.In any event, make sure you and your software partner discuss the development approach and that everyone is clear on how the process will work. Because different people use different approaches that all fall under the banner of Agile, it can get confusing and lead to trouble if you don’t spend a little time to define terminology and get on the same page.Be aware that there is a new player in town.
AgiFall might just provide you with the ultimate solution to your development needs. Check it out!