Wednesday, September 11, 2013

Where do you put the Ugly?

As a programmer I found that the realities of deadlines and costs resulted in one unassailable truth; every program had some ugly code, and that code had to go somewhere. Sometimes this meant a special “Utility” class, or a “Worker” object. Every application had one, and the smart programmers found a way to get all the ugly code into one place. At least then, it was manageable, or as I seem to recall - easier to hide!

As an architect, I find that every opportunity to build reusable objects, systems, or business services comes with an ugly conversation, best summed up as, “The first to the river has to build the bridge.” In short, reusable services tend to cost more than one-time special purpose functions that serve the same “local” purpose. But, asking the first customer to fund an enterprise solution almost always yields pushback.

I worked with developer back in the day who took it upon himself to build a integration pattern for a single business unit, but one that could be leveraged by the enterprise. I’m pretty sure he overestimated some of the work so he could make the solution more robust, customizable, and performant than was actually required by the one business. In those days, that was about the only way to build an enterprise class utility. Lie, cheat, and beg forgiveness.

Should we build a minimal solution for the first customer, thus creating an ugly enterprise service, or do you finagle some accounting trick to fund the right solution, possibly earning the wrath of business users that do not yet see a need for the service?

This tends to be the trade-off; either the solution itself is ugly and not quite ready for enterprise-prime-time, or the accounting is ugly in that funds have to be stashed or amassed from sources that don’t want to contribute, don’t see the need (yet), or want a free ride.

One solution is to skim a few pennies off every IT hour charged to the business to create a technology slush fund. This is very hard in a regulated or cost-controlled environment. Another solution is to leverage one of the Executive Committees to justify shared costs project-by-project. Again, tough to accomplish if the organizational infrastructure is not already in place.

All that being said, I’d rather fight the demons of creative accounting than the ghosts of easy technology.

Follow by Email