Used to be, when you hired a contractor to write some software for your company, you handed over the specs to some guy who worked out of his parents’ basement (or a bunch of guys in a country you’d never been to, or, maybe, never heard of). After awhile, usually a longer while than you’d been led to expect, you’d get a piece of software. Sometimes it worked, sometimes not. Sometimes it worked right up until your check cleared. Sometimes the contractor would help with maintenance, and maybe even v .1, sometimes not.
Or you hired a big consulting firm, who studied your business and your market, made some predictions about the future, and then spent months and meetings to get the specs right. Then more months and meetings to create a beta version. Then more months and meetings to revise the beta. Two or three years (and lots of dollars) down the road you got software that was now a year or two too late.
I gotta say, there is a better way.
I think every software development project deserves to have a champion, someone who will sit down and look at the cost and time ramifications of your decisions, our decisions, the whole decision process. I call this champion a Program Director. Rather than get snagged by short-term pressure and near-term worrying, Program Directors can zoom out, see the long view, and ask: “What would happen if we did A in this iteration but saved B for the next iteration.” In other words: let’s pause long enough to determine the best way to do this. Are there some use cases we’re already developing that accomplish what you’re getting at? Does the situation require that we build a whole new feature, or does it just require changing the existing use case a little bit? That bigger picture thinking is what the project manager provides.
Working with “far-located” teams – as we do in the globally-sourced world of software engineering – there needs to be a hub, a central person holding everything together. Program Directors become the “glue” that binds all the far-flung elements working on a project into a cohesive whole.
Like so many things in business, you may not always see the need for that extra managerial layer when everything is working smoothly. Program Directors may appear to be doing little more than taking notes and sending emails about what’s already happening. But the minute you suddenly need something that you didn’t realize you need—a new upgrade you weren’t expecting or a new platform that you hadn’t planned for—those are the moments when having a manger with technical expertise advocating for your needs to the programmers is an invaluable asset.
Likewise when something fails. When you need to figure out why it failed, it is invaluable to have somebody who was neither on one side or another. Then your Program Director can be the referee or—better yet—an ombudsman. Can you get the job without that ombudsman? Sometimes, yes, but sometimes you really can’t. And that’s the point. What is at stake far exceeds the cost of having an ombudsman. On a lot of projects his primary role is to coordinate the flow of info. But on every single project, as we all know, there’s what you plan and there’s what happens.