But Can't We Just...
As a web programmer, I get a lot of feature requests for "simple things." And as a web programmer, I have the job of explaining why "just putting a selection list right there" will take three weeks.
A great example of this is my effort to enable comments on this site. It sounds so simple: visitors to the web site can enter some text in a little form, and have that recorded as a comment.
Yes, that part took about an hour. It's everything else that takes time.
Say what?
See, I can't just have a little form for comments. I need to think about spam, vandalism, security, and storage needs.
Spam is the biggest issue here, so I have to do research into spam screening services, build a moderation queue, decide on policies, and make sure the whole thing isn't going to make me vulnerable to cross-site scripting, or cram the storage capacity on my database account.
At this point, your average office worker is waving their hands, saying, "Woah! Woah! This is a low-traffic site! We don't need industrial strength protection! Can't we just have the receptionist screen the incomming comments?"
No. Bad plan. If we do that, I have to build the same tools anyway. And since they're now aimed at a non-technical audience (the recptionist), I have to make them friendlier and more fault-tolerant. They'll need features like "undo." And then I'll have to spend time teaching the receptionist to use these tools, and answering questions on the phone when the receptionist gets confused. And the receptionist will have to spend an hour a day just reading comments on our website.
Suddenly spending the extra week automating the process looks pretty good, no?
Yeah. Looks good to me too, since I'm the receptionist around here. I don't mind clearing out the odd raving manifesto, but I will not spend a single hour of my already-short-enough life deleting Viagra adds one-by-one.
And once we have comments, each blog post should have an RSS feed for its comments, and the form should have spell-check, and we need to make sure nobody can put HTML in the comments.
So yeah, this is taking some time. Time spent so far: three hours. I've been busy with other things.