Ready, set, go! Your software engineers rush out of the gate, writing elegant code that compiles perfectly into a killer software product that fits your client’s needs. Works every time, right? Well, not always.
This kind of unstructured development might work for simple projects. But as the scope of a product expands, so does the need for a process to guide the development efforts.
Enter software development methodologies, or frameworks, that define the process your team follows as it attempts to deliver a timely product that satisfies your customers. However, do you know which one to adopt?
The yin and yang of software development methodologies
Structured and Agile occupy opposite ends of the spectrum of software development methodologies. Though there are various models, or versions, that reference aspects of these two methods, looking at a comparison of the overarching methods is perhaps the best way to start your quest for a development framework.
This is the most traditional of the software development methodologies. Under this approach, distinct phases of development are completed by distinct groups in a linear fashion. Each phase must be completed and approved before the next phase can begin. Though the most common use of this method is the Waterfall model, other software development methodologies also use structured techniques. They include:
- Iterative: A structured technique whereby developers first create the most basic form of the product, complete testing and then go through constant cycles/iterations to add additional features, testing after each iteration.
- Spiral: A structured, iterative approach that continues to spiral outward (get bigger) while going through four distinct structured phases (determine objectives, risk assessment, develop, then test and plan the next iteration).
- Rapid Application Development (RAD): A structured approach to create user requirements and final design, but one that focuses on prototyping in lieu of functional planning. The constant prototyping allows for trial and error of functional requirements.
In 2001, a group of programmers decided there was a different way to develop software and published the “Agile Manifesto.” Agile emphasizes collaborative development by smaller teams comprised of clients, developers and other experts, followed closely by review and adaptation. This “develop-review-adapt” cycle continues as the teams produce rapid iterations of a product until it is completed.
The most recognized use of Agile methodology is the Scrum model, which is commonly referred to as Agile Scrum.
However, other software development methodologies also reference the Agile method, including Extreme Programming (XP). When it comes to XP, the name says it all. Projects are completed by taking all Agile practices to the extreme, such as reviewing code on a constant basis through pair programming and opting for verbal communication over written documentation at all times.
Fixed vs. flexible
In its truest form, the structured methodology centers around a master schedule that has hard deadlines for each phase of development (coding, quality assurance, etc.). This framework allows you to give your client a fixed cost and release date. If these are important to your customer, consider going with a structured software development method. On the other hand, if your client is flexible about dates and costs, Agile may be the way to go.
Does your client want to be involved?
With any of the structured software development methodologies, clients request features, then step back and wait until these features are implemented in the next major release of the product. If the customer suddenly realizes they need a different feature, they have to wait until the next development cycle begins.
Though some structured models, like RAD, offer a faster response than the more common Waterfall model, Agile offers a completely different way. By being part of the team producing incremental releases, customers can choose features along the way, which can increase their satisfaction with the end product. This way of working may also be best for clients who have a hard time envisioning exactly what they want before development begins.
Know thy developers
Within the structured method, developers are assigned discrete tasks based on written requirements generated upstream. The need for daily conversation with other team members is minimized. Is this how your programmers like to work? Or would they be happier bouncing ideas off other software engineers, clients and business experts on a daily basis? Many developers feel empowered by the Agile method because they have more control over the final product.
It’s not always easy leaving the water
If you decide to implement one of the software development methodologies we’ve discussed — and you haven’t used it before — be aware that you’ll probably hit some bumps. This is because the structured and Agile software development methodologies are completely different ways in which to visualize a project and work on it.
Keep in mind that Waterfall isn’t the only software development process that uses a structured approach, so you may want to further research some less-common structured models. And if you go decide to go with Agile, be sure to budget some extra time and consider bring on team members who have experience with it.
Find out what software developers are paid in your city: