See what are the pros and cons of the Agile (Scrum) and Fixed-price software development methodologies and which one is more suitable for your project.
Building complex web applications and software solutions that suit your business needs could certainly accelerate your company’s growth. However there are certain aspects that need to be considered prior to starting the project. One of them is to carefully choose the development team that is going to perform the work.
Another aspect that should be thought of before commencing work is the management of the development process. There are two main options – either follow the traditional waterfall model or manage your project agile. In this article we will briefly review both options, their advantages and disadvantages.
The waterfall model is a sequential development process. It requires strictly predefined technical specifications and is associated with a fixed price model. It is suitable for web applications projects that have clearly defined requirements from the very beginning.
When using the waterfall model there are limited possibilities of scope change and minimum flexibility. It is all about the fixed parameters – fixed price, time and scope. Therefore, extensive planning at the beginning is of great importance. The deliverables have to be specified in details before the contract is signed. Changing the scope would entail additional cost and would affect the delivery date as well. We use the waterfall approach when building smaller projects (less than 6 months) like customer web applications or cross-platform mobile applications. An advantage of this model is that you can easily plan your budget from the beginning and that you know when the project should be delivered.
Agile Development Approach
However, in reality, you often learn more about a project as it progresses. Therefore, if your project requires higher flexibility or you are not certain about your initial requirements, we certainly recommend agile development. Basically, agile can be applied to any project and product development, however, it is particularly useful for complex projects. The agile development process is an alternative to traditional project management and lies on the idea of incremental planning. It lies on twelve principles for software development or the so called “The Agile Manifesto” ¹.
- … highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity–the art of maximizing the amount of work not done–is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
There are a number of different agile methodologies. One of the most popular is Scrum.
How it works?
In the beginning, the product owner, who is the person to represent the needs of the client, creates a Product backlog, which is a prioritized wish list. This wish list can be modified later on. It is critical to identify the “core” or first-priority features apart from the secondary ones, so that the work can be prioritized accordingly among teams, and expectations around release dates can be communicated with confidence.
When using Scrum, the team still has a set timeframe called Sprint. Each one starts with a meeting called Spring Planning when the team decides how to complete the tasks and in what priority. When using Scrum, the work is usually delivered in two-week sprints. The goals are set in the beginning of each sprint. The team meets in a daily meeting to keep the work moving forward. Along the way there is a technical lead, or a Scrum master, who manages and helps the team. When at the end of the sprint the work is done, it is reviewed and approved by the client. For consistency and quality of work, the team conducts a sprint review on the work and a retrospective on the process. Afterwards, they move forward with the next chunk of the backlog and the cycle repeats.
With Scrum you can be sure that the work is done in a consistent and timely manner. It also motivates the team to work faster – specialists say that “the first 10% of the time that you spend developing absolute clarity about what is to be done will save you 90% of the time once you begin”².
In a few words, we can summarize that Scrum is all about productivity, consistency, satisfaction of the work and last but not least – a quality product.
So consider the above when starting your next endeavor in software development.