Abstract
Agile methods have emerged due to the vast emphasis on tools and the non-interactive nature of software engineering. Consequently, the agile principles, such as cooperation between stakeholders and sustainable development, paved the way for a large variety of frameworks, including Scrum and Kanban. At present, most IT companies acknowledge the efficiency of the said approaches and utilize them to maximize productivity.
Introduction
Software engineering is a highly complex process of development associated with a wide array of instruments, documentation, project applications, and engineering principles. Therefore, agile practices – a set of guidelines to prioritize individuals and customers rather than tools and contracts – emerged as a response to the problem [1]. As a result, the agile approach focuses on the human nature of project management, emphasizing social interaction between various stakeholders and a healthy workspace environment [1]. These practices increase the overall productivity of the unit and allow for better communication between customers and employees [1]. Ultimately, the current paper examines the underlying principles of agile development and briefly discusses the advantages and applications of the approach.
Literature Review
Agile development first emerged in the 1990s as a method to mitigate the complexity of the industry and emphasize human efforts [2]. There has been a wide array of development frameworks in the IT sector, including waterfall, project management, and agile methods, which encompass even more detailed approaches [3]. For instance, some of the implementations of agile development include Scrum, Kanban, and DevOps [2]. Furthermore, while these approaches are considered the standard of the industry, a large variety of organizations combine various frameworks to create the most appropriate system for the project [2]. Despite the large variety of approaches, all the said agile methods focus on improving the productivity of the processes while emphasizing the cooperation between the team members and customers [4]. As a result, at present, approximately 97% of IT teams utilize agile methods to some extent, which transparently reflects the efficiency of the approach [2].
Agile & Project Management
In general, agile methods are applied to project management; for instance, the mentioned Scrum and Kanban frameworks are frequently perceived as project management approaches [4]. Nevertheless, there are specific differences between the two archetypes, explicitly concerning their perspectives on change and cooperation [1]. Namely, agile development is beneficial for projects that require flexibility and continuous adjustments [1]. In general, there are twelve agile principles, all of which emphasize the adaptable structure of the processes [1]. Furthermore, agile development emphasizes the communication between the customers and employees, which, in turn, results in continuous changes and adjustments to the project [1]. On the other hand, the project management approach can be referred to as a less flexible system, which focuses on objectives and total control of the processes [5]. Contrary to the agile approach, it generally emphasizes the strict order of processes and operations to minimize the possibility of errors and necessary adjustments [5]. As a result, such frameworks can be useful for critical or contingency projects, which require extensive planning with no room for mistakes.
Agile Structure
Most project management frameworks, including agile methods, have comprehensive planning, designing, and testing structure. These stages of development are essential to the productive flow of work and evaluation of the final results [4]. Furthermore, various agile implementations apply different approaches to the said elements; therefore, it is essential to examine the underlying principles of the agile development structure.
Planning
Planning is the initial step of project management and is vital to the success of agile development. The nature of planning significantly varies depending on the approach; however, the underlying principles of the phase include initial exploration, release planning, iterating, tracking, and the estimated results [1]. Ultimately, planning establishes the objectives of the project and determines the flow of the operations; thus, planning is vital to any method of agile development.
Designing
While designing is frequently considered a part of planning, agile development has a different approach to this stage. According to agile principles, designing is a continuous process, which is adjusted and perfected upon every planning iteration [1]. Therefore, agile development perceives designing as a flexible variable and ensures that the project can be easily customized if needed [1]. From these considerations, a poor design is a rigid system, which is needlessly complex and cannot evolve over time [1]. Thus, the primary point of agile designing is the flexibility of the system that can be easily adjusted and complemented.
Testing
Testing is the ultimate step of project management and operations, which ensures the absence of errors and verifies the validity of the undertaken work. As seen from planning and design principles, testing is also a continuous process, which is required upon every iteration of the project [1]. Thus, an agile team verifies the efficacy of each operation, discusses the results, and adjusts the system if needed. Ultimately, planning, designing, and testing are the necessary stages of most agile frameworks.
Agile Methods
Scrum is an agile framework that splits the operation processes into “sprints” each of which is planned on daily meetings [4]. This approach was first implemented in 1995 during the initial stages of agile development and is considered one of the most well-known frameworks today [4]. Scrum emphasizes the flexible usage of sprint planning, cross-functional distribution of labor, necessary adjustments, and ultimate testing of the implemented processes [4]. This operation is repeated upon every planning iteration until the project is completed. Some of the Scrum disadvantages include the relative uncertainty of planning and the needed high qualification of the team [4]. Nevertheless, Scrum has successfully become one of the most popular and effective methods of agile development.
Kanban and DevOps
Kanban is another agile framework, which emphasizes team cooperation and continuous improvement [4]. It was first implemented by Toyota management and was used to eliminate any possibility of overstocking [4]. This concept paved the way for Just-in-Time (JIT) and Lean manufacturing since the teams are able to freely communicate and ensure the efficiency of operations [4]. The underlying principle of Kanban is continuous improvement, which is central to the project in any industry [4]. At present, Kanban is a prominent agile system, which is spread all over the world and used for any type of project management [4]. Consequently, DevOps is a system that connects the development and operation teams in cross-functional collaboration to achieve maximum results [6]. While this approach is slightly less popular than Scrum and Kanban, a large variety of organizations have successfully implemented DevOps to enhance communication among operation units [6]. Ultimately, there is a large variety of contemporary agile methods, which can be utilized for diverse purposes.
Conclusion
Agile development is an efficient methodology of software engineering that paved the way for more comprehensive approaches, such as Scrum and Kanban. At present, most IT companies utilize agile methods to some extent and will most likely become more prominent with the increasing usage of emerging technologies. Ultimately, agile development is an effective framework to maximize the productivity of the team and shift the focus from inflexible non-interactive methods to human cooperation and adaptability.
References
R. C. Martin and M. Martin. Agile Principles, Patterns, and Practices in C#. Boston: Prentice Hall, 2006.
R. Hoda, N. Salleh and J. Grundy. “The Rise and Evolution of Agile Software Development.” IEEE Software, vol. 35, pp. 58-63, 2019.
A. M. Dima and M. A. Maassen. “From Waterfall to Agile Software: Development Models in the IT Sector, 2006 to 2018. Impacts on Company Management.” Journal of International Studies, vol. 11, pp. 315-326, 2018.
W. Zayat and O. Senvar. “Framework Study for Agile Software Development via Scrum and Kanban.” International Journal of Innovation and Technology Management, vol. 17, pp. 1-24, 2020.
J. R. Cristobal, L. Carral, E. Diaz, J. A. Fraguela and G. Iglesias. “Complexity and Project Management: Challenges, Opportunities, and Future Research.” Complexity, vol. 2018, pp. 1-10, 2018.
A. Hemon, B. Lyonnet, F. Rowe and B. Fitzgerald. “From Agile to DevOps: Smart Skills and Collaborations.” Information Systems Frontiers, vol. 22, pp. 927-945, 2020.