Nobody said that software development was easy. Because of this, there are processes called Agile Methodologies that help the majority of development teams and clients.
But, what is an agile methodology? This concept came about because of a need to speed up, like its name indicates, the steps to create software. It is centered around human interactions to maintain fluid conversations for dynamic and participative development. Agile methodology utilizes a development system that adapts, as opposed to a predictive method. This means that the work team has the desired result in mind, but it does not know the exact type of product since it is impossible to predict exactly what the client might want.
One of the bases of this methodology is what is known as the iterative and incremental life cycle. This consists of progressively improving the product and providing the client an MVP periodically. The goal is constant improvement towards a final product. Businesses that dedicate themselves to creating software must use agile methodologies not to generate a plan of action, but rather to make constant improvements that lead to a perfect product. The following discussion’s purpose is to help understand what method fits best with given business styles, and, therefore, which is most efficient.
At DIGITAL55, we have compiled five of the best agile methodologies and have analyzed their advantages and uses.
The Agile Manifesto and Principles
The Agile Manifesto is a writing created and signed by 17 personalities from around the programming world. The goal is to ease the process for developers and clients and to accelerate software creation processes. It mostly revolves around interpersonal relationships between the client, developers, and the work team, and on the standardized process throughout the years. In that regard, the Manifesto says this:
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 processes and tools. 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.
On the website there are also available the Agile Manifesto basics Principles for those users that want to know more about it.
Scrum, the most used development software
Scrum is the most used agile methodology. In 2017, they had 58% of the methodology’s total use, far ahead of any other. This methodology is based mainly on creating and assigning tasks.
Such tasks, normally written on Post-Its or something of the like, are implemented in the system. They control and produce changes: assigned, not assigned, finished, in progress, etc. The Scrum methodology is developed through attaining certain concrete points:
- Firstly, Product Backlog must be defined. It is a list of capabilities that the client wants the product to have, organized by higher or lower importance.
- After defining the Product Backlog, developing the list of tasks, Sprint Backlog, It consists of an index of certain Product Backlog points that should be completed in the first part of the development. The work team decides how long it will be.
- Throughout the Sprint Backlog, meetings between the client and the work team are also held. These are known as Sprint Planning Meetings. They determine how to focus on the project, the stages, and the installments.
- During the Sprint period, there are daily meetings called Daily Scrum or Stand-up Meetings. They are called stand up meetings because they are supposed to be brief, no more than five to ten minutes. In these meetings, the work team lays out and responds to three questions: What did I do yesterday? What am I going to do today? What help do I need?
- With the Sprint finalized, the next phase, the Sprint Review, can begin. It consists of a revision of all of the project’s advances up to that date. At this point, the work team should have a tangible product that can be presented to the client.
- Finally, the team revises and sums up the completed and unfinished objectives in order to eliminate making the same errors in the future. This final step is known as Sprint Retrospective.
This method of Japanese origin is based on their Toyota production method that emerged in the 40’s. Its name comes from combining Kan, which refers to the visual plane, and Ban, which means board (as in blackboard or whiteboard). From this, you can conclude that this agile methodology “makes use of note cards for management, thus completing the determined processes.” Such a use of these cards is its main advantage, which makes Kanban a simple system for a company to implement.
Kanban allows clear observation of what is being done now, what has been done, and what should be done. The cards with information on the state of the project are placed on a board that should be situated where all members of the team can see it. If the form is simply displayed, it is complete and “will contain as many columns as is necessary for the state of the project.”
In Kanban, a foundation should be established so that it is correctly implemented:
- Visualize the work flow: The board (as in blackboard or whiteboard) helps to visualize just as much as it helps to achieve every part of the project. This allows the team to have a clearer vision of the state of development.
- Limiting the quantity of work in progress: Establishing achievable goals is very important. An excess of work can lead to demotivation amongst members, which can lead to an incomplete project.
- Easy reading on the visual indicators: The use of color-coded cards can enormously help to distinguish between different types of work.
- Constant follow-ups: Continuously evaluating if the development goals are being completed and handed in will help to understand the state of the project.
eXtreme Programming (XP)
XP methodology was developed by Kent Beck, one of the main precursors of the Agile Manifesto. Of all of the development methodologies, eXtreme Programming is the simplest software and easiest to set up, even though it was one of the least used by companies in 2017. It is a methodology based on the “continuous feedback between the client and the development team.”
With this information, the best software depends on what the client wants for his given project. It is highly recommended for projects whose conditions are ambiguous or variable. In this sense, planning should be highly flexible and based on an iterative development. It should consist of quick delivery “waiting for daily feedback from the client.”
“With XP methodology, each of the development’s day-to-day interactions are reflected, designed, and documented while code is written.
eXtreme Programming is a very risky methodology, so the success or failure of the project depends exactly on the quality of the programmers and how precise the client’s ideas might be. For a correct application of the XP methodology, certain factors should be accounted for:
- Programmers should work in pairs to prevent stagnating certain parts of the project.
- Programmers should be professionals with vast experience in the field, since they have to program, analyze, and test multiple parts over time.
- It is very important that the programming team gets along well with one another, to facilitate a constant flow of conversation.
- The client should be able to incorporate himself into the work methodology. In this way, late feedback on modifications can be eliminated and delays can be avoided.
Lean development is a methodology specially designed for small work teams. It is necessary that members are prepared and motivated, as the project development will not directly follow a typical system’s processes, but rather will depend on the efficiency of the team’s union. Just like Kanban and other agile methodologies, Lean is based on Toyota’s method of production and is one of the most utilized for developing projects in the middle term.
According to the book Implementing Lean Software Development: from Concept to Cash, this methodology consists of implementing seven basic principles, which are divided into various points:
- Eliminate Waste. The [two] biggest wastes in software development are:
- Extra Features – We need a process that allows us to develop just those 20 percent of the features that give 80 percent of the value.
- Crossing Boundaries – Organizational boundaries can increase costs by 25 percent or more. They create buffers that slow down response time and interfere with communication.
- Build Quality In. If you routinely find defects in your verification process, your process is defective.
- Mistake-Proof Code with Test-Driven Development – Write executable specifications instead of requirements.
- Stop Building Legacy Code – Legacy code is code that lacks automated unit and acceptance tests.
- The Big Bang Is Obsolete – Use continuous integration and nested synchronization..
- Create Knowledge. Planning is useful. Learning is essential.
- Use the Scientific Method – Teach teams to establish hypotheses, conduct many rapid experiments, create concise docu- mentation, and implement the best alternative.
- Standards Exist to Be Challenged and Improved – Embody the current best known practices in standards that are always followed while actively encouraging everyone to challenge and change the standards.
- Predictable Performance Is Driven by Feedback – A predictable organization does not guess about the future and call it a plan; it develops the capacity to rapidly respond to the future as it unfolds.
- Defer Commitment – Abolish the idea that it is a good idea to start development with a complete specification.
- Break Dependencies – System architecture should support the addition of any feature at any time.
- Maintain Options – Think of code as an experiment—make it change-tolerant.
- Schedule Irreversible Decisions at the Last Responsible Moment – Learn as much as possible before making irreversible decisions.
- Deliver Fast Lists and queues are buffers between organizations that slow things down.
- Rapid Delivery, High Quality, and Low Cost Are Fully Compatible – Companies that compete on the basis of speed have a significant cost advantage, deliver superior quality, and are more attuned to their customers’ needs.
- Queuing Theory Applies to Development, Not Just Servers – Focusing on utilization creates traffic jams that actually reduce utilization. Drive down cycle time with small batches and fewer things-in-process.
- Limit Work to Capacity – Establish a reliable, repeatable velocity with iterative development. Aggressively limit the size of lists and queues to your capacity to deliver.
- Respect People. Engaged, thinking people provide the most sustainable competitive advantage.
- Teams Thrive on Pride, Commitment, Trust, and Applause – What makes a team? Members are mutually committed to achieve a common goal.
- Provide Effective Leadership – Effective teams have effective leaders who bring out the best in the team.
- Respect Partners – Allegiance to the joint venture must never create a conflict of interest.
- Optimize the Whole. Brilliant products emerge from a unique combination of opportunity and technology.
- Focus on the Entire Value Stream. From concept to cash. From customer request to deployed software.
- Deliver a Complete Product – Develop a complete product, not just software. Complete products are built by complete teams.
- Measure UP Measure process capability with cycle time.
Measure team performance with delivered business value. Measure customer satisfaction with a net promoter score.
Scrumban, a combination of methodologies for developing software
Scrumban is the agile methodology that combines the advantages of Scrum and Kanban. In 2017, it was used by 7% of people who utilize agile methodologies. This is a number that, in reality, is far beyond other methodologies like eXtreme Programming or Lean, with 1% and 2% use rates, respectively.
Although with this methodology Scrum and Kanban can combine in diverse forms, normally it takes Kanban’s board method, adds categories from Scrum, and the points that should be followed start with Product Backlog, and end with Sprint Review.
In this way, it maintains a straight line of work with a whiteboard as a visual aid, but offers more information. Scrumban is recommended when working towards any of these tasks: Maintaining projects, improving new products, or managing problematic projects.
Benefits of Agile Methodologies
The benefits of using agile methodologies for developing software are numerous compared with former methods. They are used more and more for saving money and time, and improving team members’ motivation. This translates into higher quality work and greater efficiency.
On their part, the development process is also positively affected thanks to these methodologies. The flexibility in the processes, the constant feedback from the client during development, and the interactions amongst the team and with the client help to significantly increase project quality. This makes it possible to eliminate unnecessary characteristics and to quickly perceive errors or problems.