Angular once upon a time
Fri 12/10/2018 22 mins read 164 views
The Advent of Agile Software Development
The more complex and large-scale the software is created, the more difficult it is to build and manage a software project. Therefore, finding and developing better software project management methods and tools is indispensable.
We know a lot of methods that help determine the direction of software building and development, such as some of the processes: waterfall model, spiral model, stereotype model,… Among those, the water fall model can be considered a traditional model in software development process.
Basically, this model will go through stages from collecting and analyzing project requirements, designing, building, testing and lastly maintenance. These stages are carried out sequentially from the beginning to the end of the project. With the use of waterfall models, there are many problems that the team implementing software projects has to face. Not until all the stages from collecting, analyzing project requirements, to planning and developing the software are finalized, do the customers receive the finished products to use. This leaves customers with very few opportunities to provide feedback or meaningful changes during the software development. And changing the plan will be very costly.
It is the limitation from traditional methods that creates a need for a new method or software development process. And the flexible Agile software development process partly meets that need.
What is Agile?
Agile Development Method was born in the early 1990s, with the idea of overcoming the disadvantages of the traditional methodology, namely the Waterfall model. Agile is the common name that refers to fast-growing methods. ‘Agile’ means quick and clever in action.
Agile Software Development aims to create software that is capable of transforming, growing, and evolving over time without having to start over. This approach focuses on simplicity: creating a simple software that meets the needs of today’s customers and is ready for tomorrow’s changes.
Agile approach minimizes the risk by developing the software within short time frames and in close collaboration with customers. Each iteration resembles a complete software development process, including obtaining request, analyzing, designing, programming, testing, and documentation. The prominent feature of this method is the ability to adapt to change even when the project has just been started.
The key point to make Agile different from traditional models is that traditional models are planned models; while Agile model does not necessarily follow a plan, it can take breakthrough steps to create the most effective software.
There are four key features of Agile:
- Individuals and interactionsover processes and tools
- Working softwareover collecting documentation for development
- Customer collaborationover negotiation of a contract
- Adaptingto change over following a plan
SCRUM – Agile oriented specific process
Scrum is a methodology written by Ken Schwaber and Mide Beedle. The term Scrum was created based on an article by Takeuchi and Nonaka (1986) which introduced a quick and adaptive software development process.
Scrum Software Development is known as an advanced management approach that applies to existing systems. Therefore, it is possible to apply Scrum with other software development methods.
The main idea is to account for a set of factors such as requirements, efforts, resources, or technologies used for development, which can completely be changed during the development period. This shows that the development process is unstable, complex and unpredictable. Therefore, there is a need for a highly flexible process to meet these changes, and the output should be highly applicable to customer needs.
- Flexibility in delivering results:the requirement provided depends on the environment, and it is changed from time to time.
- Flexibility in scheduling:the delivery may be earlier or later than planned.
- Small software development teams:each project may consist of many small development teams sharing the same goal.
- Frequent discussion:the implementation process of each group is regularly reviewed
- Collaboration:during the project implementation, the collaboration among the team members and with customers is valued.
Has traditional Agile become out-of-date?
Traditional Agile was born a long time ago, bringing a lot of positive changes to the development of software projects. However, over the years, the world has changed, and some of the Agile features are no longer suitable with the current environment.
Modern Agile is a new and broader approach to traditional Agile. Modern Agile is not only applied to software development but also to projects in other fields.
What is Modern Agile?
To clarify what Modern Agile is, this is the concept described on Modern Agile website (http://modernagile.org/): “Over the past decade, innovative companies, software industry thought leaders and lean/agile pioneers have discovered simpler, sturdier, more streamlined ways to be agile. These modern approaches share a focus on producing exceptional outcomes and growing an outstanding culture. Today, it makes far more sense to bypass antiquated agility in favor of modern approaches”.
Modern Agile has four key principles:
- Make People Awesome
What this means is to make every single person involved in the project/product such as users, coworkers, managers, stakeholders, etc., become more awesome. However, how do people in our ecosystem become awesome? There are many things you can do to achieve this. For example, if your colleagues feel unhappy, make them happy. If the customer feels satisfied with the value you bring, then try to find out how to enhance and advance your product even more. Turn the company into a place that you want to work at everyday…
- Make Safety a Prerequisite
When people feel safe, they will have the background to create great values. The safety concept here includes both physical and psychological aspects. This is a very important principle of Modern Agile.
Besides human safety, there is also safety of the product. Is the product vulnerable to damages? Is it dangerous to users?
- Deliver Value Continuously
This means creating value and delivering to the customer as quickly as possible. It is the breakdown of work, product into smaller parts to deliver faster and on a continuous basis.
- Experiment and Learn Rapidly
This is very important so that you and your company can stay distinguished from your competitors. This principle is about experiencing and learning from these experiences. This will provide the means to create things that make people awesome.
The four principles of Modern Agile can be easily understood as: If you feel safe when you fail, you will gain experience and rapidly learn the lessons. This allows you to create and deliver values to your customers faster and more continuously. That’s what makes everyone more awesome.
The traditional Agile/Scrum principles are very good and still applied effectively in the process of building and developing software. However, Modern Agile’s new approach do not eliminate the value of traditional Agile, but only supplement the important properties that are appropriate to the current environment, not only within the software industry but also in other fields. Now pick the most suitable and effective path for your project/company!