Choosing the best software development methodology among many alternatives could be challenging. Yet, this choice is crucial for the success of your project. In this post we are going to discuss the benefits and problems with two most common software development methodologies.
When your product doesn’t turn out as you planned…
There is always some convincing reason that drives you to launch a software development project. It could be your brilliant idea about a new app that will bring you profit. Or you would like to create a software product that will allow you to communicate with customers more closely and raise the efficiency of your online and (or) offline business. You may have various reasons, and hopefully they are significant and accurate enough to start the actual product development.
So, you create the idea, write some initial documents about your future product, find the software development company and hire a great project team (or maybe you find the developers inside your company). You sign the contract and start the development. You pass onto the team your hopes and dreams of the new product, and meticulously go over all the functional requirements.
Then, after some period of time, you receive your product…and realize that it’s not what you imagined at the start.
Is that really possible? Unfortunately, yes. And it’s really bad news.
But don’t be upset, because we have a good news too! There is a way to prevent this unpleasant situation – and it starts with analyzing what went wrong here using the “5 why’s technique”.
The 5 Why’s technique for understanding problems
In the example described in the introduction, we’re dealing with this problem: The final product doesn’t correspond to the customer expectations. How can we define the root of this problem? The 5 why’s technique is a simple but powerful tool to quickly uncover the main root cause of the problem – and prevent it from happening before you invest money and time.
The 5 Whys is an iterative interrogative technique used to explore the cause-and-effect relationships underlying a particular problem. The method was invented by Sakichi Toyoda, one of the fathers of the Japanese industrial revolution and the founder of Toyota Industries, in the 1930s. In a few words the method is remarkably simple: when a problem occurs, you uncover its nature and source by asking “why” no fewer than five times.
For example:
The problem: The final product doesn’t correspond to customer’s expectations.
Why?
- The customer believes that the product was developed incorrectly. Why?
- Earnings from the product are less than expected. Why?
- Users don’t use many features of the product. Why?
- The functionality of the product is redundant. Why?
- All functional requirements of the product were discussed at the start of the project, after which a long development cycle was launched, without revisiting user needs.
So, we identified the main reason of the problem:
An inappropriate software development lifecycle was chosen for this project.
The goal of the project was the development of a new product with a lot of features. Nobody knew at the start how end users will accept the product and what features they will use and want to pay for. It would’ve been better to implement the product across several iterations, start to use the product after each iteration and, in this case, have the possibility to stop the implementation of redundant functionality and save the budget.
Okay great, so the development process should consist of several iterations. Is this approach appropriate for every project? Of course not!
As you have probably guessed, we’ll compare two main methodologies of software development: Sequential Waterfall and Iterative Agile. Both have their advantages and disadvantages and suited best for different project types.
What is Waterfall?
After analyzing the information about the project’s development in our example above, we could suppose that the Waterfall methodology was used. This methodology follows a sequential, linear process and is the most popular version of the software development life cycle (SDLC) for software engineering and IT projects.
The main stages of this methodology can be found in Picture 1.
Picture 1: The main stages of sequential/ Waterfall development.
The new stage of the development cycle starts after a previous stage is completed. The power of this methodology is that every step is pre-planned and laid out in a proper sequence. While this may be the simplest method to implement initially, any changes in customers’ needs or priorities will disrupt the sequence of tasks, making it very difficult to manage.
Advantages and disadvantages of Waterfall:
Advantages of Waterfall in product development:
- Easy to use and manage. There are a lot of tools and recommendations for how to implement and use Waterfall.
- Discipline is enforced. Every stage has a start and end point and progress can be clearly shared. Focusing on requirements and design before writing code, helps fulfill all requirements and reduce the risk of a missed deadline.
- Well documented approach. Waterfall requires full documentation for every phase, especially the Requirements and Design stages. The result is that the customer and their stakeholders have a full picture of all the processes and details.
Disadvantages of Waterfall:
- Changes can’t be easily realized. All changes in the requirements restart the cycle from the beginning.
- The software isn’t delivered until a late stage. The customer doesn’t see working software until a late stage of development.
- Gathering accurate requirements is very difficult. The requirements stage is crucial for the successful development of the product. However, in many cases customers don’t know exactly what they want, or their understanding of the future product functionality is flawed.
From the example in the introduction, the 5 Why’s analysis helped us identify that the disadvantages of the chosen software development methodology are indeed the reasons behind an unsuccessful result and an unhappy customer. Now we can detail the problem further: The software wasn’t delivered until a late development stage and the customer’s understanding of the product functionality was mistaken. Using the Agile methodology for this project could’ve been more appropriate.
What is Agile?
Agile software development is based on an incremental, iterative approach. Instead of full planning and documenting at the beginning of the project, Agile methodologies are open to new requirements and encourage constant feedback from end users. The Agile development team works on iterations (usually called sprints) of a product. The goal of each iteration is to produce a working product. After every iteration the product can be used by end customers, and the new iteration can be analyzed and designed according to the previous iteration’s results.
You can find the main stages of this methodology in Picture 2.
Picture 2: The main stages of Agile development.
Advantages and disadvantages of Agile:
Advantages of Agile software development:
- Changes of requirements and even end goals are possible. The requirements are discussed and can be changed before every iteration. The priorities of requirements can also be changed.
- Fast and flexible delivery. The customer can see the product during development and work closely with the team to improve it.
- Strong team collaboration. The team works together and can focus on high-quality development.
- Continuous feedback. The results of a previous sprint should be used to improve the next sprint. Also the end users’ feedback plays a significant role.
Disadvantages of Agile:
- It’s not easy to implement. The requirements of members of an Agile team are very high. They should be skilled in a variety of areas, very disciplined and motivated.
- It’s difficult to plan the work. Because of possible changes, originally scheduled tasks for delivery may not be completed in time.
- Not fully documented. There is no focus on documentation. But the right balance between documents and discussion can be found.
In our example, using Agile could have been more successful because Agile allows:
- Fast and flexible delivery of the working product after each iteration;
- Continuous feedback from end users.
Waterfall vs. Agile: “So, which methodology should I choose?”
Of course the choice between Waterfall or Agile methodologies depends on your project’s environment and characteristics. Both Waterfall and Agile are usable, mature methodologies. There are no strict rules about why you should prefer one over the other, but there are some recommendations. For example, in our example we discovered that the Agile methodology would have been more useful for creating a new product with a lot of features that users had to deem useful (despite understanding initial functional requirements). But if your project is not as large and long, or your requirements are very clear and fully formulated, and few changes during the development are expected, then it could be successfully realized with the Waterfall methodology – with the added bonus of being carried out exactly according to plan.
Intetics teams have a lot of experience with managing different types of projects. We will be happy to answer any of your questions about what methodology is best for your particular situation – just shoot us a quick e-mail.
Or read this article about implementing Agile in your projects.
Cartoon was created with the help of projectcartoon.com.