Thursday, August 7, 2008

Apologies, life, and software deadlines

Yes, it's been a long time since my last blog post. I've been pulling a lot of extra work trying to hit a milestone for an application I've been developing. As a result, in my free time I've mainly wanted to just unwind so other commitments have suffered a bit. You should see the state of my yard!

Anyway, the deadline has come and gone, and now I'm scrambling to hit the NEXT milestone! It just never ends in the life of a software engineer, does it? Our life is a series of deadlines stretching off (way off) into the distance. In my case, I'm writing an application that's much more complex than anything I've attempted before and there's only one other developer working with me on this project so we're in for a marathon, not a sprint (sorry all you Scrum adherents!).

As the project lead, I've found this a very interesting challenge. I've actually been working on this project for some time now and am approximately 2/3 through the whole thing. The whole process has led to a number of things I hope to write about here.

To give you a quick teaser until then, this project is an application to assist our staff with the document creation process. Sounds like all we need to do is purchase Microsoft Word, right? However, these documents are built on over 100 templates (all of which may need to be highly customized), have several input fields, pull information from our databases, and have to integrate with our document imaging and workflow systems.

Actually, we already have such a system. I wrote it several years ago when the previous system was made obsolete during a mainframe upgrade. And it was built on Microsoft Word. However, now we also need to capture information from these documents for statistical analysis (we currently do capture statistics from these documents, but it's manually entered into our statistics database by another department after the documents have been committed to our document imaging system).

Sounds like a fairly straightforward addition, right? It's definitely a good idea and one I fully support, but a basic analysis of the actual system quickly quickly reveals a number of twists in an otherwise simple-sounding task. First, the users need to play pretty fast and loose with the templates. Depending on the need, some of the statistics that need to be captured are currently added to the text of the document, not existing fields. Some could come from fields that are inserted dynamically into the text through a variety of predefined text blocks. Also, some statistical elements may occur a variable number of times in a document. Some documents don't contain new statistics, but modify existing statistics. Finally, one of the "templates" is a totally blank document for free-form entry (that one's probably going to be a goner if I have anything to say about it).

Put it all together, and our existing VB6 application bundled on top of Microsoft Word templates and VBA code just wasn't quite up to the task. So the decision was made to dump Word from the system (we found a fairly good word processor control that we can embed in the new application) and rewrite the application in .NET.

All this is a long-winded way of saying that I'm sorry for the long delay since my last post and (hopefully) software deadlines will no longer distract me from my blog. I plan to post my next article about coding conventions soon and you can expect to hear more about the past, present, and future of this project as well.