The chance that you have stumbled upon the term ‘Agile Software Development’, ‘Agile methodology’ or ‘Agile’ are relatively high. It’s not a surprise as using an agile approach can benefit the development process, hence why we use it here at Rare Crew. It’s a broad topic that can be divided into many sub-articles, but we want to give you a comprehensive overview of it. Let’s get into it.
What is Agile Software Development?
Agile Software Development is many things, but first we have to mention that it’s continual. In this scenario, continual means that there are several parts of the development process that are simultaneously being worked on. This may be the biggest difference compared to older approaches to development.
If we were to divide the development process into parts or functions it would be:
- Unit testing
- Acceptance testing
With different and so-called old school approaches, such as Waterfall, it’s natural to finish one part of the development process before moving to another part. In Agile development we have development sprints which lead to improving iterations of the product. Ideally these sprints are always the same length of time that way stakeholders know when to expect the next iteration.
Teamwork is another important aspect in Agile. Since everyone is working on different parts, it’s important not to forget the bigger picture. You may also be curious if there is room for failure. There is. By failing before the date of release, you can catch all the bugs and make the product bulletproof – that’s the whole point.
Sometimes we don’t talk about bugs as it can be a flawed or misunderstood design (User Experience), changes to the market, or the activities of your competitors that cause you to fail. Being agile means you are flexible and can adapt.
The Agile approach has its own Manifesto that we use in this article with the permission of the Agile Manifesto creators website.
“We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.“
After you read it a few times it starts to resemble a customer-centric marketing approach. Programming can get as frustrating as outbound marketing practices. Agile development has a goal to make the development process smoother and more suitable for human thinking and cooperation. For example, there are very few things more distant to human nature and human thinking than the documentation of code.
That doesn’t mean there is no documentation in Agile, but it can’t be compared to the heavy development blueprints from years ago in the Waterfall methodology.
To understand why the Agile approach emerged, we have to go back to the past. Back in the 90’s when computers were big and heavy the average span of the development process, from demand for an application to its delivery, was about three years. In other words, when you finished a project you were working on for 3 years, everything had changed. New technology, new objectives, new requirements.
Fed up with the slow process, a group of software engineers met in 2001 and created what we now know as the Agile Manifesto and its 12 Principles.
Read on: Simplifying The 5 Ps Of Project Management
12 Key Principles behind the Agile Manifesto
Again, the principles are cited from the creators’ original website.
“We follow these principles:
Our 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.“
As you can see, this is no tech-speak. It’s about practical thinking and how to be more effective without excessive bureaucracy. Since it’s about 20 years old and still in use, we can say the idea has been successful.
Benefits of Agile
Apart from the idea of a more customer-friendly approach, Agile has many benefits that are derived mostly from self-organized teams and collaborative work not just among developing teams, but also with the ‘outer ring’: business development, marketing, sales, stakeholders, and clients. The main benefits of Agile Software Development are:
More teams dedicated to specific tasks means you can quickly react and fix any problems. Agile is the king when it comes to flexibility.
Some might disagree that if you have more sprints (iterations) and in every session you discover something that needs to be tweaked, how can Agile be more predictable? Look at the problem from a finance perspective. Every iteration has a defined time window (more or less 1 - 4 weeks). That means the dedicated work has a cost.
While with Waterfall you can predict costs based on the timeline, all of these predictions are disrupted if there are any bugs or flaws after the launch. In an ideal world, Waterfall would win in the question of predictability. But this world isn’t so ideal!
Project management can be frustrating in plan-based approaches. In order to start the next phase, you have to finish the previous one. Benefit of agile is the flexibility of iterations and simultaneous work, which gives the project transparency and better control to managers across teams.
After the last iteration you get a functional, tweaked, oiled, and polished product that is thoroughly tested, debugged and ready to launch. Of course, your Agile approach must be working otherwise you won’t discover flaws.
In older approaches, clients or stakeholders get in touch after the project or product was finished. With Agile, the client is in contact at different stages and iterations which makes the whole developing process more transparent.
Waterfall vs Agile: which one is better?
Since we use an Agile methodology, you could guess our answer. However, Waterfall still has a place in the field of software development.
You should consider a Waterfall approach for:
- Projects in need of excess documentation, such as healthcare projects with strict regulations
- Thoroughly defined requirements and objectives of the project
- Existing products in need of enhancement
- Projects on fixed budgets
- Projects on fixed timelines
Frameworks of Agile Software Development
Speaking of Agile, we couldn’t leave out frameworks related to the software development lifecycle. The methodologies may focus on the practices or on the workflow. Some of them are well-known outside of the IT field, for example:
- Lean startup
Less known frameworks outside of the programming community would be:
- Adaptive software development (ASD)
- Agile modeling
- Agile unified process (AUP)
- Disciplined agile delivery
- Dynamic systems development method (DSDM)
- Extreme programming (XP)
- Feature-driven development (FDD)
- Lean software development
- Rapid application development (RAD)
- Scaled Agile Framework (SAFe)
What is scrum?
The best way to describe scrum is to use the words of a website dedicated to this framework that promotes the Scrum Guide with rules made by co-creators Ken Schwaber and Jeff Sutherland:
“Scrum is simple. It is the opposite of a big collection of interwoven mandatory components. Scrum is not a methodology. Scrum implements the scientific method of empiricism. Scrum replaces a programmed algorithmic approach with a heuristic one, with respect for people and self-organization to deal with unpredictability and solving complex problems. “
To put it simply, scrum is about effective teamwork and learning from experience, repeating success, and avoiding mistakes identified in the past.
What is Kanban?
Sounds Japanese to you? That’s because the Kanban framework comes from Japan and was created by Taiichi Ohno, an industrial engineer of Toyota working on Toyota’s Production System. The word Kanban means ‘card you can see’ and explains its functionality.
Imagine a board with a column where you stick your tasks. This column would be called ‘To Do’. Every time you are free, you would take one sticker from the ‘To Do’ column and work on it after moving it to the ‘Work in progress’ column. Every team member works this way. This is what a Kanban board is and you may be familiar with it thanks to tools like Trello.
Read on: Kanban Methodology: How Can It Help Your Software Development?
Why do we use an Agile approach at Rare Crew?
We are used to an Agile approach because we create business apps from the scratch while helping clients identify their needs. A customer-centric approach with continual contact is always a better idea as you can guide your client’s expectation with your expertise.
It’s far too common that companies don’t know what they want or need to fulfill their objectives. But that’s okay – that’s what experts are for. If you need consulting feel free to reach out. We are happy to help, Agile as ever!