Stephen Freeman Rotating Header Image

IT industry

Doing pair programming tests right

In her rant on the state of the industry, Liz Keogh mentioned coding in the interview, which triggered several comments and a post from Rob Bowley, who reminded us of Ivan Moore’s excellent post. I think actually typing on a computer is essential which is why I’ve been doing it for ten years (enough with whiteboard coding), but I’ve also seen examples of cargo cult code interviews where the team didn’t quite get the point:

It’s a senior responsibility
Pair programming tests should be conducted by senior developers. First, this shows that the team thinks that actual coding is important enough that senior people have to get involved, it’s not just something they delegate. Second, now matter how smart, juniors will not have seen many different approaches, so they’re more likely to dismiss alternatives (technical and human) as bad style. They just don’t have the history. There are times when a tight group of young guns is just what you need, but not always.
Do it together
Be present for the work. Don’t just send the candidate off and tell them to submit a solution, the discussion is what’s important. Otherwise, it turns into a measure of how well someone can read a specification. It also suggests that you think that your time is too valuable to actually work with a candidate, which is not attractive. And, please, don’t play the “intentionally vague” specification game, which translates to “Can you guess what I’m thinking?” (unless you’re interviewing Derren Brown)

Be ready
Have your exercise ready. Your candidate has probably taken a day off work, so the least you can do is not waste their time (and, by implication, yours). Picking the next item off the backlog is fine, as long as it doesn’t turn out to be a configuration bug or to have already been fixed. One alternative is a canned example, which has the benefit of being consistent across candidates. An example that is too simple, however, is a good primary filter but limits what you can learn about the candidate, such as larger-scale design skills.
Have a proper setup
Your netbook is cute, portable, and looks great. That doesn’t make it suitable for pairing, not least because some candidates might have visibility issues and the keyboard will have keys in the wrong places. Use a proper workstation with a good monitor so you can both see, and talk about, the code
Allow enough time
Sometimes things take a while to settle. People need to relax in and you need time to get over your initial flash response to the candidate. Most of us do not need developers who can perform well under stress. I’ve seen great candidates that only opened up after 30 minutes. You also need to work on an example that’s interesting enough to have alternatives, which takes time. If you’re worried about wasting effort on obvious misfits, then stage the exercise so you can break early. You’re going to work with a successful candidate for some time, so it’s not worth skimping.
Give something back
This is something that Ivan mentioned. No matter how unsuitable, your candidate spent time and possibly money to come to see you, and deserves more than a cup of tea. Try to show them something new as a return. If you can’t do that then either you don’t know enough to be interviewing (remember, it should be a senior) or you messed up the selection criteria which means you’re not ready.

What kind of hole have we dug ourselves into?

Update: Nice follow-up from “TestObsessed”, you can get your free certification from her. As she suggests out, I’d rather be a sucker for an elaborate joke than have this be true.


There is now, apparently, a “World Agile Qualifications Board” offering Agile certification programs (I won’t link to it directly, but it’s at waqb (dot) org). The site looks professional, but there’s not a single name or organisation on it, so there’s no pedigree—but people can apply to join the review board.

Assuming that this is more about an excess of ambition, rather than a direct scam, what does this say about the state of both our industry and the Agile movement that some mysterious person thinks that this is a good idea? Enough people have been seduced by the idea of certification, that someone is prepared to try their luck with a big-sounding title. With enough Google keywords, it might even pay off.

I’d love to be corrected, but I don’t believe this is what we’ve struggling to achieve all these years.

We're not craftspeople yet.

Software Craftsmanship 2009

In the run up to Software Craftsmanship 2009 it’s worth reminding ourselves how far we have to go. Recently the (London) Times put the dire state of UK government IT projects on its front page.

One bright correspondent suggested:

Why not use university computer science departments for large public sector IT projects? They could form part of the course work and would be far cheaper as there would be no culture of profit to worry about.

I can just hear the other disciplines jumping on this bandwagon: “it was costing too much to do the stress calculations for our nuclear power station, so we assigned them as coursework”, “we can’t afford these QC’s, so we got some students to handle the negligence case”, and “accountants are expensive so we had some students work out the portfolio risk” (no, wait, that last one might make sense).

Anyway, as long as anyone is not too embarrassed to put this sort of nonsense in print, we don’t have a profession.

Some Things l Need to Know about Programming I Learned In Music College

In a previous life I took a music degree in Bass Trombone, which is a discipline that’s even more geeky and with a worse gender balance than Software (see this meeting if you don’t believe that’s possible). Over the course of the degree, I raised my bar from Enthusiastic to Not-too-embarrasing-to-appear-in-public. In the spirit of this famous article on Pair Programming, here are a few things I learned there that (if I squint) seem to apply to software.

Quality follows a power law Every time I practiced and got to play with better ensembles, the next level up was an order of magnitude improvement, not just linear. I could imagine being as good as the players one level above me, but two levels was a huge jump. The standard of serious professionals nowadays is just astonishing. As an example, one of our ensembles worked on an Edgar Varèse (obscure but influential modernist composer) piece. For the première in the 1920s, Varèse complained bitterly that he only had 100 rehearsals, we did it in about 10 rehearsals, our conductor performed it with a group of freelancers after working on it for an afternoon.

