This article is for: Technical or non-technical software startup founders and development teams who want to make best use of agile software development methodologies to keep their development project on track.
<– Back to: “How to Create Software: Development Techniques to Learn”
There is more than one way to build a great software product. When you are launching your new software startup, you should first consider which development methodology you will use during the development process. In this article, we will outline a comparison of the software development methodologies available, and how to select the correct one for your project.
This article is for startup founders who plan on developing a software product. Your company may have a development team and need to plan the development process. Alternatively, you may outsource to a development company or hire a freelancer to do the work. You will need to manage the process better and avoid pitfalls.
If you are hiring or contracting a development team, make sure you ask and understand what development methodology they will be using. It may be a red flag if they do not use a methodology, although some very small operations may not.
There are many methods you can use to build a great software product. The methodology you choose will impact who you will hire, how quickly they will develop new features, and how quickly you will receive and react to customer feedback.
Generally, the two main categories of development processes are traditional, and agile software development methodologies.
We will outline the advantages and disadvantages of some common methodologies and show how each could be the right choice in a specific situation. Use this resource to learn more about both traditional and agile software development methodologies and how to make an informed decision when building your new software product.
Main topics to be covered:
We will illustrate these ideas through case studies of companies and founders who work with Altitude Accelerator
Software development is a set of activities that lead to the creation of a software product. The development process is applied to new software or modifying an existing program. It generally consists of the following activities (Figure 1):
Additionally, content development (for example, support material, marketing material, etc.) is also a part of the software development process. All of these activities working together allow startups to develop a usable product.
The order and flow of these key activities depend upon the software development methodology (SDM) chosen at the project’s start. There are many different SDMs used within the industry, each representing a content development process from a different perspective (for example, plan-focused or feature-focused).
As a non-technical founder of a startup, you need to be aware of the different SDMs that could be used during your development project. At its core, the SDM selected describes how your development team will be reacting throughout the project.
For example, will they spend a chunk of time at the start developing a plan that cannot be deviated from (plan-focused). Or will the development team focus more on the development of features, and adapt to roadblocks flexibly (feature-focused). By determining the style of the development process at the beginning, the project begins with clear expectations, allowing your startup to track the progress of the project.
The selection of a SDM is a vital step of the development process. This is because the selection of an unsuitable methodology is the most critical risk of software development failure. Selecting an inappropriate methodology can potentially lead to the project running over budget, timeline delays, and a lack of requirement verification, all of which are considered project failures.
Key Takeaway: Your startup can either use traditional or agile methods during development. Traditional requires significant upfront planning. Agile, however, allows you to react to issues as they occur.
One of the first decisions you make when starting development is deciding which approach your startup will use during development. Will the startup use a traditional (predictive) approach or an agile (adaptive) one? Most successful starts opt for an agile approach, and it is usually recommended by industry experts.
A traditional approach takes heavy front-end planning. Before any development begins, the team does a thorough requirement analysis and plans the project out from beginning to end. In a predictable environment, that can work really well. In a startup, it can backfire catastrophically.
An agile approach, however, consists of no detailed planning and only clear future tasks are identified. This methodology is applicable to startups most of the time because agile software development methodologies allow for:
There are many different methods within these broad categories of traditional and agile approaches. Let us now delve a little bit further into each of the different methods available to your startup.
Expancio is a startup that provides a tool to help businesses design, build and run their web application. With their product businesses do not need to create a web application from scratch. They instead can use Expancio’s platform saving significant development costs.
When Expancio began to receive requests for service from businesses and started to sign contracts the team knew they had to have a plan in place. This plan needed to cover how the team would complete each project successfully and efficiently.
According to Expancio’s Vice-President of Engineering, James Lee, an agile software development methodology was the only fit for them. “Expancio consists of a small team…and we want projects to be completed quickly, with a fast turnaround,” says Lee.
This decision was built upon his past experiences working with financial institutions to create web applications. Companies within the financial industry commonly use the Waterfall Methodology, where the entire development project needed to be planned out in detail before any work could be conducted. Banks then would follow a strict concrete timeline during development which could not adapt to any changes within the industry or market easily.
The main challenge experienced by Lee while working within the financial industry was that the creation of a set of detailed concrete plans increased the complexity of the project. This complexity was a result of trying to accurately plan out an entire development project, and cover all potential stages of development, at the start before any work has been completed. As the project’s complexity increased, the amount of resources and time required to complete the project increased as well.
Alternatively, the banking institutions could have used agile software development methodologies throughout their development processes. These agile methods would have allowed Lee to develop the required software product in small increments with in-development testing built right into the project plan. By utilizing these agile methods, Lee and the rest of the development team could have created the required product using a method that did not rely on upfront planning, but rather the results of in-development product testing leading the remaining development stages.
Based on all his learnings from past experiences, Lee recommended the use of agile development methodologies when the topic of what method Expancio should use during product development. As a startup, Expancio needs to be able to adapt quickly to changes within the industry to ensure that their product, and company, are not being left behind.
The use of agile development methodologies also allows Expancio to continue to validate their early commercial product. This continuous validation is made possible by agile methodologies, which allows the company to quickly change their platform based on user feedback. Any observations made by the users regarding challenges in task completion and design flaws, as well as bugs identified within the product, can be addressed during a new stage of iteration. By constantly iterating their early stage commercial product during the validation, Expancio is able to create a product that their users really need. This is instead of saving all opportunity for user feedback till the very end of development when a massive overhaul of the product maybe required.
Overall, the use of agile development methodologies allows Expancio to continue to grow and improve their platform. This ensures that their product does not become stagnant, and can easy be improved upon based on user feedback and any changes within the industry.
Key Takeaway: Traditional development methodologies are highly structured and allow for limited flexibility during development. The most popular traditional methodology with startups is the Waterfall Method.
Traditional development methodologies result in highly structured projects. They are based on a series of back-to-back plan-driven steps.
During the definition stage, before development begins, the team plans out the entire process. This is done to guide members during the work phase of the project.
Startups often do not have clearly validated product requirements before development begins. This can present a challenge. As a result, resources may be wasted on development that needs to be changed later as the requirements evolve.
Software developers commonly use traditionally methodologies on projects that are:
Although agile software development methodologies have become increasingly popular, traditional methods are still the most frequently used development style.
There are many traditional methodologies, all based on the core concept of pre-planning the project to guide development. Understanding the most appropriate traditional method for the project is important. If your startup selects a methodology that focuses on planning upfront, you need to make sure you are planning in an appropriate manner.
The following section describes the key traditional methodologies available and begins with the most relevant to startups, the Waterfall model.
Key Takeaway: The Waterfall model is best suited for startups that have projects with clear, well understood requirements that will not change. Strict documentation and planning prevents flexibility during development when reacting to design problems.
The Waterfall model (also known as linear-sequential life cycle model or cascade model) requires each development stage to be completed and reviewed before starting the next (Figure 2). This model involves a lot of documentation to ensure the team follows the plan and is developing all the requested requirements. This level of documentation may overwhelm startups.
Loops can be introduced to allow the previous stage to be revisited. This allows your startup to conduct product verification.
Key Takeaway: The prototyping model is best suited for startups that have projects with unclear requirements and, a focus on the user interface. Significant amounts of user involvement commonly increase the project’s duration and overall cost.
The Prototyping model involves the quick creation of a sample of the final product’s capabilities (Figure 3). This model is implemented to validate the user’s requirements and the feasibility of the design before creating the final product. By doing so, your startup ensures that it is producing a product the users want!
Startups commonly use this method to avoid the Waterfall method problem of receiving user feedback only at the end of development. Prototyping is not an independent method. It is rather an approach that startups can use alongside another methodology to improve project success.
Key Takeaway: The V-model is best suited for startups that have projects with clear, well understood requirements that will not change throughout the project. A large team of highly technical members are required to conduct verification and validation work early in the development process.
The V-model or Verification and Validation model takes the waterfall model one step further with the development and verification stages being performed in parallel (Figure 4). As the software product’s requirements are developed, startups test and integrate them into the final product in parallel. This allows startups to move past subjective terms such as “user friendly”, into more objective and verifiable requirements.
Key Takeaway: The rapid application development model is best suited for startups that have projects with a tight deadline. This model is highly dependent upon the team’s technical knowledge and collaboration efforts to succeed.
The Rapid Application Development (RAD) model is designed to improve the practicality of a startup’s development process by highlighting the participation of the end-user (Figure 5). This method uses prototyping to allow for iterative development. It also promotes a collaborative atmosphere through stakeholder participation. Prototyping cycles are completed over long, drawn-out development and testing cycles.
Key Takeaway: The Spiral model is best suited for startups with projects that are high risk, and will require frequent updates once available to users. This model is complex and requires all team members to strictly follow it to ensure success.
The Spiral model, a risk-driven development process, is shaped as a spiral, rather than a sequence of activities (Figure 6). Startups combine the waterfall and prototyping methods with the introduction of a risk assessment at the start of the process. Your startup cycles through multiple iterations of the spiral until a prototype is created that can be verified against user requirements.
Key Takeaway: Agile development methodologies allow for flexibility during development and increased user participation. The most popular agile method with startups is the Scrum model.
Agile software development methodologies focus on collaborative development. Users and stakeholders actively guide the development of the product together.
Startups commonly use these methods because of their lean concepts. Agile methodologies minimize unnecessary work and excess documentation. The less time you are working away on paperwork, the more time you can spend creating your software product!
These methodologies accept that uncertainty is a part of software development and trying to control changes is impossible.
Agile software development methodologies are commonly used on projects that are:
Agile methods are likely the best to follow as a startup, as costly mistakes can lead to business failure or financial ruin.
There are many agile software methodologies available, each allowing for different levels of flexibility during development. Understanding the most appropriate agile method for your startup’s project is important. By understanding these models, you will be able to select the method that is most suitable for your startup’s project, and desired reaction style.
The following section describes the key agile methodologies available and begins with the most relevant to startups, the Scrum model.
Key Takeaway: The scrum model is best suited for startups that have projects with rapidly changing requirements. This model involves an intense project lifecycle which requires technical experts, more than novices, to use successfully.
The scrum model is one of the most widely used agile software development approaches by startups (Figure 7). The model is built on the assumption that the development process is unpredictable, and that the requirements could, and should, be changed during the process.
Startups can use this model to quickly develop software through a series of iterations. Daily scrum meetings, that the user can attend, are held to ensure that development is controlled and tracked.
Key Takeaway: The lean development model is best suited for startups that have projects with low budgets and time requirements allowing for increased productivity. This model is dependent on the team’s technical knowledge and collaboration efforts to succeed and not lose focus during the project.
The Lean Development methodology emphasizes the creation of effortless manageable software in about a third of the time (Figure 8). Startups complete this by restricting the budget and eliminating waste. Meaning your team does not build features that do not impact the functionality of the final product.
This is done to deliver your product early with minimal functionality. Short iterations throughout the process allow for communication with the user and the flexibility to adapt to any unforeseen risks.
Key Takeaway: The Extreme Programming model is best suited for startups that have open office space to allow for rapid communication and collaboration between pairs of people on the team. This model is highly dependent upon the team’s technical knowledge and collaboration efforts to succeed.
Using the Extreme Programming (XP) model, startups develop in several small releases (Figure 9). This allows startups to quickly adapt to requirement changes with a low impact on cost.
Developers work in pairs with a simple design and continuously improve the code based on user feedback. This is done in a consistent style so everyone can understand and improve the code. This model aims to save time, and prevent delays when team members are not present to code the feature themselves. XP is considered the most agile method available within software development.
Key Takeaway: The crystal methods are best suited for startups that have projects with multiple teams working together to rapidly develop a product. Due to the number of crystal methods available, there can be confusion during the project as the crystal method used is changed when the team size increases.
The Crystal Methods are a family of software development methodologies that are colour-coded to signify the risk to human life (Figure 10). Crystal sapphire is for projects that may involve risk to human life, where crystal clear is for projects without those risks.
Startups use these methods as they are considered very flexible. This is because they are designed as a human-centric project, rather than a feature- or business-centric project.
Startups chose the crystal method’s colour as a result of the number of team members and the project’s environment. Crystal Clear is the most commonly used crystal development methodology by startups when developing a software product field.
Key Takeaway: The dynamic system development model is best suited for startups that have projects with fixed resources and timeline budgets. This model does not have defined practices to handle the scalability of a project later in the development process.
The Dynamic System Development Model (DSDM) is derived from the Rapid Application Development (RAD) model. An iterative and incremental approach is used that focuses on the involvement of the user through the development process (Figure 11).
This is a useful model for startups as it involves fixed resources and time, something that you may be experiencing right now yourself. As a result, functionality requirements are adjusted to meet the deadline. This model is structured so that the development process takes the shortest possible time, and that each delivery contains most of the requirements.
Key Takeaway: The feature driven development model is best suited for startups that have projects with multiple teams working together to rapidly develop a product. This model is not recommended for a single developer, and requires lead developers in order to closely monitor feature development.
The Feature Driven Development (FDD) model organizes development around creating features. These features are small defined projects within the larger project (Figure 12).
FDD focuses on serving companies with many teams working on a project based on object-oriented technology. Due to its multi-team nature, this is a commonly used agile method by startups.
The FDD model uses short-iteration processes to ensure that features are presented to the user quickly (e.g. every two weeks a new feature is presented). As a result, startups focus on the most important user features first.
Key Takeaway: Selecting a software development methodology is a critical stage in the development process. Make sure your startup evaluates organizational, project, and team characteristics before deciding upon a development methodology.
The selection of a software development methodology is an important step when launching your software startup. Your startup must select and follow this methodology from start to finish.
Changing the model partway through the process is difficult. Changing the process ends up confusing everyone on the team, causing potential development delays. This is especially not advised for startups due to the financial and timeline impact of methodology change.
Many industry leaders believe the main reason for project failure is the result of an inappropriate method being used during development. Project failure could be due to the product not being delivered on time or within budget. It could also fail because it does not provide value to the user.
Evaluate different development models based on organizational, project, and team characteristics. This prevents your startups’ selection from being biased by the literature or the recommendations of others.
Your startup can create a stellar product by focusing on your project’s specific situation. The following are key characteristics that should be evaluated during the development methodology selection process:
As an alternative to selecting one specific methodology, startups can use multiple methodologies on the same project (aka. hybrid methodologies). This, however, is not advisable for startups.
Using multiple methodologies can lead to project management issues. Your startup could also waste resources and time determining what method you at specific times. Companies that choose to go the hybrid route commonly have a medium budget, a highly critical project, and a small team.
The development methodology selection process has been found to have a direct impact on the following:
As a result, the development methodology selection process should be prioritized by yourself and other members of your startup during the development process in order to create a stellar product.
Use the following SDM selection decision tree, created by the Altitude Accelerator, to get an idea of what methodology you should look at in detail first (Figure 13). This should help you when you are selecting the SDM suitable for your startup’s software development project.
There are a variety of software development methodologies available that startups can use to manage the development process. Each method varies in the amount of pre-planning, flexibility and in-development testing required during development.
At the start of every new development project, startups need to evaluate their team and project based on several criteria to determine which methodology is most suitable. Specifically, companies should focus on the individual attributes of the team (i.e. technical skills, communication capabilities, etc.). This is because the team members themselves have a significant influence on the quality of the product produced.
One key thing to keep in mind is that no methodology is the perfect fit for all types of software development projects. So just because a methodology worked with a past project, does not mean that it will be successful during your startup’s next development project.
As you move forward and begin the development of your software, remember to take the learnings from this article with you. Discuss the different development methodologies with your team, and find the one that works best for your project. Get everyone involved in the process so the team collaboration begins early to ensure the success of your project.
Congratulations! You have now learned about a number of different software development methodologies. After reading this article you should have learned the following key learnings:
<– Back to: “How to Create Software: Development Techniques to Learn”
© 2023 Altitude Accelerator | Brampton, Ontario, Canada