Tag: Agile Software Development

Pair Programming in AD&S

Pair programmers

(Not actually Peter and Barry)

Next week, Peter and Barry will be trying out pair programming on a small project. Pair programming is a software engineering technique from Extreme Programming (XP) (an agile framework). There is a lot of confusion in the field about what it means: it’s much more than simply sitting next to each other with one person watching the other person type. Pair programming is actually very structured. The developers share one computer. One person (the driver) with the keyboard writes the tests and codes, and the other developer (the navigator) double-checks the coding, confirms that the pair is proceeding in the best direction, and makes suggestions. The developers are continually thinking aloud: if it’s quiet, something is wrong. Navigators and drivers switch relatively often so that one person is not hogging the keyboard.

Some developers HATE pair programming; other developers swear by it. I have observed an exceptionally productive pair in action. I have also paired successfully as a database developer on the conversion from Marx to SIS. However, I have also seen pairs fail to make it work for a multitude of reasons. It seems that when personalities and skill sets mesh well, two developers pairing can accomplish much more than two developers working independently (research supports this).

Pair programming is a social skill that takes time to learn. You are striving for a cooperative way to work that includes give and take from both partners regardless of corporate status. The best pair programmers know when to say “let’s try your idea first.”

Extreme Programming: A gentle introduction

True collaboration, with honesty, trust, and respectful debate, is required.

Resources

Minimally Marketable Feature (MMF)

MMF: Minimally Marketable Feature is a term associated with Lean Software Development (based on Lean Manufacturing/Toyota Production System). In agile software development, our goal is to deliver business value as quickly as possible. That means we tend to avoid monolithic “big bang” launches of full-featured products. We like to think in terms of smaller sets of features that can be released earlier and more often to get our work in the hands of our end users. Why should our end users wait a year to get 100 features when we could deliver a group of 10 workable features in two weeks that would make their jobs easier?

DeliveringBusinessValue


from The Art of Agile Development

What is an MMF?

“The smallest set of functionality that must be realized in order for the customer to perceive value.”

agilebok.org

A chunk of functionality that delivers a subset of the customer’s requirements, and that is capable of returning value to the customer when released as an independent entity.

Software by Numbers

So we are identifying logical groupings of functionality that represent a valuable contribution to the business. I find thinking in terms of MMFs helps guide release planning, particularly around identifying dependencies. MMFs help us remain customer-focused.