#science #cornet Science News Prime 1.5: Science News Prime is the tabletformat alter ego of Science News. Found... http://t.co/pHGiG9qr
13 minutes ago by astrologien on twitterZDNet is available in the following editions:
Pair programming is one of the most contentious practices within Extreme Programming. Does it really work?
Laurie Williams describes pair programming as “a style of programming in which two programmers work side-by-side at one computer, continually collaborating on the same design, algorithm, code or test”. From this description it should be clear that pair programming is about more than simply the typing of the program itself, and I personally think that “pair development” would be a much better description of the activity.
Pair programming is not about one person simply watching what another person is doing– in effective pairing, the partners are often working at different levels of abstraction, one person concerned with the nitty gritty details of writing code to support the immediate goal, the other thinking of the big picture and of what to do next, and the partners are switching between these roles frequently. It’s an intense, rigorous and often tiring activity, that creates considered, high quality code.
The emotion quotient
Most of the emotion associated with opposition to pair programming arises because pair programming challenges the common social conventions of software development.
The traditional view of programming is that it consists of long periods of time spent in isolation, during which the programmer enters a “flow” and only interacts with the computer and their own mental models. As a result, programming has tended to be more appealing to introverts who liked to minimise social interactions, and less appealing to extroverts who wanted to collaborate minute-to-minute.
Certainly these are generalisations, but it’s important to acknowledge that there are programmers who simply don’t want to work side-by-side with someone else, and whose job satisfaction will certainly be affected by something like pair programming.
Opposition to pair programming also takes less emotional expression, generally framed around the idea that having two people working at one machine must inherently take twice as long as having them working independently and then merging their work.
This would certainly be true if the limiting factor in software development was how fast we could type programs, but as Kent Beck has observed, if this was the case we’d give every programmer a copy of Mavis Beacon (touching typing tutoring software).
I can’t touch type myself, and I’ve never asked someone their typing speed in an interview, so it’s doubtful this is our primary constraint. Rather, software development is an intellectual activity, which benefits from clarity of expression and the collaborative development of ideas, and pair programming helps in both these areas.
Another misconception is that the success pair programming should be measured solely in terms of the quantity of software that’s produced. When two people partner there are at least three outcomes:
The proportions of these change depending on the balance and dynamics of the pair, but all three are usually present to some extent. When an experienced programmer pairs with a novice, the pair may not produce any more software than the experienced programmer might have produced alone, but the novice will certainly have learned a great deal about the application and about programming in general.
The sum of two
Compare this to leaving the two to work independently – we might get more software (though we might want to be very cautious about the quality of the novice’s work), but we get very little knowledge or skill transfer. If we have these two people on the same team, pairing seems to be a preferable way to spend their time.
On the other hand, two experienced people might find that there’s little skill transfer involved in their pairing, but that having them working at different levels of abstraction on the same problem lets them produce a solution faster, with fewer defects.
Another objective of pair programming is to spread knowledge of the application design and implementation as widely as possible.
This is achieved by rotating pairing, so that everyone on the team pairs with everyone else over time, and any particular part of the application is worked on by as many people as possible. In this environment, bad code doesn’t live very long because it’s exposed to many sets of eyes (which is similar to one of the principles behind open source development), and when design sessions come around the team benefits from everyone’s contributions, without needing to rely on just the one person that’s familiar with some particular part of the application.
There are also a number of other benefits to pair programming:
The last two points in this list are particularly true when pairs are rotating regularly. Of course, there are plenty of ways to do something that looks like pair programming but that fails to achieve, or subverts, these benefits.
If you don’t rotate pairs then you get programming cliques, and minimise knowledge and skill transfer. Some companies use pair programming as an excuse to eliminate personal space (we only need one desk and computer for every two programmers, right?), which ignores the human needs of programmers.
Expecting programmers to pair eight hours a day is also unrealistic – the continual interaction of pairing forces precision and clarity, but is also tiring, and there are always non development tasks to do as well.
Empirical evidence tells us that pair programming is an effective technique for improving software quality and lowering development time, but it’s not suitable for every programmer, and it needs to be implemented in a considered manner to be effective.
Steve Hayes is the Software Development Manager at Internet Business Systems (IBS). IBS provides agile methods consulting and development services, and browser hosted solutions to the financial services industry.
#science #cornet Science News Prime 1.5: Science News Prime is the tabletformat alter ego of Science News. Found... http://t.co/pHGiG9qr
13 minutes ago by astrologien on twitteriOSHA CFR 1910.26.28 & 60 e-Reference for iPad 3.0 http://t.co/uql2wGx8
28 minutes ago by Mobile_Insiders on twitterThe Royal Wedding by NBC News for iPhone 1.2.1: The Royal Wedding app for iPhone by NBC News: This one-... http://t.co/yAMEcCRg #wedding
28 minutes ago by WeddingInIsrael on twitteriOSHA 1926 e-Reference for iPad 3.0 http://t.co/eUP7bRjt
43 minutes ago by Mobile_Insiders on twitterMicrobloggers in Beijing must authenticate real names before 16th March or will have their access limited to browsing. http://t.co/tB30exzy
2 hours ago by bszcz on twitterRT @BeyondTrust: Breached security vendors' response should focus on customers http://t.co/PxDjTjEJ #infosec #databreach #security
4 hours ago by waterstyle1212 on twitterJudge: Chinese engineer didn't spy on US: By Ellyne Phneah , ZDNet Asia on February 9, 2012 (11 hours ago) US ju... http://t.co/7Cw5G6Be
4 hours ago by danxovan on twitterNew standards make using carrier Wi-Fi super easy: ... ago) A set of new standards being developed will soon mak... http://t.co/Xvnumaxx
5 hours ago by sharliethomas on twitterFirst 'biological computer' created, can read DNA. http://t.co/7dny07vS
6 hours ago by PCDoctor_Kam on twitterAmazon breaks into India online retail market http://t.co/MUR5i5NU
6 hours ago by ecommerce_asie on twitterSingapour : 95% des foyers et societes seront equipés en fibre optique mi-2012 http://t.co/zPLb1erU
6 hours ago by HostingInAsia on twitterRT @HostingInAsia: Singapour : 95% des foyers et societes seront equipés en fibre optique mi-2012 http://t.co/zPLb1erU
6 hours ago by ecommerce_asie on twitterGr8 article via @ZDNet on user's role in securing their videoconferencing estates: http://t.co/0KuypBEN
6 hours ago by Teliris on twitterNice research and pardon If there are some major issues which make cloud security trembling & risky.. 1. Abuse and Nefarious Use of Clo...
13 hours ago by evabrian on Cloud, mobility to drive security marketNice research and pardon If there are some major issues which make cloud security trembling & risky.. 1. Abuse and Nefarious Use of Clo...
13 hours ago by evabrian on Cloud to drive industry, security concerns remainTechnology Innovation, Strategy & Integration for CIOs and IT professionals in Asia Pacific
The 3rd BankTech Executive Summit 2012
Feb 9 Hong Kong & Feb 15 Singapore. The Future Vision of Banking & Financial Services.
Asian Financial Services Congress 2012 - The 2012 Agenda: Solutions for Disruptive Times
23 - 24 Feb, Marina Bay Sands (SG). Register today!
Mobile Marketing in Indonesia Conference
23-24 Feb 2, Jakarta. For more information, visit www.conferences.com.sg/conf-mmi.htm
ZDNet Asia Intelligent Singapore video series
Featuring inteviews with CXOs who define "intelligence" in their markets and reveal how their companies drive business efficiencies through ICT.