In software development, one of the first decisions you have to make in implementing a project is which development methodology to use. It usually involves a lengthy discussion or even a heated debate given the pros and cons of each type of methodology.
Development methodologies are used to plan, structure and control the process of developing a software technology. It’s not a style of project management but simply a way of organizing the the actual work when developing software applications.
The two most popular and basic methodologies are:
- Waterfall, known as the “traditional” approach; and
- Agile, a process that came through as a solution to Waterfall
Both of these are usable and complete methodologies. Both work to streamline the way we get software development projects done, but in different ways.
The Waterfall Methodology
This is a sequential design process, much like construction and manufacturing workflows. This means that each of the stages must be completed before moving on to the next step. Being a sequential process, once a step is completed, developers are prohibited to go back to a previous step. You can only travel downstream and must complete the full development cycle before returning to the top.
There’s really no room for change or error, that the outcome of a project as well as an extensive plan must be in place from the very beginning and then followed carefully.
The general approach of the Waterfall Methodology is something like this:
- Conception – The first phase starts with an idea that evolves into a cost/benefit analysis and finishes off with a rough estimate of the scope of the project.
- Initiation – This involves hiring the project team and expanding on the project scope with objectives, purpose and deliverables.
- Analysis – A feasibility analysis is performed by evaluating the scope of the project and gathering all the requirements into a requirement spec sheet.
- Design – In this phase, the designers put some substance to the project with mockups, wireframes and storyboards.The requirements are reviewed and evaluated, team goals are established, and an action plan is developed.
- Construction – Developers begin building the actual app based on flowcharts, mockups, and designs created.
- Testing – The finished product undergoes testing to work out all the flaws.
- Implementation – The product is launched into the market.
- Maintenance – Users will run into bugs, and the development team is on standby, ready to resolve any issues. These patches can be used to add new features to the app just to stay competitive.
The advantages of Waterfall:
- Clear deadlines. It’s predictable workflow and static nature make it easy to estimate costs, establish timelines, and work within deadlines.
- Regulated by design. Because each phase has a clear starting point and a requirement review level at the end of it, the team is compelled to complete all tasks before the project in its entirety can proceed.
- Well documented. Waterfall stresses meticulous record-keeping and a clear paper trail for each phase of development. This makes it easier to understand the logic of past projects and plan for future projects.
- Clear communication. The well documented projects and predictable timelines make status updates to upper management, stakeholders and clients easier
- Manageable learning curve. Teams don’t usually require any prior training to start working on a project with the Waterfall method.
The disadvantages of Waterfall:
- Change can be expensive. A major downside of the Waterfall methodology is the lack of flexibility to handle change. Testing occurs late in the project cycle, and if you realize that your end users don’t appreciate the product you’re producing, it can be too late to turn back.
- Slow delivery times. Before any coding begins, as many as 4 phases of development need to be completed. This means that upper management, stakeholders and customers won’t see a working product or prototype until later in the life cycle.
- Risks in gathering requirements early on. Customers and stakeholders are often unsure of what they really want until they’ve had a chance to tinker with a working prototype. Because Waterfall handles all requirement gathering towards the beginning, there’s a risk of missing the mark and causing further problems down the line.
- Likelihood to neglect testing. Leaving the testing phase towards the end of a project can be risky, because the tendency to rush through it as an impending deadline looms. A poorly tested product can lead to a fatal launch. You may also lose out on valuable data you could have gained earlier in the project.
The Agile Methodology
Agile came about as a “solution” to the difficulties of the waterfall methodology. The Agile methodology uses the incremental approach, as opposed to waterfall’s sequential design process.
Developers begin with a simplistic project design, and start to work on small units. The work done on these modules is done in weekly or monthly sprints. At the end of each sprint, project priorities are evaluated and tests are run. Bugs are discovered within these sprints that allow for customer feedback to be incorporated into the design before the next sprint is run.
Pros of Agile:
- Flexibility. The short development cycles of this repetitive design process gives the project the adaptability to turn around when it needs to.
- Immediate user feedback. The emphasis on getting workable products to users means the project is guided by the market. The risk of producing an app that nobody wants is significantly reduced, while increasing the chances that you’ll find that winning feature that will sell your product.
- Test-driven Development (TDD). The advantage of breaking a project into short development cycles is that the product is improved and tested again to pass the new requirements. Giving the developers enough time to polish or add desired product features.
- Fast, good quality delivery. There are fewer bugs and high quality releases, as a result of TDD at each iteration.
- Teamwork. This methodology emphasizes on frequent communication and personal interactions. Teams work together, maximize pair programming and interface daily with business development.
Cons of Agile:
- Vague timelines. Even with all its pros, Agile’s adaptability can also easily lead to procrastination. Tasks are often reprioritized and issued with every iteration, the overall timeline can seem to extend endlessly.
- High commitment. This methodology works best when all the members of the development team are completely dedicated to the project. Much of the process is focused on active team involvement and face-to-face collaboration, making it more time consuming than the traditional approach.
- Skill-dependent teams. Designed for smaller multidisciplinary groups, there is usually only one person per role. This one designer, or coder, etc. must be self-disciplined and proficient in his role in order to reap the desired results.
Both Agile and Waterfall methodologies have their fair share of strengths and weaknesses. The key to deciding which is right for you will depend on the context of the project. If it’s going to change rapidly, perhaps Agile is your best option. If you know exactly what you need, then maybe you should go for Waterfall. You might also want to consider taking aspects of both methodologies and combining some of them to make the best software development process suited for you.
Xtendly helps small-to-medium sized businesses and entrepreneurs by providing affordable website services specializing in WordPress website design and development and digital marketing. For more information, click here.