in reply to How do you code?
I'm the type that tends to what-if things to death. What if this oddball condition happens and I don't handle it in a clever enough way. What if someone wants to use this function in a curious way. What if someone else might know a better way to do this... what if what if what if... And of course the worst one... What if someone looks at my code...
For me at least, this becomes a death spiral of utter lack of productivity. It's a conscious effort for me to strangle that voice in my head and just write some code to get the job done, even if I know it's crap. But I'll litter my code here and there with some TODO comments so I remember where my weakspots are and maybe an idea of how I wanted to fix it at some point.
The other thing that I do fairly religiously is keep my code tidy at all times. It's just easier for me while I'm coding and I find myself having to rethink an approach to a problem or something, I don't have to mentally parse my own code. Consequently, in vim I type vip= a LOT. (I have equalprg set to run perltidy for me.) And at the same time, I find that I also code faster this way. I'll code a block without worrying a lick about style, then just vip= and it's immediately pretty.
As far as handling and maintaining multiple projects, I just try to divide my time up appropriately, giving myself a fixed amount of time to work on one, then move to the next. When getting close to my time limits, I'll start doing things like writing empty subs with just pseudo code comments and writing as much as I can while my mind is on that particular project. When I'm thinking several steps ahead and I have time to code two of those steps, I'll try to leave myself so that I'll know what the rest of my thought process was. This makes it easier for me to get my mind back on the track of that particular project when it's time for more coding on it without having to recreate the whole thing in my head every time.
Therapy is expensive. Popping bubble wrap is cheap. You choose.