I'm going to be amazingly honest and come out as a Steve -- I love building up a new project, or iterating over a prototype until it's actually something that people can use, and then afterwards suffer from a critical deficiency of steam/gumption/moxie.
It's like running flat-out into a brick wall, minus the reconstructive surgery. At moxie-zero time, I can do anything else, but need to take a break from the codebase.
Timeline seems to be at somewhere between thirty days and three months, and I'm really curious to hear from other Steves what your personal run-time is.
Now, this is hell on a team, and double hell on a company that needs to ship on a regular basis, but I've come up with a few coping techniques that really seem to help:
1. Comment copiously the how and why things are written (people can usually figure out the what on their own). I know that my code is going to get handed off, and I don't want to inspire my successor to commit heinous acts of violence.
2. Build small, nearly independent projects that function as building-blocks for bigger systems; e.g., build service-oriented architectures. You often finish well before the steam runs out, and can then build something technically 'new' on top of what you just finished.
3. Develop another valuable skill that allows you to contribute even when you're not writing code.
One reason I'm not an entrepreneur is that I haven't found a reliable, enjoyable way to get past the precipitous drop in enthusiasm and energy that occurs around 3 days to 1 week into a project, for me.
Don't underestimate the value of having a partner-in-crime with a different skill set than your own, e.g. Woz and Jobs, Allen and Gates.
There can be a tremendous synergy when you find someone you can work well with, who has a different perspective than your own, who you still like even while they are nagging you to finish feature X so that you can finally ship product Y so as to be paid dollars Z.
What I find helps me to keep going through the lame part of a project is working on pet projects. It keeps me fresh and motivated enough to be able to at least moderately focus on the now boring codebase.
I cope with this with #3, I guess - not programming as a career.
I can then do crazy prototypes and hackathons in my spare time and work on the general big-picture, product vision stuff that I really enjoy in my actual job as a product manager. My workplace isn't reliant on my shipping great code (and we'd all be worse off if it were!).
It's like running flat-out into a brick wall, minus the reconstructive surgery. At moxie-zero time, I can do anything else, but need to take a break from the codebase.
Timeline seems to be at somewhere between thirty days and three months, and I'm really curious to hear from other Steves what your personal run-time is.
Now, this is hell on a team, and double hell on a company that needs to ship on a regular basis, but I've come up with a few coping techniques that really seem to help:
1. Comment copiously the how and why things are written (people can usually figure out the what on their own). I know that my code is going to get handed off, and I don't want to inspire my successor to commit heinous acts of violence.
2. Build small, nearly independent projects that function as building-blocks for bigger systems; e.g., build service-oriented architectures. You often finish well before the steam runs out, and can then build something technically 'new' on top of what you just finished.
3. Develop another valuable skill that allows you to contribute even when you're not writing code.