The first few months in any software development are by far the most important. Make that anything up until your first release to eventual customers -- not just version 1.0 but any major beta testers as well. As the requests for The Digest Handler pile up -- not only from myself, The Digest Handler's most loyal user for now, I feel sure, but also from users who are finally pouring on the comments -- I'm finding myself thinking about how to add these in two ways. First, "How can I add these features to this version most quickly?" Second, "How should I add these features to the next major version?"

That's right -- I'm thinking about rewriting all these features, which almost certainly will never happen, so that I rationalize taking shortcuts to get those features in there *now*. That's evil, man.

The issue is that I left a few good natured short-cuts in there in the first place expecting to come back and refactor once I got it all working and "out there". Now, I'm piling short-cut on top of short-cut and making the code a garbled mess just like everything else I've ever seen. And that was the whole idea behind this app: Make something useful The Right Way just to prove that a programmer still can.

Anyhow, it is fun. The excercise has become, "Make the long term fix and short term fix the same." This is even occasionally possible. I believe the important mantra is, "Make each additional feature completely independent of each that came before it." So, in my case, if I need to add a search feature, I just point the new search code to The Digest Handler's backend, code it, then lay a GUI on top. If I do things right I could release, "SearchIt -- a Digest Handler utility" as a stand-alone app when I'm done. *That's* The Right Way. Every bit of your code should work like that. Always be able to pick out each functional unit and run it as a stand-alone to help know when you've got your code properly factored. (There's more, of course, like making sure your backend access is abstracted in case of changes to the backend itself, etc, but it's a good start.)