A few weeks back I’d been sat at my desk at work reading Steve McConnell’s blog entry on building a fort and how it compares with software development.
It’s quite interesting how many similarities there are between a software project and an engineering project (of sorts) even though they don’t really become apparent until after the fact.
Steve even managed to make a “classic mistake”.
4. Substituting a target for an estimate.
I had 7 days to do the project, and my estimate turned out to be 7 days. That’s a little suspicious, and I should have known better than to make that particular mistake!
It shows that when we are outside of our problem domain it’s easy to forget what we’ve learned.
I had an object lesson in this later on that same day when I was thinking about some small project that is going on in our office.
We’re getting a shower installed at work, and as I’ve just started cycling into work I had been taking an interest in the work.
The work started the week before but I wasn’t getting too excited about when it would be done as I know these things can drag on and hit all sorts of snags and problems.
It’s like software right? You can plan and plan but some unforeseen problem is always waiting around the next corner.
So, I was quite excited later that same day when I walked past the shower cubicle to see the shower unit had been attached to the wall.
My immediate, almost instinctive reaction was that the shower was pretty much installed and I’d be able to use it by the end of the week.
I walked back to my desk feeling quite pleased when suddenly I realised that I too had made a “classic mistake”.
Joel Spolsky explains this problem quite succinctly.
If you show a nonprogrammer a screen which has a user interface which is 100% beautiful, they will think the program is almost done.
People who aren’t programmers are just looking at the screen and seeing some pixels. And if the pixels look like they make up a program which does something, they think “oh, gosh, how much harder could it be to make it actually work?”
The big risk here is that if you mock up the UI first, presumably so you can get some conversations going with the customer, then everybody’s going to think you’re almost done. And then when you spend the next year working “under the covers,” so to speak, nobody will really see what you’re doing and they’ll think it’s nothing.
I was acting like that client, seeing the “front-end” and assuming all the back-end work was done and/or didn’t exist.
I felt pretty silly once I’d had this realisation.
And it turned out that I was being silly as it still took a few more weeks before the shower was actually complete – of course, during that time the workmen were nowhere to be seen – but hey, it’s not like me to question the integrity of the great British workman.