The State of Extreme Programming in the Middle East [2021 Update]
With constant changes happening in IT, project management approaches that the world had gotten used to no longer became feasible. Where the success of a business hinged upon its speed to deliver products to the market, it was required to substantially shorten the software development life cycle. This meant that experts in the field of IT had to unearth better ways to steer the constantly changing development tasks.
In this article, we’ll take a look at the practices of Extreme programming; what it is, how it works in the Middle East, and the Extreme programming examples. So let’s get down into it!
What is Extreme Programming?
Extreme Programming (XP) is a software development methodology intended to improve the quality of software and its responsiveness to accurately adjust and conform to the changing needs of the customer. It is one of the several Agile frameworks applied successfully by IT companies with an emphasis on the technical aspects of software development processes that distinguishes XP practices from the other approaches.
A bit of history…
Kent Beck, an American software engineer, developed extreme programming in the 90s when he was working on the Chrysler Comprehensive Compensation System payroll project. His intention was to find ways of writing high-qualitative software in the shortest time possible and being able to adapt to clients’ changing requirements. In 1999, he wrote a book called Extreme Programming Explained: Embrace Change, where he put some touch-ups on the XP agile methodology. It focused more on adaptability, rather than the old approaches that focused more on predictability.
In his experiment, Kent Beck established five features, or values, that later became the philosophies of XP. These features, if executed correctly, will enhance any software development project. These are:
- Improved communication: Extreme Programmers should constantly communicate with their fellow team members and customers. Communication is the best way for us to work together well.
- Seeking simplicity: Do everything you have been asked to do properly, but no more! We will keep the design simple and clean, creating something that will meet and satisfy the client’s needs.
- Getting feedback on one’s performance: Extreme Programmers deliver the system to the client as early as possible, get feedback and implement the changes as requested.
- Respect: Everyone should give and get the respect they deserve. Programmers respect the needs of the customers and in turn, the customer respects the work of the developers. Everyone who has a role to play in the project, including the management, contributes to a common goal, hence worthy of respect.
- To always proceed with courage: With all the other principles in place, Extreme Programmers can courageously respond to the changing requirements and technology. You will tell nothing but the truth about how the project is progressing. Programmers will evaluate their own results without making any excuses.
Extreme Programming Rules
Basically, there are five rules of the Extreme programming XP methodology for the software development process. This group of practices of extreme programming was created to help conflict the claims that XP Agile development approaches were failing to support some of the important regulations required for modern development. The following rules are set on a foundation of strong values and principles for software engineering sustainability.
This is the first stage where the developers meet the customer and get well-written user stories that describe the required outcome. Release planning then creates the release schedule, resulting in the team making frequent small releases. The project is divided into iterations, and iteration planning starts each iteration.
- Give the team a dedicated open workspace.
- Set a sustainable pace.
- A stand-up meeting starts each day.
- The project velocity is measured.
- Move people around.
- Fix XP when it breaks.
Not including proper designs in the process will make the system more complex and may result in unfinished projects. It becomes crucial to have a design strategy that can arrange the logic in the system to avoid too many dependencies in it.
- Use Class Responsibility Collaboration cards for design sessions.
- Choose a system metaphor.
- Create spike solutions in order to reduce risk.
- Avoid adding functionalities earlier.
- Refactor whenever and wherever possible.
In any Xtreme Program, coding is regarded as the only important product of the XP agile development process. Observe the following processes:
- The customer should be available always.
- Code should be written to agreed standards.
- Unit test to be coded first.
- Only one pair integrates code at a time.
- Integrate as often as possible.
- All production code is pair programmed.
- Set up a dedicated integration computer.
- Use collective ownership.
This is at the center of Extreme Programming.
- All code should have unit tests.
- Every code must pass all unit tests before release.
- Whenever a bug is found, tests are created.
- Acceptance tests are constantly run to determine the score.
This set of expectations or “Rules of Play” narrate each and every principle of Extreme Programming according to the XP Kent Beck philosophy. Once your dedicated team of software developers achieves this, your projects become productive and it becomes easier to meet client’s needs.
Extreme Programming in Practice
Test-Driven Development (TDD)
This is a fairly known principle of Extreme Programming. The addition of any new feature is initiated by writing a test that passes the “if and only if” approach to meet the feature’s specifications. For good feedback, Extreme Programming teams practice test-driven development techniques before the code itself is written. According to this practice, all code must pass the test before it gets released. Because of this, software developers will focus on writing code that is able to attain the specified function. This is how Test-Driven Development allows developers to use immediate feedback to produce software that is reliable.
In Extreme Programming, the client should be always available to participate in the development and answer any questions that the dev team might have, and resolve disputes quickly and amicably in order to obtain the required results.
The Planning Game
This refers to a meeting that takes place at the onset of an iteration cycle. The customer and the development team meet up to talk about the required end product and approve its features. At the end of the planning game, software engineers plan for the pending iteration and release and how it is going to be executed.
It takes 2 to code! Basically, this concept entails that two programmers need to work together on the same code. As one software engineer focuses on writing the code, the other one will review it, find ways of improving it, and fix any mistakes that he might have detected. Not only does this produce high-quality software, it also promotes teamwork and better communication which is one of the founding philosophies of XP.
In software design and computer programming, code refactoring is the process of restructuring computer code, cleaning up and editing, without changing previously written code. This gets rid of redundancy and eliminates needless functions. Code refactoring increases code coherency, keeping your code simple and clean, easily understood by other programmers.
Some Middle East companies that use extreme programming such as Uniweb IT solutions and Global Innovations — Travel Technology Company have implemented XP practices to match the fast-paced changes in the IT environment and develop applications that meet their customers’ needs. Newxel can match you up with the right software development engineers to help you build and maintain a dedicated development team. We are a reliable outstaffing partner that can connect you to the best software engineers in Ukraine that can apply extreme programming example(s) to your specification. Contact us today.