Software development methodologies as the part of the Project Management discipline became popular in the 1980’s. The goal is to reduce problem incidents by providing a complex system of rules and competencies. Which methodologies are currently the most widely used and what is their evolution?
IT project management in the 20th century was characterized by great dynamics and companies looking for the “right” path. More important were methodological approaches or paradigm rather than technology. Untill these days, two main ways emerged - Rigorous and Agile.
This group of methodologies is historically the largest one. It deals with a detailed description of the software development process. Great emphasis is placed on massive documentation and the whole process has to be clearly defined. There is no space for deviations.
This is more commonly known as the Waterfall model - a definition of the various activities which go one after another.
We can also hear about Spiral Model, Unified Process or Enterprise Unified Process.
Pros & Cons of the Rigorous approach
Each project must be considered from three perspectives (or constraints) - time, cost and scope. Some of this constraint is fixed, whereas the others may change during the project. In case of rigorous methodologies, the variable constraint is scope (that’s the input from the customer).
The rigorous “approach” can be a very good project management methodology. However there are also some disadvantages which have to be considered:
- Extremely detailed and directive control.
- Processes are repeatable
- All requirements are collected in advance.
Although these may seem like good attributes (because the managing of such a project is quiet easy), the opposite is true.
This approach doesn’t make it easy to deal with sudden changes. It’s necessary to specify all the requirements in advance and not change them during the project.
As a result of the mentioned shortages, new ways and options of the software development lifecycle were discovered. Nowadays the customers are constantly pushed to make changes in their business models. Globalization represents more opportunities, but also places more demands on both sides of the trade. For these reasons there was a demand for a new approach. This was the origin of Agile.
Agile as an adjective means “to be able to move quickly and easily”. In the term of software development, Agile represents a major paradigm shift in the past decades. It’s not a process, but rather the way of how to think differently.
Rigorous (or traditional) methodologies presuppose that a customer actually knows what he/she wants. Everything is mainly up to a programmer. He should create a product that a customer may need. However as we already know, this approach has some limitations.
Agile doesn’t follow any strict rules or processes. The main idea is to create an environment, which is “tolerant to change” and which allows the acceptance of any changes in the future. Agile also prefers day-to-day interaction and cooperation between colleagues within the team rather than their continual supervision. “Agile” people should be also more willing to change.
Let us now return to the main three constraints (time, costs and scope). The flexible part is scope and others are fixed (time is usually fixed like in any other IT project).
In the beginning of the project (during Planning) is roughly highlighted what has to be done, but not the details. There could be mentioned only “minimum viable product”, which means the absolute basic which should be delivered. If the team finishes this amount of work early, than the scope of the project is extended. Thanks to the close cooperation with the customer, the input range is variable.
Agile methodologies include:
- Adaptive Software Development (ASD)
- Feature Driven Development (FDD)
- Extreme Programming (XP)
- Lean Development
The list above is not complete, but for our purposes it’s not necessary to know all the available techniques. Methodologies complement each other and they contain many common elements.
What methodologies are the most popular?
We have characterized the two largest groups of methodologies of the Software Development. This is mainly theory. In the following paragraphs, we will be more focused on this interesting topic: What methodologies are nowadays mostly used in IT companies?
Although companies are not so willing to disclose the information about their internal processes, there is some awareness about the current market. In this article, we are going to talk about some outputs from the annual official report, made by Version One Ltd - called “State of Agile”.
State of Agile as one of the most comprehensive industry surveys which gives agile software professionals a set of relevant statistics. In the last survey State of Agile, professionals (Project Managers, Developers, Leaders, ScrumMasters, etc…) mainly from North America (65 %) and Europe (21 %) were involved.
At least ninety percent of respondents said they are knowledgeable about agile software development techniques. These figures look nice, however there is no equal sign between them and the same number of teams which are using Agile principles. “Only” every second respondent (45% of all of them) works in development organizations where the majority of their teams are agile.
The most widely practiced methodology is Scrum (56%), followed by hybrid of XP and Scrum (10%), Kanban (5%), Lean Development (2%), etc… on the bottom of the list is XP, DSDM (Dynamic Systems Development Method) or FDD.
Thanks to the massive support of loud proponents of the Agile approach, someone may think that these methodologies dominate the whole IT industry. However when you look at the “State of Agile” survey, Agile and traditional methods have an equivalent business share. A known fact is that the rise of Agile was really fast. This position was reached in just past two decades.
Agile and the future
Agile was also discussed last year at the annual ITEC conference, which is attended by representatives from the military industry and academia to connect and share knowledge with the international training, education and simulation sectors. There was an general agreement that Agile will be essential for many projects in the future.
As we have already mentioned in this article, no approach was a greenfield project. Any methodology incorporates some elements from other areas and combines them together. Adoption of such a technique is an infinite process which needs modifications all the time.
Agile development (or any other) will never be considered as the only one which is appropriate for everything. Success of each project depends on many input factors like size of the company, team, project type, cultural environment, relationship between employees, personalities, etc. There will always be many approaches which are suitable in different environments.