Skip to content
Adi and Emily

#RemotePairProgramming Ep 014: Adi & Emily – Approval Tests with Lift Kata

About

Emily Bache and I have a remote pair programming session. The focus in working on the Approval Tests with Lift Kata that Emily created. We use Approval Tests to check each step in the progress of the implementation. Fast feedback and continuous communication are a good recipe for a quality pairing session.

Premise

About approval tests with lift kata. The code already has a starting point which is very useful for getting to work fast. There is a printer that can print the lift status in ASCII art format. We start from this minimal start-up and add approval tests in a TDD approach with small steps and incremental thinking. We add production code step by step as we add the tests.

Adi and Emily

Remote pair programming

How to: Remote Pair Programming

Before getting into remote pair programming, let’s see what pair programming is.

Pair programming

Pair programming is when two programmers write code on the same requirements / problem. There are two roles: driver and navigator. The driver has the keyboard and writes the code. The driver focuses on short term implementation. The navigator looks at long term strategic decisions and double checks the driver’s implementation details.

In many cases pair programming is a lot more efficient, the code being clearer, nicer and with fewer defects. Nevertheless pair programming can be tiring, especially when doing it for the first time.

As a rule of thumb, you don’t need to pair the whole day, because it’s tiring, difficult and sometimes inefficient. Choose more complex, difficult or areas less known when doing pair programming.

Remote pair programming

Not everyone is at the office all the time. Sometimes we work from home, or we are in another office. So it’s a good idea to use this useful tool of pair programming also when you are not next to the other programmer. We call that remote pair programming.

Remote Pair Programming
Organizational Evolutionary Design

Organizational Evolutionary Design

What is Organizational Evolutionary Design?

Evolutionary Design is the practice of growing a system in a natural way, by adding the minimum amount of code to satisfy the business needs in an iterative and incremental approach. When done right, the code structure changes continuously to optimize for change, thus allowing a constant speed of development for longer periods of time.

 

In a dynamic world we need to adapt our tools and techniques to be resilient to change. Evolutionary Design is one of these techniques that helps us grow a system well by understanding its current characteristics.

Please see more of my ideas on the topic of Evolutionary Design here. During this article I will explain that there  is an obvious parallel between Software Evolutionary Design and Organizational Evolutionary Design.

 

Organizational Evolutionary Design

Evolutionary Design

What is Evolutionary Design?

What is Evolutionary Design?

Evolutionary Design is the practice of growing a system in a natural way, by adding the minimum amount of code to satisfy the business needs in an iterative and incremental approach. When done right, the code structure changes continuously to optimize for change, thus allowing a constant speed of development for longer periods of time.

 

In a dynamic world we need to adapt our tools and techniques to be resilient to change. Evolutionary Design is one of these techniques that helps us grow a system well by understanding its current characteristics.

What is Evolutionary Design

Legacy Code with Perl

#RemotePairProgramming Ep 009: Adi & Ferdinando – Elastic Pair Programming

About

This is a remote pair programming codecast with Ferdinando Santacroce on the topic of Elastic Pair Programming.

Premise

When you are in a team when people know each other well and they are at the same level, having the role of driver and navigator might not be the best option because the navigator gets bored about the role. In this situation I find both the developers to share keyboard and mice so both can edit the code at anytime, to figure the solution of the problem. So we both can change the code at anytime.