A few years ago and on occasion of St. Patrick’s Day, my daughter built a leprechaun trap. She wrapped a shoe box in shiny green paper and cut a slot through it, decorated it with a border with jingle bells, added a ladder made of Q-tips so the leprechaun would be able to climb, and then added a gold box with the legend “gold inside”. To trick the leprechaun, she hung a piece of
“gold” from a pole. Once he reached for the piece of gold, he would fall through the slot and he’d be caught. Who could argue with such piece of engineering? It was virtually impossible for the leprechaun to escape once tempted.
The night before she asked me impatiently where would be the best place to place the trap. I mentioned that next to the front door would be best, since the leprechaun would have to come in from somewhere. She placed the trap and we all went to sleep. Next morning, as I got off to work–I’m an early riser, so it was still dark–and opened the door, I almost tripped because of some object on the floor. I uttered words that I cannot repeat here, and as I turned on the light I realized I had rattled the leprechaun trap and had messed it up a little.
After realizing my mistake, I decided to leave the trap as it was and just left. Sure enough, later in the day my daughter called me very excited: “Dad, I almost caught the leprechaun!”, and she described what had happened, and how she had found the box. When I came back, she described why the trap had failed and started thinking of improvements–she kept the box and used it the following year, again, with no success.
There are leprechaun traps in software. Very frequently we’re tempted by “gold”whether it is in the form of:
- Latest and greatest programming language X…it doesn’t matter if X has a few percentage points in global usage and has remained so for several years. The problem is not in the language itself, it’s mostly in the long-term viability, tools and libraries around it.
- Latest technology…even though there is scarce support for it. How often have you looked at an open source library that looks promising only to find out that the community
around it is a couple of developers and it has not maintained for years, or that once you look under the hood the code quality leaves a lot to be desired?
- Latest and greatest development process…DevOps anyone, anyone, Bueller? The problem is not in the development process–after all DevOps responds to a set of needs–, it is in the edicts that move teams towards development processes that are misunderstood or inappropriate, often without training and simply as a trend that starts who knows where.
It does not mean that there are not authentic opportunities for striking “gold” and that one shouldn’t be looking elsewhere for satisfactory solutions not currently met with existing technologies. So why, as software professionals, do we often fall in a leprechaun trap? A coworker of mine long ago mentioned that we as engineers are pleasers. We’re problem solvers, and often times overly optimistic. It’s hard to say no to “gold”, to resist the impulse and think back carefully before we offer our educated guesses and commit to schedules that are unrealistic–but there’s a shiny box that reads “gold inside”. We fall into the leprechaun trap, and once inside, we know it’s hard to climb out of late schedules, budget overruns and buggy software: whole teams have to work overtime to compensate for the late schedules and the budget overruns, and with buggy software you just build a backlog that you–or some unlucky soul–will have to work on for the next year because of software “gold”.
The secret not to fall into a leprechaun trap? Don’t be a leprechaun.
Happy Saint Patrick’s Day!