| Introduction - The Developer Guide |
|
|
|
|
This section does not deal with how to work your document assembly project to maximum efficiency. What it does deal with are all the bits and pieces, approaches and thought processes that are necessary to start looking at your project in a more thorough and systematic manner. Think of this as the "How To Think Document Assembly" crash course. The reason for this section is simple: there are many processes and design steps involved in any programming. When a programmer sits down to write something (music blaring, coffee in hand, chocolate bars in fridge - geek programmer staples!), they have a solid background in these concepts and design steps. These are the concepts and steps that are very rarely ever written out. Why? Because they are taken for granted by the programming community at large. However, when it comes to document assembly, many developers do not plan. Why? At the risk of making an inaccurate blanket statement, many document assembly developers have no prior programming experience, or perhaps have a macro language under their belt. I was one of the latter and I had to learn all this stuff the hard way. If you've never designed a flow chart, have no idea what "boolean" means or get a mental blank at the phrase "object oriented", then you are most likely like I was - clueless about "real" programming. The problem comes from two sources:
The training will most likely run something like this:
This is exactly the approach I am advocating against. There is no planning here. No forethought. In their defence, it is impossible to provide 2 days training that will cover how to plan and design document assembly, variable naming structures and other critical steps as well as covering how to use HotDocs. But the problem remains - the training you will invariably be provided with is poor and will not stand you in good stead. Counter-Intuitive DevelopmentMany developers of document assembly I have spoken with, worked with and received systems from have one thing in common: they don't plan. They pick up document #1 and start coding, just as they were trained. If they are very knowledgeable about the area of law they are programming, and have been working with HotDocs for quite some time, things turn out ok. If not, things get difficult. The method for development that Seth Rowland and I have worked with for about 7 years has slowly evolved over that time. Our approach to document assembly will appear counter intuitive, as if we are putting the cart before the donkey. I can assure you that it is in fact the fastest way to work a document assembly system from start to finish, without having to re-write or re-develop code. And the best news? You can apply this methodology while knowing exactly nothing about the area of law you are programming. Our system for development achieves quite a few ends, and avoids some unpleasant occurrences in document assembly development:
The system is very easy and straight forward, but can be hard to follow because its counter intuitive to many people. The maxim behind our system is simple: You cannot program any system until you are aware of every result that system will need to produce To us, that means that until you've reviewed every document in a system, and catered to every result that will need to be produced, you shouldn't program a single keystroke - plan it out in minute detail first, then program the system when all is designed! Writing code, then expanding on it, re-writing it (known as re-factoring), patching it and re-doing it - this is what programmers and designers hate, because it wastes so much time. Learn to plan then code - it will save you time, money and headache. Moving ForwardThe rest of this section outlines the development process along these lines. In writing this procedure, I have used a "high end system" system approach. This means that the process I'm outlining is a fairly complete process of how to build a complex system from start to finish. The reason for this is that the process will cover most of the issues you will have to deal with in a document assembly project, no matter how complex or simple your goals are. As with any project I design, the goal is to eliminate (or at least, minimize) post assembly editing. When the document pops out, it is done: that's the goal. The topics covered are: Approach to Development
Raw Materials
Designing The System* From this point forward, the articles deal with in-house development of document assembly, not outsourcing
Programming the System
|