How to choose the right software development methodology

How to choose the right software development methodology


Published on: 19 Sep 2016

By Vinod Subbaiah

Share This:

It’s that time again when you as a project manager have a list of requirements for a project in your hand and you are breaking your head on how to approach it. Based on your earlier experience, you would want to move away from standard methodologies such as Waterfall and move on to the infamous Agile techniques. However, this isn’t an easy decision to make. You need to take several aspects into consideration such implementation time, project budget etc. So, if you are having a hard time choosing the right custom software development methodology, read on.

Here, we will share with you some ideas on how to choose the right development methodology for your project.

This depends on the following factors:

  • Requirements
  • Solution or the end product
  • Feedback on the work done
  • Frequency of change request or enhancements
  • Cost of Delay
  • Experience on projects

We will be discussing on the following methodologies used for development and how to choose which among the following is the right fit for your project:

  • Waterfall
  • Scrum
  • Kanban
  • Extreme programming (XP)
  • No specific process, Do it yourself

We can broadly classify a project into 4 different groups based on the above 6 points.

Simple Project

Clear Requirements

You have clear requirements of all the features you need to build to complete the project. There are no uncertainties and all information is laid right on the table with no surprises.

Clear Solution

You have a clear picture of what is the end product that you are going to deliver at the end of the project.

Feedback on the work done

You require very minimal to no feedback from customer till you have developed the end product as the requirement as well as the vision of the end product is clear.

Frequent Enhancements

There are no changes or enhancement to the requirements or solution. Every piece of requirement is clear to develop the end product.

Cost Of Delay

The cost of delay is minimal and is not a burden on the project as the timelines are flexible.

Experience on Projects

You have prior experience working on such projects and thus it is not something complex for you to accomplish.

Suggested Methodology:

Waterfall, No process or Do it yourself

The development methodology suggested for such a project is Waterfall or No process. Waterfall has a clear phase of requirement analysis, design, development, implementation, testing and deployment. With the requirements being very clear with absolutely no changes on it, you can definitely proceed to design the solution that has been visualized. Proceeding on development, integration and testing based on the design would be a fairly simple process as there are no surprises or changes in the requirements along the course of development.

You require no defined process to develop an end product where you have clear requirements and solution. You just set a deadline on when the project should be finished and complete the project in your own way. You just need to make sure you stick to the deadline at the end to deliver the product.

Mid-range or Complicated Project

A mid-range or complicated project is one where the solution of the project is not clear and there might be only minimal feedback from the client to check if the solution that you are building is in line with the client’s expectation.

Clear Requirements

You have clear requirements of all the features you need to build to complete the project. There are no uncertainties and all information is very clear with no surprises.

Unclear Solution

You don’t have a clear picture of what the solution will be with the set of requirements given.

Feedback on the work done so far

You require constant feedback from the client to check if what you are developing is in line with the client’s needs or visualization of the end product.

Frequent Enhancements

There could be few changes in the requirements as you develop and get the client’s feedback. You must accommodate the changes or enhancements and change your codes accordingly, which will increase the timeline for product delivery.

Cost Of Delay

The cost of delay is still minimal even though there might be a few changes as you go on developing the end product.

Experience on Projects

You may or may not have worked on such projects but you know how to handle a few change requests.

Suggested Methodologies:

The development methodology suggested for such kind of projects where the end product is not clear is Kanban, Scrum.

Kanban methodology

Kanban is great methodology for projects where either the requirement or the solution is uncertain. However, if the cost of delay is minimal, this would be the best methodology to choose. In Kanban, you must limit work in progress so that you do one thing at a time. You must continuously monitor the product, check how long a particular task is in progress and prioritize other tasks if the current task is blocked. Watch your metrics and perform experiments. Start with a small tweak. If it helps, keep doing it. If it hinders, stop doing it. Don’t be afraid to try something crazy for a week; don’t throw out an idea because you think it won’t work. There might be some delays and if the cost of delay for this project is minimal, you can go for Kanban. However, Kanban is most suited for maintenance projects.

Scrum methodology

