Posted by Molly on June 29, 2018, 10:05 a.m.
If you're looking to start a custom software development project, you're likely reading a lot about different strategies for planning your project. Since Fusionbox specializes in custom Python development, we've put a lot of thought into how we manage our software projects. Like many developers, we've chosen to use Agile development practices, but what does that really mean for your project?
A traditional estimate and fixed scope of work supports Waterfall practices, which can introduce undue constraints on the development of your project. Agile gives you the most flexibility and control over development of your project, which is especially useful if you’re new to software development.
So, let’s say you want to take a trip. Using Waterfall and a fixed scope of work is like presenting us with a detailed itinerary for a train trip and asking how much the trip will cost. Using Agile is like presenting us with a target destination for a road trip, your budget for gas money, and the amount of PTO days you have available. Then we’ll work together to determine a route that has the most value to you.
On the train trip, you'll be constrained by the choices you made prior to boarding. Any change in itinerary will be expensive and your options will be significantly limited by factors like the schedule of the train, the direction of travel, and the placement of tracks and stations. If there's any unexpected delay due to weather or technical difficulties, you won't have much agency - you're merely a passenger and the conductor's only obligation is getting you to the city listed on your ticket. If it takes longer than promised, they'll apologize for the inconvenience but that's about it. If you want to change plans, you're responsible for the cost.
On the road trip, you'll still have a plan for where you want to go and what you want to do along the way. The difference is largely in agency and flexibility. You're able to take factors like the travel conditions you're experiencing and the input of the other travelers in the car to adjust your itinerary and maximize value. Maybe you won't check every box on your itinerary, but you were the one to make conscious, informed decisions about what was most important to you.
Once the project is complete, these two processes also offer significant differences in evaluating success. Traditional Waterfall project management asks:
- Did we follow the itinerary exactly?
- Did we get where we said we'd go when we said we'd get there?
- Did we anticipate and avoid every possible obstacle?
Meanwhile, Agile asks:
- Did we get somewhere we want to be?
- Did we meet our goals for the trip?
- Did we overcome obstacles efficiently?
So at the end of the train trip, success criteria is always the same and always determined by the conductor. Did they get passengers from City A to City B? On the road trip, however, success criteria is flexible and determined by you. Did the trip accomplish your objectives and produce value?
The success criteria for a Waterfall project is narrow and inflexible, and while it does have value in certain types of projects, software development can be unpredictable, especially when you're building custom software for a novel purpose and using technology that's evolving as you develop. Agile does not abandon documentation or planning, but rather continues those processes throughout development, allowing you to make informed decisions based on real - and not projected - progress. Ultimately, Agile strives to satisfy the goals and values of the stakeholders and end users, rather than the language of the project plan.
"Agile does not abandon documentation or planning, but rather continues those processes throughout development, allowing you to make informed decisions."
The Waterfall development process is driven entirely by adherence to an intricate plan with fixed requirements. Unfortunately, documenting each implementation detail in advance does not ensure efficient development. Agile allows you to take advantage of our developers' expertise, and gives us the flexibility to innovate solutions that you may not have considered in writing specifications for the project. Finally, Waterfall is an isolated push to complete a project by a specific date. With Agile we strive to establish a sustainable pace, meaning you can launch an MVP and continue develop the features that bring the most value to your users, at regular intervals post-launch.
We believe Agile development practices maximize the value you can get from your software development project. Interested in discussing a project with the Fusionbox team? Contact us to learn more about how Agile can get your MVP into the hands of real users.