Monday, May 14, 2012

Technically, I have a dream!

Below is a representation of an email I sent to my coworkers five years ago; I am the chief architect of ProductXYZ.

Two score years ago, a great American (Grace Hopper), in whose symbolic shadow we stand today, penned the COBOL language specification.  This momentous decree came as a great beacon light of hope to millions of programmers who had been seared in the flames of multiple and inconsistent time representations. It came as a joyous daybreak to end the long night of their confusion.

But thirty five years later, ProductXYZ still is not free. Thirty five years later, the life of the XYZ programmer is still sadly crippled by the manacles of multiple time representations and the chains of incompatibility. Thirty five years later, the programmer lives on a lonely island of poverty in the midst of a vast ocean of sound practices. Thirty five years later, the programmer is still languished in the corners of inconsistent implementation and finds himself an exile in his own code. And so we've come here today to dramatize a shameful condition.

In a sense we've come to our nation's capital to cash a check. When the architects of our compilers wrote the magnificent words of consistent data representations and the Declaration of the DateTime class, they were signing a promissory note to which every programmer was to fall heir. This note was a promise that all programmers, yes, C++ as well as C# and Java, would be guaranteed the "unalienable Rights" of "Now, Tomorrow, arbitrary conversion, and seamless database integration." It is obvious today that ProductXYZ has defaulted on this promissory note, insofar as her functionality involving time are concerned. Instead of honoring this sacred obligation, ProductXYZ has given the programmers a bad check, a check which has come back marked "multiple, inconsistent DateTime functionality."

-- err, maybe I'm getting a little carried away...  Anyway, in XYZ we're still coding forward the concept of storing a minutes-since-midnight value, an x_hr (msm/60) and a x_min (msm%60), and (in some cases) an x_sec value - dating back to the 8088/xt days when it was expensive to do division and mod operations when rendering the text screen.  In relative terms, I believe the time we spend coding and debugging the 3 values is now a waste of time for the small payback it represents on modern machines.  For the immediate term, let's quit calculating and storing the x_hr, x_min, and x_sec on new features.

etc. etc.

Epiloge
If you've ever worked in corporate, I don't recommend being me.  You get punished if you do and punished if you don't.  However, all companies are systems.  All systems can be manipulated - for good or bad.  God rewards the good and punishes the bad.  Companies reward profits and punish losses.  Success is simple, but very hard: create the profits.

No comments:

Post a Comment