Unlike Kanban, Scrum is more time boxed and planned. The entire project is split up into time boxes called Sprints, where the team including the project management (product owner), Scrum master (liaises between product owner and development team) and the development team sit together and plan for each Sprint the list of tasks or user stories that needs to be completed. Once the team agrees and commits to completing certain tasks in a given time frame, the development team is expected to stick to the commitment and complete all tasks within the Sprint. Scrum is best suited when cost of delay is high and deadlines are to be met accurately with minimal delay. Scrum is often used when there are more uncertainties in a project for example end product is unclear or the requirements are not clear, requirements change frequently and there is a need to get constant feedback from the clients.

Complex Projects

Complex projects are the ones where neither the requirements are clear nor the solution is clear, cost delay is high and the requirements change often. These projects involve constant feedback and monitoring done by the client, which leads to changing requirements and the solution itself.

Clear Requirements

Requirements for complex projects are not clear, there are uncertainties or some of the requirements are missing.

Unclear Solution

You don’t have a clear picture of what the solution will be with the set of requirements given.

Feedback on the work done so far

You require constant feedback from the client to ensure that what you are developing is in line with client’s expectations of the end of product.

Frequent Enhancements

There can be lot of change requests during the development process as client gives feedback on what you create. You must accommodate the changes and change your codes accordingly. This can push the delivery deadline.

Cost Of Delay

Cost of delay is huge and the project is highly time bound.

Experience on Projects

You may or may not have worked on such projects; you would have difficulties when prioritizing loads of change requests and client’s feedback.

Suggested Methodologies:

Scrum Methodology

Scrum is best suited for such complex projects that have strict deadlines. Since, Scrum methodology splits up the project into various time boxes (Sprints), you can work with whatever requirements you currently have and build upon that based on client’s feedback. Also, with Sprint review, where the client checks and provides feedback on the work completed in the current Sprint, Scrum can accommodate various changes and can be triaged in the upcoming Sprints. With Sprint planning, you can make sure you complete the project on time and forecast the estimate based on the historical data such as velocity from earlier Sprints. Based on the velocity of delivery of user story in the last Sprint, you can forecast on how long it might take to complete the project. This lets you inform the client about any delays beforehand, unlike Waterfall model where clients are informed of project delays at the end of the project.

Extreme Programming (XP)

Extreme programming is the best choice when your client is not sure of what his system must do. You may have a system whose functionality is expected to change every few months. In many software environments dynamically changing requirements is the only constant. This is where XP succeeds while other methodologies do not. Also, if you client has a deadline set for you to deliver the product where he/she is unsure of how it must work, the risk is even higher. XP techniques are setup to address and mitigate the risks and increase the likelihood of success.

Chaotic Project

A chaotic project is one in which the requirements are unclear, the client does not know what exactly he wants to build, the feedback from the client is high and the requirements might change often, changing the way the end product will look. The cost of delay is also very high and you have very less to no experience of handling such projects.

Clear Requirements

Requirements for complex projects are full of uncertainties. There is little or no clarity. Some requirements might even be missing.

Unclear Solution

Your understanding of the end solution based on the given requirements is zero. Even the client does not have a clear idea of what he wants to build.

Feedback on the work done so far

You require constant feedback from the client to ensure that you are developing the right product.

Frequent Enhancements

There could be lot of changes in the requirements as you develop when you get the client’s feedback. An entire set of code done today might not be used tomorrow as the requirements will change drastically.

Cost Of Delay

Cost of delay is huge and the project is highly time sensitive.

Experience on Projects

You have very less to no experience of undertaking such project. It’s extremely difficult to prioritize the tasks that need to be done to complete the project.

Suggested Methodology:

Extreme Programming (XP)

Extreme programming is best suited for conditions where the client is not sure of what exactly he wants to build and what his product will look like. XP is successful for projects that have dynamically changing requirements where the functionality is expected to change often. Also, if there is a tight deadline, the risk is higher. XP methodology addresses these scenarios and mitigates risks associated with the project so that the development team can successfully deliver on time.

Vinod Subbaiah Vinod Subbaiah