ObjectsInstancesRelationshipsConnections

An exploration through the world of Objects, instances; Relationships and connections.

Monday, July 03, 2006

OiRc-0010 I didn't need a job THAT badly...

Last summer, (July 2006, when I actually wrote this entry, that I'm only posting in May, 2007) I walked away from a project that was fatally flawed.

I determined this before I ever sent in my first invoice so they have nothing to complain about as far as costs.

To protect myself, I will never reveal the company, the individuals involved or what the domain was. As far as you might be concerned there is/was no such company, project or people.

I will say the following, without naming names though:

The 'chief architect' had no vision. He insisted that I stop working on what he thought of as an application when it was really the visible tip of the iceberg of a complete system.

If I'd listened to him, I'd have been shoving bytes around a table (pun intended) and dealing with shite when what was possible was vastly greater.

One of the principals really 'creeped me out' with his attempt at Latin phrases, and 'inspirational' email messages. (Religiosity may be fine as a personal belief system but it does not belong in the boardroom. Decisions about scheduling must be based on truth; anything else is just "trying to saunter across a very busy multi-lane highway and hoping you won't be run over by the semi barreling down right at you." [... SPLAT! ...])

The overall system belied a general lack of understanding of the power of relationships and revealed that they just didn't 'get it.' They sort of understood, but only sort of. (I don't need to evangelize what people like the military and the NSA already know. [If they don't do it, they must have some strategic reason. {Its a smart tactic; like using night-vision goggles while the opposition is fumbling around in the dark.

(There are only five basic objects [which answer the five fundamental truths: "who, what, where, when and why."]

The rest is Relationships dealing with these objects and instances of each other, and Connections dealing with instances of these objects and instances of each other. [But each other doesn't refer to the same class of object. :-]

For some reason, probably related to the mental gymnastics of trying to deal with them, people immediately start flattening out the relationships and start creating meta-objects which they then pretend are the real objects, [not realizing that they're not and if they need to deal with them, they're going to have some major problems.])}])

The deadlines for milestones on the project deliverables were unrealistic and based on nothing more than suppositions.

Throwing more people at a project just makes it later and that's exatly what was happening. (See the "Mythical Man Month" by "Frederick P. Brooks, ISBN: 0201835959 for an exploration of an old story.)

The ultimate deliverable, and the intermediate steps to achieve it, needed to be far better described. (Otherwise it leads to staff 'burn out' and dissatisfied 'end users.')

I've been around enough to smell disaster.

I chose to discretely disappear and leave them to it.

This is the, uh, object lessons that that can be learned from this kind of project:
  • Data mining doesn't need to keep track of object states because the states are considered frozen at a point in time. Hence there was no need for state transition engines in their particular project (but it would have been trivial to merge in a relationship which connected to instances of a 'perpendicular' object.)
  • Merging data from several sources, (be it a database, where tables represent the data objects and the columns are described in a DBSchema, or in CSV files, where the first row contains the column names,) and joining multiple seemingly disparate schema into a cohesive whole, is really a trivial problem. The data exists. Deal with it.
  • Coming up with a 'super schema' requires finesse and an understanding of objects and relationships.
Actually, this was a trivial exercise because none of my code dealt with the client, the data or the purpose. It was all meta-meta level programming which needed to be done to generate the meta level solution that was being sought.

They didn't listen, and the company doesn't exist anymore.

I don't feel sorry for them or for the solution I came up with to solve the problem they actually had (and which killed them off in short order,) rather than fighting the fog surrounding the problem.