Or not enough. This design document is, so far, six pages. I'm taking a break to think about something I just started to say near the bottom of the sixth page. I think I'm digging a hole there, and I don't want to dig holes, I'm short on fence-posts and it only encourages the moles to play the game.
Okay, lousy analogy abuse. I'm tired, and most of my brain power is trying to decide what the best triggering condition for this program will be, so I hope you'll forgive me.
This is the draft. I think it may hit 10 pages, more if I'm unlucky, and after I get comments from someone, I'll be reworking it in more detail.
Pity the poor programmer who gets assigned this. Pity, but not too much, for at least they'll have a good guideline. (Trust me, the change really is this substantial - this isn't micromanagement, this is "take the hard-coded solution that works for a single site and uses their exact naming and size conventions, and runs only when they want it to, break it out of the program it's in, put it in its own program, and make it so that the naming conventions, transfer, and run-time can all be flexible." Huge chunks of the existing code, which is nowhere near as extensive as what we need anyway, will not be reusable; in fact, most of it will not be reusable, and it's requiring redesign of tables in the database and tables in our local storage. It's going to be good, it's going to be really good, I think, but it's not a minor change.)
And I am terribly pleased with myself. Because I'm good at this. Because, somehow, in a world where sometimes you're lucky and sometimes you're not, I was. Straight out of college, I was hired into a job I wasn't sure I wanted, but I needed a job. I thought it was just to pay the bills, and within six months I realized I loved it. Four years later, I still love it. Yes, there are stressy times, times when I'm tired and frustrated and feeling very put-upon. But I stay through them because I'm good at this, and I enjoy it, when it's not trying to beat me down and take over my life.
I code. I design. I do design for substantial new systems, and my designs generally stand. My former supervisor has more than 20 years more experience than I do, and when he comes in here to discuss design, coding, and theory, I contribute usable ideas and catch his mistakes. I'm not as good as he is, of course; I don't have the experience and knowledge base. But I'm good at what I do, and I enjoy it.
And I'm doing what I enjoy, now. And when I finish this run of design stuff (which is decidedly fun), I will get to go back to coding for a bit, which I also love.
I'm proud of this overlong document. Now to figure out how to set this process off properly, instead of the kludge that's all I've thought of so far.