“Vee” is for … uh … “Victory”? But not “5″. Definitely not “5″.
I’ve decided to refer to my current project as “Vee”.
I’m not fooling anyone, I’m sure. You only have to read a few of my recent posts and put a 2 and 2 together (or a “4″ and a “+1″) and you’ll figure it out.
But this way I avoid unexpected Web searches. And worse. (I learned my lesson about announcing product updates way back in 1999. People emailed me to say they liked the current version of the product, but they were going to wait for the new version. I took down the announcement very quickly.)
Anyway, so, yeah, I’m working on this spiffy new project that I’ve decided to call “Vee”.
I spent the last week of August and the first week of September planning out my approach for Vee, and officially launched the project on 4 September. I expect Vee will take me about 4-5 months to reach the testing phase, and then take another 2-3 months before I’m happy enough with it to release it.
Vee isn’t a redesign, nor a rewrite (I’d like to think I’ve learned my lesson about that too), but it is a significant overhaul, with an eye on a number of strategic new features and extensions. I pondered a number of ways to handle the overhaul, and eventually decided on this one:
Phase 0. New Development Environment and Tools
Because I have to keep supporting the predecessor of Vee, and since I decided this was a good time to finally (after nearly 6 years) to upgrade my version of Delphi, I opted to buy a whole new (and cheap) PC to be my development box (and to be my Windows Vista testing environment).
So my first phase of Vee was simply to get the existing source code working (or at least building) in the new environment. That took about a week, all told. Mostly because I kept having to upgrade many of my various components. Several of those old components didn’t like the shiny new OS–nor Delphi 2007.
Phase 1. Database Creation & Maintenance
I’m in the middle of phase 1, currently. Or about 1/3 of the way through it.
The goal of this phase is to replace the database engine I’ve been using (through a handful of upgrades) since 1998. I need Unicode support built-in, and at least the option of client-server support, and so on. Who knows, I might even use some of the nifty SQL features too, beyond just database maintenance.
The most complex part of this phase is preparing for the migration of data between product versions.
Because backwards compatibility is so much fun.
I say “preparing for the migration” because in this phase I’ll be doing only the simplest, most straightforward of migrations. Get the data out of the old database and into the new one. As I continue through the other phases (especially the next one), I’ll be adding to the migration process to reflect the new internal data structures, and the new ways data is saved in the database. Which won’t be fully hammered out until …
Hell. Those won’t be done until the project ships. So I expect to revisit the migration over and over as development continues. So most of my preparation is to make those revisits as easy (and modular) as possible.
Phase 2. Internal Data Structures
This is the phase where the real, nitty-gritty overhauls happen. This phase rather scares me. Some of the data structures I’ll be tinkering with were built in the last millennium. They need the attention, and the overhaul, I assure you. But … scary.
Phase 3. User Interface
Once I have the internal data structures and their underlying database overhauled, I’ll tackle the user interface. Got lots of cool ideas I want to try. But no point in trying ‘em before I have the lower levels of infrastructure in place. Learned that lesson too.
Phase 4. Spiffy New Idea Here
Like Phase 2, this phase rather scares me. But if I can make it work, Vee will pick up a quite spiffy capability that should pay off for years.
On the other hand, if I don’t get it working, by not mentioning it, I don’t have to explain what I left out.
Phase 5. Get it Done
The final, catch all phase that leads to beta testing.
My strategic new features are scattered throughout the phases. In this last phase I make sure I actually got them working.
And, really, all of the earlier phases will be re-visited as required in later phases as I work my way through the project. My hope, though, is that by starting at the lowest levels, and replacing and enhancing each level in turn, I will minimize the development effort and not have to backtrack too much.
No idea if my start-at-the-bottom overhaul approach has a name (like Extremely Cool Overhauling of a Legacy Implementation, or “ECOLI”), but that’s how I’m going to do it. Or at least planning to do it.
Because, you know: battles plans, contact with the enemy. That sort of thing.
We’ll see how it goes.
-David