Infosys’ BPM-EAI blog offers a platform to discuss the latest trends in the Business Process Management and Enterprise Application Integration spaces. Exchange thoughts, ideas and opinions with Infosys experts on how BPM and EAI programs can be leveraged to achieve operational excellence and maximize your return on investment.

« What Gets Measured Gets Done... or Does It? | Main | In a SaaS based setup what should be controlled by enterprise »

Documenting the Dinosaur

Imagine you are seated in a class room. The blackboard reads ‘Aerodynamics 101’. The lecturer is a elderly bespectacled gentleman with an air of excitement about him. As he welcomes you to his course, he shares that he is about to illustrate the mechanics of flight. On his table you notice an over-sized model of an aeroplane.

Barely containing your excitement, you open your notebook eager to make notes. The lecturer proceeds to point to different parts of the plane and explains what they do. He goes into fair bit of detail about the aerodynamic characteristics of each such as mass, turbulence etc. After this fairly lengthy exposition, he completes describing the last part of the model aeroplane’s anatomy and concludes that by now you must be having a fairly good understanding of aerodynamics. Before you open your mouth in protest, the bell rings indicating the end of the allotted time for the class.

Before you wonder, how such a class can be of any benefit at all to a student of Aerodynamics, notice that this analogy is perfectly applicable to Technical Documentation. Most of the time a code base is handed over with documentation that describes in a fair bit of detail about its various moving (and non-moving) parts. There is considerable amount of information lacking about how the system came to be what it looks like today.

Any sufficiently complicated system is a result of many design decisions, trade-offs and optimisations. The complexity cannot be appreciated unless we describe the reasons that led the creators to such decisions. This provides the vital aspect of Context to the system we have at hand.

A typical system’s documentation is spread over several documents such as Design documents, Technical specifications, User manuals to even the code and unit-tests themselves. Barring a few exceptions, these documents would talk about the end-state the system is in today. Perhaps, digging through the version control system might provide some insights, but generally the Context is buried for convenience.

This leads several serious problems ranging from duplication of effort to even failed integration efforts. At one of our banking clients, we once tried to implement an ambitious initiative i.e. a project to add sequencing to all internal intra-company messages. This involved wrapping a header around the existing messages which would now be called payload. The header would contain timestamps and serial numbers which would help in resolving the correct sequence (for the uninitiated, this is actually a pretty hard problem).

Half way into design we realised that the existing messages did contain a fairly unused field named UID. It was, in fact, derived from the message creation timestamp. They appeared in a strange but a deterministic sequence. This was previously considered to be a randomly generated number! Not only was the entire exercise scrapped, we gained smadmiration for the designers of the legacy system.

What’s the real test of good documentation?

We all fall into the trap of Documenting the Dinosaur. Without understanding the evolutionary steps behind the creature, it would be impossible to appreciate its current form. Of course, the best way to resolve this is to compress all the historical decision points into the design documents. In fact, some document authors actually do this.

But this is a laborious exercise. There are various other means to verify the effectiveness of the documentation:

  • Extensibility: How easily can one integrate with the existing system? How many times have such attempts failed?
  • Sustenance: How actively are the documents maintained? How much of context is carried over when a change is implemented?
  • Ownership: Are the designers/developers/users of the system in joint ownership of the documents? If the documentation work is performed by a separate team, are there means to avoid it?
  • Collaboration: How easy is it to view and change the documentation? Is it open for public review?

A positive answers to these key questions can prove to a critical checklist to your documentation. At worst, it may be a bit of additional work, but it can certainly prevent your system go the way of the Dinosaur!

TrackBack

TrackBack URL for this entry:
http://www.infosysblogs.com/apps/mt-tb.cgi/4106

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

Please key in the two words you see in the box to validate your identity as an authentic user and reduce spam.

Subscribe to this blog's feed

Follow us on

Blogger Profiles

Infosys on Twitter