When software was first developed, the development process did not fit any kind of governance. Then came the waterfall , which introduced the idea that software development can be determined by the time an application is created or built.
It used to take much longer to test and deploy software than it does now because there was no balance and no checks in between during the development process. As a result, we received low quality software with errors and bugs, made much later than the established deadlines. The focus was on long and drawn-out project planning.
Waterfall designs have been linked to the triple constraint model, also called the project management triangle. Each side of the triangle represents one of the project management constraints: scale , time, and cost . As Angelo Beretta writes , the triple constraint model states that “cost is a function of time and volume, and these three factors are related in a certain and predictable way ... If we want to shorten the lead time (time), we must increase the cost. The model also implies that if we want to increase volume, we must increase the cost or lead time. "
Moving from Waterfall to Agile
The waterfall came to us from production and mechanical engineering, which are difficult to imagine without a linear process. Before you build a roof, you build walls. Software development problems were also viewed as something that could be solved through planning.
In the end, waterfall was recognized as a harmful approach, contrary to the intuitive approach to software development. Very often the value of a project could not be determined until the very end of the project cycle. In many cases, projects have failed. In addition, the customer did not see any working software until the end of the project.
Agile implies a different approach that moves away from planning the entire project, linking to estimated dates and reports. Agile methodology assumes and takes uncertainty into account. It encourages you to react to change instead of ignoring it. Change is seen as a way to meet customer needs.
Agile values
Agile is governed by the Agile Manifesto. Here are his 12 principles :
- Customer satisfaction is the highest priority.
- Changing requirements is encouraged, even in the later stages of development.
- A working product should be released as often as possible.
- Developers and business representatives must work together.
- Motivated professionals should work on the project.
- Live communication is the most practical and effective way to exchange information.
- A working product is the main indicator of progress.
- Agile processes contribute to sustainable development.
- It is important to pay attention to technical excellence and good design.
- Simplicity is essential.
- The best architectural solutions, requirements and design ideas come from self-organizing teams.
- Reflect regularly on ways to improve performance and adjust your work style.
4 main ideas of Agile:
- people and interaction are more important than processes and tools,
- a working product is more important than comprehensive documentation,
- cooperation with the customer is more important than agreeing on the terms of the contract,
- being willing to change is more important than following the original plan.
This approach is very different from a hard waterfall. In Agile, the client is a member of the development team. In the waterfall, he participates only at the beginning, when defining business requirements, and at the end, when considering the final product. In Agile, the client helps the team write the product acceptance criteria and remains involved throughout the entire process. In addition, Agile requires change and continual improvement from all members of the organization. The development team works with other teams, including project managers and testers. Who does what and when depends on the assigned role and is discussed with the whole team.
Agile software development
Agile software development requires adaptive planning, evolutionary design, and end product delivery. Many software development methodologies, structures, and practices are categorized as agile, including:
- Scrum
- Kanban ( )
- XP ( )
- Lean
- DevOps
- FDD ( )
- TDD ( )
- Crystal
- DSDM ( )
- ASD ( )
They are all used on their own or in combination with other methodologies for software development and deployment. The most common are Scrum , Kanban (or a combination called Scrumban) and DevOps.
Scrum is a framework in which a team works independently and cross-functionally to increase the speed of delivery of the finished product and add value to the client's business. The team usually consists of a Scrum Master, Product Manager, and Developers. The main focus in Scrum is on faster iterations with fewer improvements .
KanbanIs an Agile framework, also sometimes referred to as a workflow management system. He helps the team to visualize their work and increase efficiency (while remaining agile). Kanban is usually a digital or physical whiteboard. The team's tasks move around the board depending on the stage: the task has not started yet, in progress, being tested, completed. Kanban allows each team member to see the status of tasks.
DevOps values
DevOps is a culture, a way of thinking, a way of developing software or infrastructure, and a way of building and deploying software and applications. Operations and development are not separate; they work simultaneously without interfering with each other
DevOps is based on two other areas: Lean and Agile. DevOps is not a name or role in a company. This is actually a commitment that an organization or team makes in terms of continuous product delivery, deployment, and integration. According to Jin Kim , author of The Phoenix and The Unicorn Project, there are three “paths” that define DevOps principles:
- flow principles,
- principles of feedback,
- principles of endless learning.
DevOps software development
DevOps is an agile practice. In its true form, it represents a shared culture and thinking about software development and the implementation of information technology or infrastructure.
When you think about automation, cloud, microservices, you think about DevOps.
Nicole Forsgren, Jez Humble and Jin Kim have written the book Hurry Up! How to Build and Scale High-Performance Organizations. " In an interview, they explained what DevOps is:
- Effective software delivery matters. It has a significant impact on profitability, market share, quality, customer satisfaction, organizational goals, and mission.
- Companies with high efficiency achieve high development speed, stability, quality. They don’t have to sacrifice anything to achieve all this.
- You can improve your performance by implementing DevOps principles and practices from Lean, Agile.
- The implementation of these practices and opportunities also affects your organizational culture. It, in turn, affects both the effectiveness of your software and the productivity of the organization.
- It takes a lot of work to figure out how to improve efficiency.
DevOps and Agile
Despite the similarities, DevOps and Agile are far from the same thing. Some argue that DevOps is better than Agile. Getting to the bottom of it is important to avoid confusion.
Similarities
- Both are software development methodologies, you can't argue with that.
- Agile has been around for over 20 years, DevOps is also relatively new.
- Both approaches believe in fast software development. Their principles are based on how to develop software quickly without harming the customer or operations.
Differences
- , .
- , DevOps, Agile. , Agile , . DevOps, , , . .
- Agile , . DevOps , DevOps . , .
- DevOps , Agile . Agile MVP ( ) .
- Agile — , .
Agile | DevOps |
---|---|
, | |
Agile and DevOps are different things, although their similarities lead many to think they are one and the same. This misunderstanding is doing Agile and DevOps a disservice.
I worked in Agile and from my experience I can say that it is very important for teams and organizations to understand what DevOps and Agile are. You also need to understand how they help teams work faster and more efficiently, ensure product quality, and improve customer satisfaction.
Agile and DevOps are by no means rivals to each other (at least there are no reasons yet). They are allies rather than enemies in the agile field. Agile and DevOps can work in an exclusive and inclusive manner, which allows them to exist in the same space.
Translation: Diana Sheremieva
Learn more about how to get a high-profile profession from scratch or Level Up in skills and salary by taking SkillFactory's paid online courses:
- DevOps course (12 months)
More courses
- Machine Learning (12 )
- Data Science (12 )
- (9 )
- «Python -» (9 )