Home Featured Work How We Work About Us Services
Home › SI Blogs › Joe's Blog › Extreme Programming

Extreme Programming


by Joe Friedman on March 13, 2009

Extreme Programming, otherwise known as XP, is a method of software engineering used in Agile software development. Here are some of the most popular practices of XP

Continuous Integration

Continuous Integration is the practice of integrating code early and often. The main objective is to eliminate time-consuming rework thereby reducing the cost and time of a project. If executed properly, continuous integration has been shown to drastically reduce the costs of a project while adhering to project timetables.

Pair Programming

Pair programming is a development technique in which two programmers work together at one keyboard. One types code (known as the driver), while the other reviews each line of code as it’s typed in (the navigator). The two switch roles frequently throughout the development of the project. This practice certainly gives credit to the old adage that “two heads are better than one”. There are several obvious benefits to this style of programming:

Quality of design-Two programmers will typically consider more design alternatives than a solo programmer. Teams of two will arrive at simpler, more-manageable designs and will catch design defects earlier on.

Problem Solving-Paired programmers can easily find quick solutions to seemingly insurmountable problems while working together.

Cost Reduction-Since defects found late in the development process are costly and largely unavoidable, Pair Programming is instrumental in catching bugs early on, thereby vastly reducing the cost and time of the project.

Increased Productivity-In Pair Programming, team members are less likely to skip out on pertinent tasks, check emails, chat online, or engage in any other activity that detracts from their productivity. The pair partner serves to keep their team member focused on the task at hand.

Improved Learning & Training: Knowledge is passed effortlessly between paired programmers. Pairs share tacit information about the specifics of a system and they learn new programming techniques from each other while they develop.

Morale-Paired Programmers experience greater joy in their work and report greater confidence that their work is correct by working in teams.

Egos, a preference for working alone, and less than desirable personal habits might stand in the way of a successful implementation of Pair Programming. Nonetheless, the benefits of pair programming to a project significantly outweigh these drawbacks and should be seriously considered in any Agile Project.

Test Driven Development (TDD)

(TDD) is the practice of using short iterations of development based on pre-written test cases. These test cases define desired improvements or new functions of the system. Each iteration produces code necessary to pass that iteration’s tests. A programmer refactors the code to accommodate any changes. Preparing tests before coding facilitates rapid feedback changes in TDD.

Behavior Driven Development (BDD)

BDD is a development technique that encourages collaboration between developers, stakeholders, and any other individuals related to a project. The focus of BDD is to lower the language barrier between team members and non-technical members of a project. The quality and effectiveness of the interactions during the development process is paramount in BDD. Behavior-driven developers use their native language in combination with a vernacular of business terms to describe the purpose and benefit of their code. This allows the developers to focus on why the code should be created, rather than the technical details behind its development. BDD minimizes the need for the translation of technical language to non-technical stakeholders and management.



Back to top

Home › SI Blogs › Joe's Blog › Extreme Programming