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.