Originally Published 2007-12-21 03:04:01
I've had writer's block for the last several days. Well, no, I didn't, but I try not to lament about women on this blog and I had a hard time tying in Heroes with a tenet of entrepreneurship. Well, without resorting to something cheesy, anyway.
So I'm going to talk about something else I have experience in. Having just come off a nightmare of a software development phase, it's on the brain.
There's a couple of sayings that I've heard tossed around in software development circles:
You can have it on time. You can have it on budget. You can have it bug free. Pick any two.
The first half of the project takes 90% of the time. The second half takes the other 90%.
Both are allusions to the difficulty in managing software projects. Of course, the reason software is difficult to manage has a whole lot to do with psychology.
Developers wear their brains on their sleeves like trophies. They are smart. They like to be reminded that they're smart. They like to feel smart. They like you to know that their smart. Some of them even cheekily name their blogs "Smart". ;-)
No matter what a developer might think of a problem, the speed at which they solve said problem is an indication of their intelligence. And so, a developer will always give you his best possible estimate for how quickly he can solve a problem. And, in fact, if a developer were to write bug-free code on the first pass all the time, that estimate wouldn't be half bad.
But even the smartest of developers make mistakes. I bet there are even bugs in the googlebot. I know, I'm risking a lot saying that (alienation of the googlebot is a death sentence for any blog, right?), but it (gulp) must be true.
Those mistakes go up when the developer is under the wrong kind of pressure. I, for instance, thrive on stress. The more things you throw at me, the more productive I become. Basically, I insist on dropping 2-3 balls at all times, so if you throw 53 at me, you'll watch a crazy man juggle with 50 items at once. But if you throw only 3, I'll just sit around, drink beer, and play a lot of basketball. (lol)
Other developers are the opposite. One fellow I know handles tasks in an extremely serial fashion -- one thing at a time, and you'll get the best work you've ever seen. Throw six things at him, and he serializes the tasks, then gets his work done almost as well. 50? Well...
Let's just say that spontaneous human combustion does exist. I've seen it.
But back to the psychology of developers. They don't figure in bug fixing time by default. If they say they can write you a script in 2 minutes, they can. It just might not work! Good developers re-think their estimates real time, but they're still optimistic. And they always forget their biology. If you've worked them the last 12 hours straight, it's the red bull talking. Take whatever they say and triple the time.
The other major reason software is so hard is because of bad project managers. Now, developers are "programmed" to say yes to everything. Ask a software engineer to build a fully functional Apollo rocket using nothing but LISP, a rubber band, an Atari 2600, and two alligator clips and you'll get it. It might take a billion bucks, 3 years of engineering, and some minor embezzlement, but you'll get it.
Project managers, on the other hand, have to say no to everything. It's their job to protect developers. There is a reason engineers are often not naturally "sociable". That's how they got good. Solving a good problem is, in it's own way, more rewarding than getting laid. Well, maybe not quite that rewarding, but you get the picture. So don't bother them. They're working.
The thing is, because engineers like to be smart heroes, and because to an engineer every problem is solvable, the folks driving the development generally ask for too much. The people footing the bill on a development project commonly engage in "scope creep", which is when they tap a developer on the shoulder and whisper a little, tiny request into his ear.
A good Project Manager barricades the engineer and tells said shoulder-tapper to take a hike. Yes, sure you can have that extra icon, but I'm taking this one away instead. Or, frankly, no. You can't have it. Piss off. We release in a week. Come talk to me after that about the release planned two months from now. Furthermore, that good PM makes the stakeholder appreciate her all while letting her developers get on with their work uninterrupted.
But, alas, so many PMs are simply glorified secretaries... and bad ones at that. At the last big company I worked for, every project where I was a developer under another PM either suffered from scope creep at a Cheetah's pace or never got finished because they had me attending 4 hours of meetings every day. You can't write code if you're in a meeting! Oh, and by the way -- if I have to attend every meeting and interact with the stakeholders every step of the way, how the heck are you adding value? I'm managing the project directly!
In my last gig, regrettably, I was stuck wearing both hats. The developer in me wanted to say yes to everything, while the project manager in me screamed "no" every 23 seconds. One of the stakeholders on the project even called me on it, saying I was contradicting myself. And, indeed, I was. But that's the nature of the beast. This was one place where wearing multiple hats didn't work so well.
On 2007-12-21 07:42:54 Project Managers vs. Developers | time management said:
[...] Read the rest of this great post here [...]
On 2007-12-21 15:13:06 project management software » Blog Archive » Project Managers vs. Developers said:
[...] Read the rest of this great post here [...]
On 2007-12-21 16:35:25 Guru said:
This problem with Project managers seems to be universal, i'm yet to see a programmer who is satisfied with his Project Manager.
Nice post ..
On 2008-07-23 23:17:20 PDRater.com » Totally Unrealistic Goals said:
[...] I’m wearing the programmer and project manager hats. I should really know better by now. A friend of mine had a great post on this exact [...]