Minefield Systems - The Lifecycle
There are computer systems, and then there are minefields.
Minefields are programs that defy common sense. They are huge, monolithic, untouchable pieces of program logic. Nobody dares to poke around in that space. Once a minefield is established, it lives on for a long period of time. A typical minefield lifecycle has following phases:
Analysis: During this phase stakeholders, combined with the lead-runners from the technology space spend numerous hours in meeting rooms. They discuss everything. All trivial and complex software requirements are analysed. The following formula sums up the principles:

Where E is effort and C is complexity. The effort involved in analysing each problem is inversely proportionate to its complexity. As a result of applying this arcane logic, many problems end up in the ‘too-hard-basket’. This basket sits in a lonely corner and does not find any guardians.
Design: In the minefield lifecycle, this phase exists, albeit minimally. The idea here is to ‘envisage’ (read reinvent) and document design elements around problems that:
- do not end up in the ‘too-hard-basket’
- are obvious and have solutions available in the public domain
- do not need thought leadership
Development: Theoretically, this phase has the minimum amount of time/effort allocated. In practice, it never quite works that way. This is the most iterative process. In keeping with the philosophy, the first three quarters of the allocated effort is used in developing the least complex functionality. The final quarter of the run is the most frenzied. Towards the end of this phase cracks in personal / professional relationships are known to develop.
This period usually overlaps all the other future phases, such as, Testing, User Acceptance and Implementation.
Testing (Development In-Tandem): During this phase the testers discover the ‘too-hard-basket’ and fall in love with it. The once lonely ‘too-hard-basket’ now has plethora of parents. They keep initiating work items for problems that were ignored during the preceding phases. At this point, the testers, developers, BAs and managers start playing the game of community blitz chess. Everybody makes quick moves in all directions. Time is running out.
The already over-engineered system now undergoes the process of ‘rapid improvement’ and ‘reconciliation’. Program logic is injected in all areas of the system to comply with the initial set of requirements. By now, the sub-programs have stopped resembling their form from the first three quarters of the development phase.
Towards the end of this phase, the system has evolved into a full-blown minefield!
User Acceptance (Development In-Tandem): This is a symbolic phase. The most important cross-section of the society is briefly involved in the process. This is, the ‘User’ or the ‘Perceived User’. Depending on how easy/difficult it is to find the real user.
By this stage, all sections of the society are generally nervous about making complex changes, such as, modifying a label on a screen. Besides, the budget has runout as well.
Implementation: Gestation period is over. Delivery is imminent. Irrespective of the level of stakeholders-happyness (which last only for a moment anyway) with the system, it is implemented in the production environment with great pomp. This phase may or may not require development effort based on the intensity of last minute explosions. Large explosions often necessitate hot-fixes.
Maintaining these kinds of systems is a different ball game. You need to develop an in-house team of experts specific to your minefield.
Filed under: Humor
Another awesome post… Even with the typo! (and no I am not going to tell you where the typo is)
Thanks. Fixed it ‘konwn’ => ‘known’, unless there’s another one…
Excellent post dude. I’ve gotto share this one with fellows at work.
Thanks! We have our own Industrial hazards, isn’t it? -Amit
im on one right now….. .. dammit.. didnt make it…