I spent the last couple of weeks distracted by other things, but I've since fixed a number of lingering obstacles towards putting MeTal into production for one of my sites. As usual, it provoked some insights about programming from my perspective, the biggest being that I'm god's own slob.
I am a hugely, hugely disorganized person. I don't look it, but I am. Like, I write down everything I know I need to do -- but then I forget to read the list. Eventually, though, I get into the habit of reading the lists I make as well as making them, but it takes a bunch of tries to get into the habit.
With programming -- especially with a project this sprawling and complex -- it's incredibly easy to lose your way. Sometimes I'll implement something, forget to document it (because the code is its own documentation, right?!), and then start re-implementing it some point later on because I forgot I did it in the first place. Fortunately these kinds of detours never last very long.
Order and discipline are not things that happen to you once, but they're things you do over and over again. Even people who have good habits have to strive to keep doing them, because the world throws any number of distractions at us, any number of reasons to get lazy and not continue the habits.
You may not like cleaning your room, but the more you clean it, the less you find your feelings about cleaning it make a difference -- you just clean it, and let your feelings about it fall by the wayside as they should. You may not like documenting an interface, but your feelings may well be lying to you. There probably isn't some super-secret way to duck out on these tedious yak-shaving tasks. The more you do them, the less inclined you'll be to cheat and fall out of discipline.
After I get MeTal running for the sake of operating my own sites (other than this one), it will take me at least a year to get it to the point where I would want to let other people use it without feeling like they're donning a hard hat. (They will have opportunities before that, but they'll be getting plenty of warning.) Much of that work will be cleanup -- all the tedium I was avoiding because I just wanted to get something up and running that could run my websites. But in the long run, I know there's no avoiding any of it. I have to clean my room.