Note more discussion at http://news.ycombinator.com/item?id=4037794
I have a relatively simple development task, but every time I try to attack it, I end up spiraling in deep thoughts - how could it extending the future, what are the 2nd generation clients going to need, how does it affect "non functional" aspects (e.g. Performance, authorization...), how would it best to architect to allow change...
I remember myself a while ago, younger and, perhaps, more eager. The "me" I was then wouldn't have given a thought about all that - he would've gone ahead and wrote something, then rewrote it, then rewrote it again (and again...). The "me" today is more hesitant, more careful.
I find it much easier today to sit and plan and instruct other people on how to do things than to actually go ahead and do them myself - not because I don't like to code - the opposite, I love to! - but because every time I sit at the keyboard, I end up in that same annoying place.
Is this wrong? Is this a natural evolution, or did I drive myself into a rut?
Fair disclosure - in the past I was a developer, today my job title is a "system architect". Good luck figuring what it means - but that's the title.
Wow. I honestly didn't expect this question to generate that many responses. I'll try to sum it up.
Reasons:
- Analysis paralysis / Over engineering / gold plating / (any other "too much thinking up-front can hurt you").
- Too much experience for the given task.
- Not focusing on what's important.
- Not enough experience (and realizing that).
Solutions (not matched to reasons):
- Testing first.
- Start coding (+ for fun)
- One to throw away (+ one API to throw away).
- Set time constraints.
- Strip away the fluff, stay with the stuff.
- Make flexible code (kinda opposite to "one to throw away", no?).
Thanks to everyone - I think the major benefit here was to realize that I'm not alone in this experience. I have, actually, already started coding and some of the too-big things have fallen off, naturally.
Since this question is closed, I'll accept the answer with most votes as of today. When/if it changes - I'll try to follow.