Choosing the right technologies and tools are vital for the success of any software development process. The right decision here could ensure the project’s ultimate success. In this article, we try to look into what is the right approach when starting a new project.
In the last few decades, we have seen the software world transform immensely. We learned to be transparent and agile, to be lean, to approach our users and clients for feedback more often. We learned to analyze and use data before designing a product. It changed the nature of the software business forever, and companies such as Google, Microsoft and many others innovated new frameworks not only for writing code but to manage the projects lifecycle as well.
When we opt to select any software methodology, we should consider various factors that we will discuss further in the article. First, let’s take a look at the most common software development methodologies.
Overview of software development methodologies
Waterfall offers less flexibility and is considered a non-agile framework. One can implement the Waterfall methodology very well for small and straight forward projects. Here, the project’s full life cycle is with well-defined phases.
Analyze > Design > Build > Test > Deliver
One of the main downfalls of this methodology with the larger projects is the late opportunity for validation. IT could potentially take months before the client sees the product.
Agile – (KANBAN, Scrum) – Although distinctively different frameworks, they focus on continuous delivery. As they are trendy methodologies nowadays, many try to implement them without considering the project requirements. In some instances, it can lead to disaster without proper training and overall agile transformation of the organization.
Kanban focuses on Lead time, tracking and visualizing the work in progress and provides a continuous cycle of development. It is suitable for both project development and stable support and maintenance. It is truly an agile framework without the boundaries of sprints and specific roles within the team.
Scrum focuses in cycles called sprints, where the main KPI is the velocity or the amount of work the team could deliver within a given sprint. It can convey product increments at a steady pace. It requires specific roles and so-called artefacts as tools within the framework.
Advocated by Google in the last few years, this framework gives a broad spectrum of methods for each of its project lifecycle phases. It focuses on fast analysis, design, prototyping and building so that ideas could be validated quickly (days or weeks) by taking feedback from the customers sooner rather than later. It is a perfect framework to build prototypes quickly, come up with working solutions and validate them with end-users or stakeholders.
What to consider when choosing the right software development methodology
There is a fundamental difference between processes within a product and for example, outsourcing companies and how they handle the clients’ requirements. Choosing a software development methodology simply because it is trendy does not mean that you would manage to implement it properly and benefit from it, quite the contrary. If we select the wrong methodology and implement it incorrectly, it can jeopardize the whole project.
To make the right choice, we need to look at the structure of the team and the type of project that we plan to manage:
– Dedicated team
– Fixed-price model
– Support and Maintenance
Each of them comes with different challenges. By choosing the right project management framework, we can successfully tackle these challenges in each case.
This team structure provides the best options for long term team development and structured approach.
– If the project is small and we are handling support request and various planned tasks, then KANBAN is more suitable as we would benefit of its Work in Progress and Lead Time tracking but also give us the flexibility beyond the fixed sprints. It allows us to maintain a stable backlog and continuous delivery throughout the project duration.
– In case we are looking at medium to a large project that would involve a team of 5 – 7 people, then Scrum would give us the framework that we need to support complex planning-delivery-feedback iterations.
Here we are looking at a well-experienced team that that is to some degree a self-organized unit that could commit to the sprints and deliver with good average velocity. With such a team, we would expect a good communication plan with the client with relevant roles, such as Product Owner.
It might sound hard to achieve it, but Scrum is a complex framework that expects that people working with this methodology are experienced facilitators and maintain the framework and artefacts properly. Some even say that Scrum is like bread. If you do not add the right ingredients, then it is not Scrum you are making.
Fixed price project
This type of projects usually is characterized by fixed expectations. Here we have a fixed budget and limit on the duration of this project. So, it is not the most flexible type. You could find different opinions on how to fit the agile framework to such non-flexible projects, but with a good team behind us and smooth client communication, we can achieve a good outcome. We can decide the framework of choice depending on the scale of the project:
– For medium and Large projects: – Scrum and its well defined and structured approach provide the tools for such complex projects. In cases where the project lacks a clarified scope, then you can include a design sprint in the planning which would allow you to set a clearer scope of requirements.
– For small projects – Waterfall could be easily used to design, build and deliver in such small scales. The risk is low due to short timeframes and lower budgets.
Commonly, such projects would naturally span into long term support and development with various resources working part or full time on it. Here as we mentioned previously, we could use KANBAN as more suitable for such support type projects.
Support and Maintenance
As already stated, KANBAN is the preferred agile framework for support and maintenance. It’s well fitted to support the process of managing requests and tickets. This framework is not hard to implement and does not require complex tools and process mitigation. The team needs a board to track the work in progress and the overall request lifecycle so then we could track the reaction time, the cycle time and the Lead time. We can directly link them to the SLA we have with the client. A clear and transparent framework.
The bottom line
There might be different circumstances in your organization. The team size and the skills of members, processes in place, client base and business case can vary, but regardless of that, there are plenty frameworks and tools that you can implement in any given organization.
The fundamental, however, remains that regardless of the sophistication of those tools it’s the people that would use them. The tools and processes should be serving the people and not the other way around.