The paradoxically self-referencing Hofstadter's law states that "It always takes longer than you expect, even when you take into account Hofstadter's Law."
I'm sure it works in many professions, but it feels especially suitable to the software development industry.
So what makes projects take longer?
Whenever something takes longer than expected here at Oxford Web, we analyse the reasons, in order to learn from the experience.
And one of the biggest causes that crops up is the lack of a shared language between customers and web designers/developers.
If you've ever specified or built a website yourself, then you fall into one of both of these groups.
Have you overheard or been part of a conversation between a baby and a parent, where the baby is trying to get something across that the parent just doesn't understand?
Baby: Want it
Parent: Here's your teddy, sweetie!
Baby: Grrrr! Want it!
Parent: Don't you want your teddy? What do you want?
Baby (gesturing like crazy): Want it?
Customers don't have the language
The baby analogy is not to say that customers are immature, but those who don't have experience of specifying websites just don't have the language - what the layperson calls jargon but is in fact a very necessary glue for putting together the desire for something and the activities which get it done.
The problem gets bigger when customers have a language but it's not our language. For example the customer may say "auto responder" (which means an email which fires off straight away when any email is received) but really mean "a series of prepared emails that fire in sequence when someone signs up to a newsletter". Or get frustrated with a developer who creates a fixed width website, when that's what the designer has designed, and it just won't stretch.
What can we do about it?
The only perfect solution is for the customer to understand a great deal about web design and development. But of course there's a lot we can do:
- Thinking of things that the customer may not have thought of.
- Showing the customer websites which do similar things to the things they want theirs to do.
- Creating a written statement about the purpose and function of the website, based on the customer's original requirements.
These are huge steps towards mitigating the problem. But the biggest thing, the one thing which people say they don't have but in reality will lose more of if they don't spend it at the start, is:
If you want your website next week, we don't really have time to site down and discuss how it's going to work, specify it, prototype it, test it, usability test it, and go live. So you might as well write a blank cheque on cost and functionality.
For a very simple website (a unique website, not a wordpress job), you should normally allow:
- A week to agree the specification
- A week for design
- A week for development
- A week for functional testing (by the customer) and usability testing
- A week to iron out problems and go live
For larger projects and systems, these timescales rise logarithmically with the amount of functionality being specified.
An evolving language
If you're the specifier, the designer, and the developer all rolles into one, you shortcut these processes within your brain, of course, and you can go from initial vision to going live in a few hours. So if there are more people involves, can we still shortcut the process by using a shared language?
In an industry less than 20 years old, with new trends, paradigms, and user expectations emerging every year, and when kids are learning how to use software instead of how to build it, how can we ever have a shared language? Are we in fact going back to the times when priests and monks knew Latin and the Bible, and the populace had to accept what was given to them?
Why don't you join us and learn a little Latin? We've started a tech blog aimed at everyone from complete beginners to programming gurus, with a shared authorship in order to broaden the subject matter and the appeal, and with the aim of explaining techie concepts in plain English. We hope you enjoy it as it grows.