Quality is fractal To put it another way, good performances requires attention to detail at all levels: from the conductor’s management of the overall structure, to players’ phrasing of their individual lines. The better the ensemble, the more levels just work. It was quite a shift for me when I started joining groups that played in tune, a whole area of insecurity just disappeared and I could now use the effort I’d spent on compensating for inaccurate tuning for something more important.

Play for the audience They’ve paid to hear you. They don’t want to hear your technique, they want to hear music. One of my teachers liked to point out that anyone can make great music work, but good players can make bad music sound better. At the other end of the scale, I once heard a scaled-down version of The Rite of Spring where the Bass Trombonist dominated the orchestra; as a practitioner, I was impressed but it was ugly and self-indulgent.

Don’t take it up unless you mean it The perfoming arts are tremendously rewarding if that’s what you want do. If not, it’s a hard trade involving lots of stress and effort—and there’s a limit to how long you can stand discussing mouthpiece diameters. I met several older professionals who hated the business but had nowhere else to go, and the story goes that one of the trombonists in Toscanini’s NBC orchestra wrapped his instrument around his music stand at the end of his last day before retirement.

The section takes the blame (and credit) together Brass playing, particularly at the low frequency end, is a collaborative activity. You spend much of your time playing chords, so no-one can tell that you’re better than the rest of the section. Your best hope is to try to raise everyone’s standard. When it works, it’s just fantastic.

Some people’s abilities are just obvious I met a few players who were clearly here on Earth to play their instrument, that’s just who they were. These are the kind of people who get top-rank jobs before they’ve finished college. Our Head of Brass had been a child virtuoso, he didn’t understand why people played wrong notes. Why would they want to do that? At the other end, there were some who should have had their instruments confiscated.

Sometimes people take a while to shine Other players are not so obvious. I was lucky enough to meet Ed Anderson (Cleveland Orchestra) who was one of the best. He told me that at college, he’d played in the opera orchestra because he didn’t get enough sessions with the (higher prestige) concert orchestra.

Reality, deal with it In a performing discipline there is nowhere to hide, everyone knows how good you are all the time. I had a bit of a crisis in my second year when a new Tuba student took the time to point out my shortcomings; the message wasn’t pleasant to hear but it worked, I was much better by the end of the year. Later a one-off lesson with Arnold Jacobs, who spent a lifetime researching the mechanics of wind playing, changed my playing life because he could show me what was happening to my breathing and how it needed fixing.

How do you get to Carnegie Hall? Practice! It turns out that this topic has just come up on Tim O”Reilly’s blog.

What’s the dynamic range of a bass trombone? On or off

Never was my favourite metaphor…

Copied wholesale from D-Squared

In business circles, particularly among a certain kind of aggressive American businessman (or consultant, or banker, or politician, they’re fairly interchangeable), there is a favourite proverb about a pig:

“When you have bacon and eggs for breakfast, you’ve got your breakfast from a chicken and a pig. The difference between them is that the chicken is ‘involved’ but the pig is committed

which is of course, true. It should also be noted, however, that when you go out to get your next few breakfasts over the course of the rest of the month, the chicken will have laid another egg every day, but the pig will eventually run out of bacon

Why it pays to take the time to write readable code.

Just in case we still have to make the point:

There’s certainly evidence that that “exploratory” approach to computing is an important job skill. Beth Simon and Andy Begel’s recent series of papers on their study of new hires at Microsoft show that the first year of work is mostly spent understanding existing code, not writing new code.

From Mark Guzdial.

Cringley rants

Robert X. Cringley has another entertaining rant about whatever turned up this week. Two quotations:

First, while ranting about the IT research consultancies.

There are themes at Gartner and its competitors — ideas that are presented on an almost seasonal basis like adding fins to change a 1956 Chrysler New Yorker into a 1957 Chrysler New Yorker. Two such themes that are popular with such consultants right now are offshoring/outsourcing and getting rid of legacy applications to gain agility, whatever that is.

Outsourcing, while a very popular recommendation to improve IT, is treating the symptom and not the problem. The problem is IT applications require lots of ongoing maintenance and that costs labor, meaning REAL MONEY. Rather than make applications more reliable and reduce problems, IT managers seem to prefer shopping for cheaper labor. The problems are still there. It is cheaper to fix them with offshoring and outsourcing, true, but it often takes longer. If the end users — the people who actually make MONEY for the company (IT doesn’t, Lord knows) — are unable to work from time to time, this is okay because IT is spending less money.

Second, on the acquisition of EDS by HP

I wonder what would happen to an outfit like HP Services if the company just decided to forget about acquisitions and simply invest $12+ billion in their current operation? Heck, half the people working right now in HP Services probably worked at some point in their careers for EDS (or IBM). What DNA is HP acquiring here that they don’t have already?