Blog Agile and Scrum What is Extreme Programming in Agile Software Development?

What is Extreme Programming in Agile Software Development?

The agile software development is an umbrella containing a set of methods and ways to achieve the principles mentioned under the Agile Manifesto. All these methodologies abide by the principles of frequent collaboration between the teams, frequent delivery to the client, self-motivation etc. The methodologies currently being followed are

  • Extreme programming(XP)
  • Dynamic System development method(DSDM)
  • Scrum
  • Agile modelling
  • Agile unified Process
  • Agile Data method
  • Essential Unified Process(Ess UP)
  • Feature Driven Development
  • Open Unified Process(Open UP)
  • Lean Software Development
  • Crystal Methods.

Selecting what methodology to use depends on what the project is. There should be a proper thought process on how to put the agile principles into practice. It requires lot of training, self-discipline and a good understanding of the kind of project one would be working on. We need to know the drawbacks of using the traditional way of development and how agile can ease the rigid rules and disciplines of the traditional way and make way for more adaptive and iterative mode.  For that we need to know the strengths and challenges of each methodology in the agile software development and use the right one.

Extreme Programming (XP):

The project with dynamic requirements and high risk finds more success with Extreme programming than any other development methodologies.  If the project domain allows the team to create automated test scripts and functional tests and have a team of developers, business people and the managers working elbow to elbow, then extreme programming is the way to go.

Extreme programming work with 4 core values which are communication, simplicity, feedback and courage.  The close interaction is expected across onsite customers, production manager, domain experts, technical specialists, developers, tester etc.

The 12 principles Extreme programming practices are:

  • Planning game
  • Small releases
  • Metaphor
  • Simple design
  • Test driven development
  • Refactoring
  • Pair programming
  • Continuous integration
  • Collective code ownership
  • customer
  • Coding standards
  • 40-hour work week (maintaining pace)

The requirements are immediately coded and tested against the customer test cases. The project begins with segregating the requirements by having user stories and the requirements are released as small releases. The test cases are written before coding. The design is kept simple to reduce any complexity and a pair programming is implemented to achieve more productivity, good quality. Code refactoring is mandatory to clean up the code with unwanted features etc.

The code is not owned by a single person. Anybody can change the code and the code is collectively owned by the entire team. The team needs to maintain the steady pace so that there are enough buffers for refreshing oneself.   As the code is collectively owned by the team, coding standards have to be followed so that it is easy for an individual to change the code.  Continuous integration makes sure that the team is working on the correct code all the time.

Testing early is the key in Extreme programming. Coding is said to be completed when it passes all the automated and functional test cases.  This approach is widely known as test driven development.

Extreme programming comes with its own set of hurdles as the pair programming may not always work as we do not always get developers who can work in that kind of environment.  Some rework or redesign might stress out the team when simple design might not work for few requirements and the design may change drastically.

 

 

About Sparsh Goyal

A passionate IT professional, Sparsh Goyal boasts of 4.3+ years of experience. He has worked for various projects under AWS, Google Cloud Platform, Spring Boot, Python, Microservices, RESTful, RESTFUL APIs/SOAP, Scripting, Shell and JAVA. He is also working towards gaining proficiency in Oracle Cloud PaaS, DevOps, SaaS and Docker/Kubernetes. His primary and secondary skills validate his relentless pursuits of expanding his horizon and developing more as an IT person. He boasts of the following certifications: *Google Professional Cloud Security Engineer. *AWS Cloud Solutions Architect Associate. *Oracle certified JAVA programmer.

LEAVE A REPLY

Please enter your comment!
Please enter your name here