September 20, 2008

...Learn TDD with Codemanship

SPI - "Software People Inspiring"

I don't often meet people who actively disagree with the point of view that the largest factor in the success or failure of software projects is the people who work on them.

Fools who try to argue that "it would never have happened if we'd used Java", or who cite the lack of Scrum or Pair Programming or that they just weren't Unified Process-y enough, as the cause of their difficulties are missing the point somewhat.

If we'd got the right people, those problems would have melted into the background: a light drizzle over an ocean of skill.

Let's not forget that some of the greatest achievements in computer software were made by people punching holes in cards, following no visibly discernible process whatsoever. Perhaps a flow chart of their Software Development Lifecycle would include a "replacing vacuum tubes" phase, but requirements management, analysis and design, testing, change and configuration management and so on?

Not to say that these things don't make life easier. But history proves we can take off without them. Skill, creativity, imagination, dedication, and raw intelligence trump all of these and make the lion's share of the difference when we look at the quality of the end result.

I've worked with enough CMM Level 5 development shops to know that excellent processes can produce risible software. And anyone who's worked with Sun Certified this, Microsoft Certified that and IBM Certified the other will know that mastery of the technology doesn't add much value, either.

And in light of all this, as a consultant who often has to sum up what he does in the time it takes to take the lift from the top floor to the ground floor, I've been looking for a better acronym to describe what I do to replace S.P.I. ("Software Process Improvement"). Because that's not what I do.

I've looked at Agile-type phrases for it (e.g., "evolutionary capability improvement"), and I've looked at goal-driven versions like "software delivery improvement".

But the key word really is PEOPLE. When things get better in a software development organisation, ultimately it's usually because of people getting better at software development. Better individually, and better working together. Indeed, my whole view of "processes" now is that they are just descriptions of how individuals and groups of individuals can interact to achieve a shared goal.

I help developers to learn and improve, and I help teams to interact and collaborate more effectively. I do this mainly by encouraging them to care about what they're doing, and to motivate them to pursue their own learning and to actively share their knowledge. The specific practices, processes, tools and techniques always vary, and - for the most part - they teach themselves what they feel they need to know, while I cheerlead from the sidelines and hopefully inspire them to go further.

The acronym for what I do, then, is still S.P.I.

But now it stands for Software People Inspiring...

Posted 9 years, 9 months ago on September 20, 2008