Software Consultancy as a Scapegoat

I find it interesting that the idea of being a “consultant” is being bandied about as if it’s a bad thing. As if those who are that, are something less than good. A corrupting force, no less. Based on my experience, I don’t have a particularly high opinion of them, but it’s no different than the overall programmer cadre at large.

The whole point, to my mind, of the Agile Manifesto is that it’s a set of personal practices that may scale to team level. You do not need a consultant to show you how to do that. It may help to have someone facilitate, but you do not need a consultant. And yet immediately what happened was that everyone and their dog hung out an Agile shingle and the whole thing turned into a branding exercise. – Dave Thomas

Perhaps I’m reading too much into that passage, but he continues down that vein for the rest of the interview. Why does the employment status of a programmer matter? Consultant just means not permeant employee. Income reported on a 1099-MISC, not on a W-2. OK, not in the case of corporate consultants like an Accenture. Having direct exposure to those sorts of working arrangements, I can see how one could come to the conclusion that the quality of people added to your team by those large-scale companies could be quite low.

Like adding a bunch of hucksters, really.

But that’s something different, isn’t it? Because you if you add just one single poor programmer to your team, regardless of motivation, you’re going to lower your productivity, your quality, and efficiency. Adoption of Agile, as a goal, is tangential to that.

Bad brings more bad. Don’t hire bad – regardless of how you pay them.

What’s interesting in Thomas’s account is the view that Agile was a personal practice. Implicit is a personal way of orienting oneself towards a development process that accepts, even welcomes, change. – Andrew Binstock

I agree with this wholeheartedly. When asked what do you prioritize when hiring programmers my answer always starts with flexibility, by which I mean that practice. When asking that same question while hiring, that’s one of the key things I must hear.

However, I do not agree with the point that it must be a personal practice – to which I take to mean something which must come from within. Be discovered on one’s own. Applied first internally and solo before integration into a larger whole.

Horse radish.

The ability to learn from others is a base feature of human beings. Monkey see, monkey do. And through the doing – comprehension. You can change teams by temporarily adding people to them. They can introduce new ideas, practices, and shift the culture – and then leave. It happens every time you add or subtract a person from a group, whether you want it to or not. People come. People go.

Think through the inevitable changes and handle them well. Change, at both the team level AND the personal, are constant. Press toward the good and away from the bad.

That’s what matters. Not the superficial aspects of financial arrangements, branding, or permanent vs. temporary.

Update:
Got some feedback and need to emphasize a thing or two. I don’t have a high opinion of consultants. By that I mean, in my uncharacteristically diplomatic way, on average I think they’re a menace to the safety and well-being of any and every codebase everywhere.

Off the top of my head, I can think of exactly one who was totally worth it – even though he was a consultant for purely selfish and mercantile reasons. He got done what others couldn’t, but we sure as hell didn’t want him around long term. The project we were working on, the launch of EA.com, failed for reasons other than that, but had we continued down that path… It would have become a serious risk to team cohesion, morale, and overall capability.

Interestingly, that was also my exposure to a large-scale consultant driven development process. At least a third of the development team was provided by an external contractor so every team had a substantial consultant base. A vast majority of them were a complete waste of space, let alone effort. (In fact, my finest hour on that project was cutting the Gordian Knot that they had turned our deployment process into.)

To recap: The average programmer is bad and the average consultant is worse. However, you can find the rare one who’s a perfect addition to the team, but only for a limited while. I guarantee you that there are people who jones on changing team culture and practices, who are really good at it, and who you don’t want to have part of your team forever (even if you could talk them into it.)

Queue Freebird… (Great song. Just need to lift the needle off the record in the middle.)

Advertisements