Engineering Practices

XP: Engineering Practices

Extreme Programming (XP) has listed a few engineering practices that helps the team to develop high quality product, focus on simplicity, reduce risks, better designs & deliver early and incrementally. Even though these practices were originally practiced in XP, over time these practices are being found used in many frameworks. In the recent trend teams developing products with Scrum framework are using extensively & find it tremendously useful to achieve their goals. 

Some of the well-known engineering practices are listed below.  

Pair Programming

Pair Programming mimics driver & co-driver in car race. The primary objective is to basically have 2 brains at work simultaneously. 

In this technique, all the software of the project will be developed by two people, who work together sharing a common machine. The code developed is effectively designed & reviewed continuously. 

When this engineering practice is used by the team members, 

  • The quality of the product.
  • Fix issues faster
  • Focused on single work item
  • Work gets done faster with 2 brains & 4 hands
 

Pair Programming is not popular in service oriented organizations, as most feel the result of two people’s effort doesn’t justify their billing to customers, unfortunately.  

Pair Programming

Driver writes the code and navigator reviews and navigates driver while coding, after sometime the roles are exchanged. 

Code refractoring gives best results when done on small increments of code and continuously than on large complex code chunks. 

Code Refractoring

Code Refactoring is a technique that focus on improving the code such that the existing functionality is achieved with simple design, during this process we don’t create new functionality nor change the existing functionality. 

When this engineering practice is used by the team members benefits are,

  • Improves the design of existing code
  • Improves maintainability of the code
  • Extensibility of code
  • Reduces technical debt
 
While code refractoring is important and everyone agrees to it, usually team members due to delivery pressure, tend to ignore refractoring and create technical debt.  

Continuous Integration

With Continuous Integration technique, team members integrate the newly developed code to the previously tested code base as soon as the coding is complete and immediately. This quickly gives opportunity to run integration tests and fix any issues that arise. Integrate code continuously, as early as possible, as many time as required. 

When this engineering practice is used by the team members benefits are, 

  • Integration issues are found early. 
  • automated tests can run continuously & quickly on the new changes
  • Everyone works on the latest code base
 
Unfortunately some of the team members don’t prefer to continuously integrate their code to common branch as it could break due to someone else’s design issues. Due to the delivery pressure again they differ integration to last minute and get lots of integration issues before release. 
Continous Integration Engineering Practices

All team members should continuously integrate their new code to a common branch that runs automated functional & integration tests.

Test Driven Development - Engineering Practices

Test Driven Development helps the team to focus on quality over quantity. Quality thinking starts before writing a line of code.

Test Driven Development

Test Driven Development (TDD) sometimes is also referred as Test First Development, as the name suggests, this is a technique where the tests for the requirement is written first and then just sufficient code is developed to pass the test, as the test pass, code refactoring is performed and the next requirement is picked up to continue the loop.  

When this engineering practice is used by the team members benefits are,

  • Simple & just sufficient design
  • Achieve high quality product
  • Identify issues and bugs early and quickly
  • Focus on customer requirements / functionality
 
Unfortunately tests suits are not automated or partially used by team members,  they think code developers shouldn’t write tests & the designs don’t emerge if test driven development is followed.

Collective Code Ownership

Collective Code Ownership is a strategy that basically removes the individual ownership on any piece of code developed and invites everyone to own and have rights to edit the code as necessary.

When this engineering practice is used by the team members benefits are,

  • Everyone is accountable for the delivery & quality
  • Reduces the delay in fixing issues due to bureaucracy
  • Develops sense of common goal. 
 
Due to the team structures, roles/responsibilities, and evaluation strategies employed by organizations results in associating individual’s identity with their work. Team members & leaders are scared of the situations when something goes wrong and no one takes the accountability. This results in team member’s behavior that’s far from collective code ownership. 
Engineering Practices Collective Code Ownership

Collective Code Ownership strategy when employed would result in best products, high quality & outcome that is more goal focused. 

Learn more from our certification & training programs

For any inquiries contact

Email : contact@12principles.in
Mobile : +91 9980 505 003, +91 9945 381 381

Author:  Naveen Nanjundappa, Certified Scrum Trainer

12 Principles Consulting Naveen NanjundappaWell known for his unique teaching style, Mr. Naveen Nanjundappa has over 19 years of service in IT industry, with experience in most of the standard roles of software development life cycle such as developer, tester, leader, manager of projects and products. He was introduced to XP & Scrum in 2005. Following his passion for coaching, he has spent last 8 years coaching agile transformation, Scrum teams, trained over 4000+ people from various organizations. Expertise in Scrum, Leadership Agility, Organizational Agility, Process Agility, Team Agility, Product Management & Project Management.

CSM / CSPO certification by Naveen Nanjundappa is Transformational, with lot of examples from real life and Indian working culture. Participants will feel empowered, focused and knowledgeable to handle situations at work & most importantly you transformed not just certified!  

Know more about Naveen Nanjundappa