In this article, we'll go a little deeper into Agile methodologies. We'll talk about what Agile software development is and how several Agile models work. To begin, let us discuss what Agile Project Management entails. What is the significance of every project management technique to you? Well, for any method or procedure to be successful, it should have a simple definition that conveys its objective without getting too technical.
Agile project management is an iterative method for delivering value and obtaining rapid feedback from the market to adjust swiftly to changing conditions. Small batches are emphasized in this approach as a process for generating transparency. Collaborative working with the client, as well as getting feedback immediately, is essential.
It also enables you to react swiftly to changing demands and produce higher-quality goods or services to satisfy your clients' requirements better. Here, we should clarify that Agile is not a methodology in and of itself. Instead, Agile is a way of thinking for collaborative problem-solving and a method for project management in today's world.
A short history of Agile
Before Agile: The era of waterfall methodology
The waterfall is one of several types of software development processes defined in software engineering. It was the gold standard for software development until recently. Winston W. Royce introduced the term waterfall in 1970, mentioning it in his article "Managing the Development of Large Software Systems." It's a very time-consuming approach that consists in carrying out basic activities as separate design phases one after another. Each activity is a step (cascades):
- System planning (including requirements specification),
- System analysis (including requirements analysis and feasibility studies),
- System design (individual structures, etc.),
- Implementation (code creation),
- Testing (of individual elements of the system and elements connected),
- Implementation and maintenance of the resulting system.
If any of the phases return an unsatisfactory product, we go back by making subsequent iterations until we get a satisfactory product at the end of the steps.
There was a lot of documentation required in the software development process before any code was written. The business analyst generally created a business requirements document, which detailed all of the things the company required in an app. Everything was covered in these lengthy documents, which included comprehensive technical specifications and visual user interface layouts. The business requirement paper was turned into a technical need document by the technologists. This document described the application's architecture, data structures, object-oriented, functional designs, user interfaces, and other non-functional requirements.
Coding, integration, and testing began during the waterfall software development method before an application was ready for production. It took months to figure out how the application worked, and by then, the stakeholders were growing restive and more adept at determining what they wanted. It's no wonder that making adjustments was so costly! The whole procedure might take a few years in total.
In a way, the Waterfall model is a reflection of the first production lines. Events occur one after another, and most importantly (and worst), quality is managed at the end, when the product is ready and correcting mistakes is most expensive. The waterfall model incorrectly assumed that work could be planned ahead of time with a high degree of accuracy.
Agile yesterday, today, and tomorrow
Agile's history is lengthy; therefore, we'll rapidly go through its early phases. Thanks to it, we will understand the spirit of Agile philosophy.
I must begin with Henry Ford, who revolutionized the automobile manufacturing system by employing large-scale production. Toyota (particularly Kiichiro Toyoda) was inspired to start producing automobiles several years after the breakthrough caused by the invention of mass production.
A fascinating individual in this context is Walter Shewhart, an engineer who worked at the legendary Bell Laboratories. Shewhart created a basic graph that we now know as the "control chart." This diagram and brief text outlined the fundamental concepts and variables involved in today's "quality control process" (hence, Shewart is the father of statistical quality control). Shewhart worked at Bell with Edward Deming, who more than 20 years later would train Japanese engineers about quality. There will be engineers from Toyota, who will later revolutionize the approach to quality at the production line.
Toyota was still making textiles at the start of the twentieth century. Sakichi Toyoda founded the business. In 1929, Kiichiro Toyoda, son of the company's founder, went to the United States to see how other companies operated. Inspired by what he observed and the success of Henry Ford, he finally decided in 1930 to retrain the Toyota Group into the automotive industry. Toyota's exceptional manufacturing approach (TPS) will be refined and developed over the next several decades. Toyota, like before, will serve as an inspiration to thousands of businesses! It will also have a significant role in developing Agile, Lean, and a new way of thinking about project management.
We have to discuss Edward Deming, who worked at Bell Laboratories for several years with Shewhart. He was concerned with quality, just like Shewhart. He is known for his creation of the PDCA = Plan, Do, Check, Act cycle. This method may be used in nearly any type of manufacturing process. The "Deming Cycle" is the name given to this procedure today. After the end of World War II, Deming left for Japan. Deming was the first American expert to explain knowledge to Japanese engineers and managers methodically using the PDCA cycle. His main idea was to assess the product's quality as well as what took place during production. It was expected to result in "continuous improvement." As a result, Deming's work was revolutionary. The Toyota Production System, which the Japanese developed, primarily relied on his (Deming's) Cycle. So in terms of monitoring production and implementing tiny modifications continually.
Joseph M. Juran is the second man worth noting in addition to Deming. He had the chance to work with Shewhart, where he learned about statistical quality control and could do so because of his experience working with Deming. Like Deming, Juran traveled to Japan to educate Japanese engineers. His lectures were a tremendous success, and Juran remained in Japan to promote his ideas of excellence.
The work of Deming and Juran had a significant influence. Japan was known for producing low-quality items after World War II. However, by 1970, the Japanese and its products began to be seen as superior.
Toyota Production System
The Toyota Production System (TPS) has arrived, and we've come to the most crucial moment in the history of Agile development methodology. Taiichi Ōno created TPS. He started working for Toyota in 1943.
Reminisce about how automobiles were produced in the past. From Ford's time to the next 50 years, there was a production line on which cars went, and workers were reduced to performing mindlessly small repetitive actions. There was no quality control. When the automobile was finished, defects were discovered. Toyota was beginning to see problems with this approach. It is how Toyota came to its revolutionary management methods known today as the Toyota Production System.
Toyota correctly assumed that individuals desire to do their best work. They want to educate and grow. They employed the PDCA cycle (Deming Cycle) for ongoing learning. The PDCA cycle is a kind of sprint during which we work and draw conclusions, learn something, and introduce minor improvements. PDCA is a way of thinking and learning.
The second component of TPS, after people, is a procedure. Reducing waste is a crucial component in process improvement. It was demonstrated by firms' efforts to minimize stocks (Just-In-Time) through appropriate modification of the practice. Another aspect of the process was to address issues at source and as soon as they emerged. Any employee in the factory can stop the whole manufacturing line if a problem is discovered. The principle of Genchi Genbutsu was "go and see for yourself." Toyota paid significant attention to "visual management." The Kanban (progenitor of the presently used Kanban) system, for example, transferred information on "command cards" among and between processes.
Toyota was more than simply a car manufacturer. It was about changing the way you think. By claiming, "we make people first, then automobiles," the intention was to emphasize the value of human ability. Into the company's culture, it was creating continual learning and respect for people.
In the 1960s and 1970s, Toyota's solutions were being duplicated by other Japanese automobile manufacturers such as Hino Motors, Daihatsu, Mazda, and Nissan.
TPS was little-known outside of Japan for many years. For a long time, it wasn't even mentioned. The first English article on TPS did not appear until 1977.
The Godfathers of Scrum - The New New Product Development Game (Hirotaka Takeuchi and Ikujiro Nonaka, 1986)
In 1986, the Harvard Business Review published "The New Product Development Game" by Hirotaka Takeuchi and Ikujiro Nonaka. They looked at several teams and projects from the world's most efficient companies such as Honda, Fuji-Xerox, 3M, Hewlett-Packard. They proved that the old way of creating new products (not just software), i.e., the cascade system introduced by NASA, was flawed.
Japanese professors compared these teams to a rugby team and found that the best of them worked like Scrum rugby players. They found that the most efficient teams used overlapping activities that were faster and more flexible. In addition, the teams were autonomous, complemented each other, and made their own decisions. The management played more of a servant role, and it did not order anything. It only facilitated tasks and removed obstacles.
This article was discovered by Jeff Sutherland (co-creator of Scrum) seven years later, leading to the invention of Scrum methodology.
Lean Management (1990)
The Toyota Production System, as defined above, is often known as "Lean Production," emphasizing the fact that it applies to business. Lean management refers to the transfer of the TPS concept from manufacturing (industry) to management.
The book "The Machine That Changed the World" in 1990 by a group of MIT researchers associated with the Massachusetts Institute of Technology (MIT) marked a watershed moment in the popularization of Lean management. The book briefly describes two fundamentally different Lean and mass business systems based on the example of the car market.
The Birth of Scrum (Jeff Sutherland, 1993)
In 1993, Jeff Sutherland discovered an article, The New New Product Development Game. He was looking for a method to manage his staff at the time, and he was working at Easel in search of one. Although this essay addressed production rather than software development, Jeff and his team decided to adopt a new approach. It became so interesting that he entirely dedicated himself to refining it. It is how the Scrum process was formally born.
Scrum was formalized as a software development method by Ken Schwaber in 1995. Jeff Sutherland and Ken Schwaber at the Association for Computing Machinery (ACM) conference presented the paper "SCRUM Development Process," in which they described a new way of building software and software development teams.
In 2001, Ken Schwaber and Mike Beedle published the first cult book about Agile Software Development with Scrum.
Birth of Agile - Agile Manifesto
Agile was created in the early 2000s as an alternative to conventional waterfall-style management. Many people felt it was at the heart of frequent problems such as delays and poor internal communication. Closely linked to emerging methodologies like Extreme Programming and DSDM, Agile debuted with the publication of the Agile Manifesto in 2001. The Manifesto resulted from a collaboration between Lean software developers committed to proposing faster and more effective development methods. Agile Alliance was officially formed in late 2001 as a place for people to develop software and help others build software to explore and share ideas and experiences. Many lightweight techniques came before it: Extreme Programming, SCRUM, DSDM, Adaptive Software Development, Crystal, Feature-Driven Development, Pragmatic Programming, and other similar approaches. They wrote four major Agile principles for project management to develop better software:
- Individuals and interactions over processes and tools,
- Working software over comprehensive documentation,
- Customer collaboration over contract negotiation,
- Responding to change over following a plan.
The Agile Manifesto and its history may still be found on the original website created by the creators, agilemanifesto.org. They also include a brief description of the twelve principles. Agile development is based on (in keeping with its ideals). The following are the twelve principles that Agile development generally follows:
- Customer satisfaction through early and constant delivery of valuable software,
- Welcome changing requirements, even late in development,
- Working software is delivered frequently, with the preference of weeks rather than months,
- Sustainable development, able to maintain a constant pace,
- Daily cooperation between business people and developers,
- Projects are built around motivated individuals who are trusted to get the job done,
- A face-to-face conversation is the best form of communication,
- Working software is the principal measure of progress,
- Continuous attention to technical excellence and good design,
- Simplicity is essential,
- Self-organizing teams result in the best architectures, requirements, and designs,
- Teams regularly assess how to become more efficient and adjust accordingly.
Agile Project Management and other Agile development practices, such as Daily Stand-ups and Retrospectives, are based on the iterative life cycle concept in which deliverables are delivered in phases throughout the project. Other essential aspects of the approach include continuous product involvement and backlog evaluation. Scrum and similar methodologies were developed based on these.
The roles in the Agile methodology
The product owner serves as the project's stakeholders' representative. The function is primarily focused on determining the project's future direction. The Product Owner understands the project's requirements from a stakeholder standpoint and can communicate them to the product development team. The Product Owner also knows how to connect the project with all stakeholders' long-term goals and aligns it with everyone's needs and desires. At each stage in the project cycle, end-user feedback is included in determining the best next-best-action plan for the growth.
The key responsibilities of a Product Owner include:
- Scrum backlog management,
- Release management,
- Stakeholder management.
The Product Owner is aware of the product backlog items added to the list and those chosen for work. Based on stakeholder input and circumstance, the Product Owner adjusts and prioritizes a backlog item list. The job also ensures that the release cycle planning is maintained so that the development team can continue to deliver new project versions. Finally, the Product Owner ensures that product development provides value to the stakeholders. Communication with end-users, company executives, partners, and the development team is thus an essential duty.
Scrum Master/Team Lead
The Scrum Master is the person who leads and supports the project's progress among team members. The Scrum Master ensures that tasks are carried out according to the Product Owner's instructions.
- Facilitating the Scrum processes and Sprint activities on daily Scrum meetings (sprint review),
- Communicating with team members about changing needs and preparing,
- Coaching team members to achieve outcomes,
- Manage administrative tasks such as meetings, collaboration, and reducing bottlenecks that impede project progress.
To ensure correct and timely implementation of the Scrum framework, the person is also responsible for external coordination with the company and the Product Owner. The following tasks may be included:
- Implementing changes,
- Coordinating with stakeholders to obtain the necessary resources,
- Providing assistance to product owners in optimizing the backlog planning for maximum performance.
The Scrum Master's responsibilities include fostering transparency and collaboration throughout the Scrum Team, self-organization, dedication, respect, and, most importantly, conducting empirical research to find the most excellent approach for product development. These are core Scrum values.
Development Team Members
The Development Team is made up of individuals who have duties such as product development. The team performs cross-functional tasks to turn an idea or a need into a real end-user product. One or more dev team members might be responsible for the required skills:
- Product designer,
- Project Manager,
- UX specialist.
Although not all members may be engineers, they may become team members if their talents are needed to reach their goals on schedule. In addition to technical abilities, the team members should have interpersonal skills that would allow them to self-organize and complete the work.
The Development Team should complete work sprints in line with the Product Owner's specifications and directed by the Scrum Master. The Daily Scrum is held regularly to report project development to the peers and the Scrum Master. This activity promotes transparency by allowing the Development Team to incorporate modifications as needed in future sprints based on comments from the stakeholders.
- The end-user of the product,
- Business executives,
- Production support staff,
- External auditors,
- Team members from associated projects and teams.
Why do people choose Agile?
The end-user participation in the project is encouraged, providing visibility and transparency. There's constant planning and feedback throughout the process, which provides value to the company from start to finish. To reduce risks associated with development, many organizations embrace the concept of offering business value early on. The following are some of the critical advantages of Agile project management:
- Agile processes are a learning process that allows teams to grow with each new iteration or draft.
- Agile lets teams deliver a prototype and improve upon it with every Cycle.
- Teams can manage to shift priorities more effectively in a project plan.
- Iterative development allows a fast and flexible process to increase productivity.
- Agile allows for both regular and collaborative troubleshooting.
- Agile's collaborative nature helps to improve project visibility.
- Agile helps teams and individuals to prioritize their work and features effectively.
- Solutions evolve faster since teams can anticipate incoming project changes.
- Teams can make quick-course corrections based on customer feedback.
- Stakeholders and customers can provide feedback as the project evolves—without holding the project up (because the input is part of the process).
- The Agile approach allows teams to get rapid feedback from each version or iteration.
- Empowers project teams to work creatively and effectively.
In other words, the Agile software development approach delivers:
- High Product Quality,
- Higher Customer Satisfaction,
- Increased Project control,
- Reduced Risks,
- Faster ROI.
Agile methods are used in complex software projects as well as small software projects.
What is Scrum?
Scrum is a popular Agile framework for developing, delivering, and maintaining products in a dynamic setting under the umbrella of project management, with an initial focus on software development. It may be used to develop software or other forms of technology. It was developed for small teams of ten or fewer people who needed to break their work into milestones that can be completed within time-boxed iterations, called sprints, no longer than one month and most commonly two weeks. The Scrum team assesses progress in 15-minute daily meetings called daily Scrums (a variant of stand-up meetings). The sprint review and sprint retrospective are two additional meetings that the team conducts after the sprint.
What is Kanban?
In the early 1950s, Toyota employed Kanban. It served as a "suction system," giving a signal when to replenish supplies on the manufacturing line (it was apparent physically based on the number of cards on the board). The concept was inspired by American supermarkets, where consumers could take items off the shelves themselves. There was no shortage of goods as a transparent (physically visible) signal to replenish supplies. In the realm of software development, the concept of Kanban has not changed. It's supposed to show the next phases of a software project and minimize "in progress" work.
David J. Anderson first introduced the Kanban methodology board in his book Kanban: "Successful Evolutionary Change for Your Technology Business."
What is Extreme Programming (XP)?
Xtreme Programming (XP) is a software development method and paradigm that emphasizes the rapid creation of small and medium "high-risk projects," such as those in which it is not fully understood what will be done and how to do it correctly. It is based on conducting an IT project derived from the study of other successful projects. Extreme programming is based on the synergy that arises from combining various techniques with various advantages in and of themselves, but which might be challenging to employ alone. The goal of combining these procedures is to reduce the inconvenience of each one.
Main points are: Iterative, do not design in advance, unit tests, continuous architecture modifications, pair programming, constant contact with the client.
Disadvantages of this approach: No exact specification. Permanent availability of the customer's representative is necessary. Common "ownership" of the code - anyone can change any part of the system.
Lean Software Development
It is an IT adaptation of Toyota's Production System. Like all Lean methods, it is concerned with cost reduction. It has not yet achieved the same level of popularity as Scrum or Agile. Perhaps because Agile, Scrum, and XP already provide a lot of value on their own, they adopt Toyota's Production System in some manner.
Other Agile methodologies:
What is Adaptive Project Framework (APF)?
The Adaptive Project Framework (APF), also known as Adaptive Project Management (APM), can handle unknown factors throughout a project. It prepares groups to deal with the unexpected and react. Consider its fundamental principle to be "learning by doing." Teams that approach projects with the insight that critical components are constantly changing may adopt a flexible attitude and continuously learn as they re-evaluate results and choices throughout the project if they approach it with an open mindset. It's critical to stay in touch with stakeholders at all levels if the team adapts successfully.
Adaptive Software Development (ASD)
Adaptive Software Development (ASD) is a direct offshoot of the earlier Rapid Application Development (RAD). It enables teams to modify their products quickly and effectively as requirements or market demands change by using lightweight planning and continuous learning. The ASD method encourages teams to work in three phases: project, collaborate, learn.
Dynamic Software Development Method (DSDM)
DSDM (formerly known as Dynamic System Development Method) is an Agile technique that focuses on the entire project lifecycle. DSDM (formerly known as Dynamic System Development Method) was created in 1994 after project managers employing RAD (Rapid Application Development) wished improved governance and structure to this new iterative approach. DSDMs' success is partly because every project should be oriented toward clear strategic goals and focus on early delivery of real value. Teams may follow this concept with the eight principles, which assist them in staying focused and meeting project objectives. The eight Principles of DSDM:
- Focus on the business need,
- Deliver on time,
- Never compromise quality,
- Build incrementally from firm foundations,
- Develop iteratively,
- Communicate continuously and clearly,
- Demonstrate control.
Feature Driven Development (FDD)
Not as well-known as many other Agile methodologies, Feature Driven Development (FDD) is a valuable tool. However, when you're working on a vast, lengthy project in an organization where Agile is mainly limited to software development, FDD may be your pal.
The goal of feature-driven development is to bridge the gap between conventional controlled waterfall methods and Agile processes like behavior-driven development, extreme programming, and Scrum.
Behavior Driven Development (BDD)
BDD is a Test-First, Agile Testing methodology that uses Built-In Quality to define (and potentially automate) tests before or as part of defining system behavior. BDD is a collaborative process that aims to create a shared understanding of requirements among the company and the Agile Teams. Its objective is to assist development by aiding flow, decreasing the behavior of a Story, Feature, or Capability from a user's perspective.
Agile methodology is a good way for teams to take control of their product development process. It isn't limited to the software industry anymore; it may be used in any business endeavor that needs a non-linear approach to project planning and customer collaboration, effective collaboration, responsive changes, and high-quality results.
However, if we look at these ideas more closely, they will reveal themselves as nothing more than common sense. What is now known as Agile or Lean was felt somewhere deep inside us:
- Faith and respect for people
- Trust in the team,
- Autonomy and self-organization,
- Continuous learning and improvement,
- Drawing conclusions and adaptive approach,
- Reduce waste and do what's most important.