Agile Part 3 - Extreme programming (XP)
Extreme programming (XP) is a software development methodology that is intended to improve software quality and responsiveness to changing customer requirements. XP is the most specific of the agile frameworks regarding appropriate engineering practices for software development. XP is built upon values, principles, and practices, and its goal is to allow small to mid-sized teams to produce high-quality software besides adapting to evolving and changing requirements. XP emphasizes the technical aspects of software development.
?XP originated in the 90s by Kent Beck, who later became one of the authors of the Agile Manifesto. In 1999, Kent Beck formalized the practices, principles, and values of XP in his book “Extreme Programming Explained: Embrace Change.”
?XP Values
?Values provide purpose to teams. They act as a guide for your decisions in a high-level way. However, values are abstract and too fuzzy for specific guidance. The XP values are communication, simplicity, feedback, courage, and respect. Let’s look at each one of them in more detail:
?·??????Communication: Building software systems requires communication between the developers of the system. The goal is to give all developers a shared view of the system which matches the view held by the users of the system. To meet this, Extreme Programming favours simple designs, common metaphors, the collaboration of users and programmers, frequent verbal communication, and feedback.
·??????Simplicity: Extreme Programming encourages starting with the simplest solution. Extra functionality can then be added later. Simplicity in design and coding should improve the quality of communication. A simple design with very simple code could be easily understood by most programmers in the team.
·??????Feedback: Feedback is closely related to communication and simplicity. XP teams strive to receive early and constant feedback. Feedback comes in many shapes and sizes. Few examples of feedback - In pair programming, the comments of the peer are vital feedback. Test results are another source of precious feedback. Finished code is also a form of feedback.
·??????Courage: Several practices embody courage. One is the commandment to always design and code for today and not for tomorrow. Courage enables developers to feel comfortable with refactoring their code when necessary. Courage to remove source code that is obsolete, no matter how much effort was used to create that source code. Also, courage means persistence.
·??????Respect: The respect value includes respect for others as well as self-respect. Nobody on the team should feel unappreciated or ignored. This ensures a high level of motivation and encourages loyalty toward the team and toward the goal of the project.
?Practices as suggested by XP
?Practices are concrete, defining the specifics of what to do. Practices help teams hold themselves accountable to the values. Let’s have a look at the 12 practices of XP:?
?The Planning Game
?The main planning process within Extreme Programming is called the Planning Game. The planning process is divided into two parts:
Small Releases
?The small releases help the customer to gain confidence in the progress of the project. This helps maintain the concept of the whole team, as the customer can now come up with his suggestions on the project based on real experience.
?System Metaphor
?The system metaphor is a story that everyone - customers, programmers, and managers - can tell about how the system works. It's a naming concept for classes and methods that should make it easy for a team member to guess the functionality of a particular class/method, from its name only.
?Simple Design
?Programmers should take a "simple is best" approach to software designing. Whenever a new piece of code is written, the programmer should ask themselves 'is there a simpler way to introduce the same functionality?'. If yes, then a simpler course should be chosen. Refactoring should also be used to make complex code simpler.
?Test-Driven Development
?Test-driven development (TDD) is a software development process relying on software requirements being converted to test cases, before the software is fully developed, and tracking all software developments by repeatedly testing the software against all test cases. In this approach, test cases are created first and software is developed later. The following sequence is based on the book Test-Driven Development by Example:
领英推荐
?Refactoring
?Code refactoring is the process of restructuring existing computer code without changing its external behaviour. Refactoring is intended to improve the design, structure, and non-functional attributes of the code while preserving its functionality. Potential advantages of refactoring may include improved code readability and reduced complexity. These can improve the source code's maintainability and create a simpler, cleaner, enhanced code. Another potential goal for refactoring is improved performance.
?Pair Programming
?Pair programming is an agile software development technique in which two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in. The two programmers switch roles frequently. The pairs are not fixed; programmers switch partners frequently so that everyone knows what everyone is doing, and everybody remains familiar with the whole system, even the parts outside their skill set. This way, pair programming can also enhance team-wide communication. Pair programming is particularly effective in producing code with fewer defects while also being engaging, fun, and tiring.
?An extension of Pair Programming is Mob Programming. In this software development approach, the whole team works at the same time, on the same thing, at the same computer, and in the same space.?
?Collective Code Ownership
?Collective code ownership means that everyone is responsible for all the code, therefore, everybody can change any part of the code. Collective code ownership may accelerate development because a developer who spots an error can fix it immediately, which can reduce bugs overall. Collective code ownership may lead to better member backup, greater distribution of knowledge and learning, shared responsibility of the code, greater code quality, and reduced rework.
?Continuous Integration
?In software engineering, Continuous Integration (CI) is the practice of merging all developers' working copies to shared mainline several times a day. Continuous integration is intended to produce benefits such as integration bugs are detected early and are easy to track down due to small changesets. It helps to avoid last-minute chaos at release dates. Constant availability of a "current" build for testing, demo, or release purposes.
?40-Hour Week
?The concept is that programmers or software developers should not work more than 40 hours a week for development at a sustainable pace. It is also true that people perform best and most creatively if they are well-rested. Well-tested, continuously integrated, frequently deployed code and environments also minimize the frequency of unexpected production problems and outages.
?Single Code Base
?The single codebase is also known as “trunk-based development.” It means that there is only one single source of truth. So, rather than developing in isolation for long periods of time, you merge your contributions to the single-stream early and frequently. Feature flags help to keep feature use restricted while they’re not complete.
?Coding Standards
?Coding Standards are a set of guidelines for a specific programming language that recommend programming style, practices, and methods for each aspect of a program written in that language. These are guidelines for software structural quality. Software programmers are highly recommended to follow these guidelines to help improve the readability of their source code and make software maintenance easier. The coding standard may be a standard convention specified by the language vendor. Extreme Programming backers advocate code that is self-documenting to the furthest degree possible.
?Extreme Programming (XP) is an agile software development framework that aims to produce higher-quality software. XP is the most specific of the agile frameworks regarding appropriate engineering practices for software development. Extreme Programming not only helps in changing and evolving with the changing technology trends but also helps small or mid-size teams to outperform their potential and attain a greater position in the industry.
----------------------------------------------------------------------------------
Start your project management journey today! If you wish to learn more about Agile concepts and are looking for training on Agile Project Management Certification program (PMP, PMI-ACP, PSM I), reach out to me on the given contact:
Mobile - +91 9891819681
WhatsApp - https://wa.me/919891819681
Email - [email protected]
#PMP #PMIACP #PSM #Agile #projectmanagement #certification