TVOM: Time Value of Money

TVOM is the elephant in the living room of software development.

Tool vendors create Value expressed as Time, and then comes their own tradeoff - a sucking sound that is supposed to be music to the developer's ears. If only that tradeoff was really music.

Hint: If I save 100 hours and spend 100 hours saving it, then maybe that wasn't a savings.

TVOM Merchant Examples:

Time really is Money, if I am paid by time, which most of us are. If saving Time or Money just costs tons of Time or Money, then it's just a giant sucking sound, and sometimes the tradeoff isn't so great.

Java

So many ways to save me time by providing a universal platform and ecosystem and language and APIs. It has worked great. It does work great. The sucking sound is me trying to keep up with the zillions of implementations of this great and universal API set. All I need is a hundred hours of research, and I can save 10 hours in the implementation. Such a deal ! That's a sucking sound - and it's music that plays all the time, where I live.

Microsoft

Microsoft of course is the ultimate TVOM sucking sound music vendor.  They know that I gotta get stuff done, so they provide products that help me on every level, and in exchange I have this permanent IV needle hooked up to my arm with Microsoft replacing the bottles on the other end. Call that sucking sound music if you wish, I disconnect from the IV probably more than the tradeoff warrants. This particular music is very shrill to my ears.

Maven ( or any other build / management tool )

Maven is my favorite love/hate relationship. The ultimate TVOM, the ultimate sucking sound. Sometimes a very loud sucking sound, if you aren't using someone's already perfected maven build. I have successfully made this music for years now, that's how I prefer to reframe this sucking sound.

Every build and management tool, of course, has it's own sucking sound. One may be fast but non-standard, another may be easy to learn but limited, etc etc etc. Pick your poison.

Ajax ( or any other UI approach )

Dang it if I didn't have to use the word approach for this set of tools because you can't even call them frameworks. Some are tools, some are frameworks, some are languages, some are disciplines, some are products, some are services. They all do the same TVOM thing, they offer you a way to address the TVOM problem and introduce a new sucking sound as a consequence.

XML ( or similar abstraction layer )

The perfect solution to the localized data abstraction problem, it creates a whole new layer of sucking sounds all it's own. I love xml, too bad that it is such a pain in the neck at times. Like when I use it for configuration but then it doesn't break until I consume it at runtime, then I get to spend a few hours trying to figure out what values were valid for that field, and where the field is in the many xml configuration files. Or try my favorite music, XSLT for XML transformations. Ouch.

IntelliJ ( or any other IDE )

Every tool and abstraction fits this same paradigm. For example, I've been told how great IntelliJ is. I got a license but didn't get past the setup because my groovy plugin gave me some error message. TVOM was the promise, again it's that music of the sucking sound ringing in my ears. It takes time to setup and learn even the best IDE.

No, this was not a fair test. But is it ever ?

Cant We All Just TVOM ?

TVOM is not a verb, so no. We can't just TVOM.

But if we could, that would be a good thing, because I want my cake and be able to eat it too. Great benefits without all the crappy downstream consequences.

Example: UI

Let me just write a UI at a permanently abstract layer using any tool. Then something else converts it to all 100, 200, 300 different UI frameworks and they all work with no loss in the translation. Because I don't care about UI frameworks, I just want to use what fit's my customer's current needs. This is different in every situation.

Hey, I can dream, can't I ?

Example: Platform

Java does it best, and is certainly as close to creating musical sounding sucking sounds as anyone. I just need my time back that I spend studying the hundreds of APIs, approaches, version iterations, toolsets, JSRs, etc.

Example: Microsoft

Microsoft does as good a job addressing the T part of the TVOM as anyone, they just have this odd relationship to the M thing, and mostly it's me having this funny feeling about the needle and the feeding tube and the bottle and the gurney dragging around wherever I go. In my dream world, everything would be as easy and mindless as being a dot net or even just VB programmer. One toolset to learn, and it works great. No Mildred, I'm not going back, just dreaming.

This is a personal preference issue of course. For some, IV bottles are a cheap solution compared to Time.

Example: Build Deploy

I'd like to get all the time spent on build / deploy etc. What  black hole ! And I want it all too - continuous integration, standardized, easy to learn, free, tons of metrics and reporting, tests run, all done for me, you name it. There is nothing in the build deploy process that I care about controlling my way, just getting it all done, and without me having to write the script.

There's More !

These are just examples for me, I am not measuring any of them as I would a true metric. Hours in, hours out, money in, money out etc.

I just want to get my job done, without these sucking sound tradeoffs. Because none of that sucking sound is music in my ears, no matter how much I pretend.

Grails

Is there hope ? Will TVOM ever make it as an abstraction ?

Will developers everywhere begin chanting "All I care about is Time and Money !"

Of course not. But if they were, people like Graeme Rocher, creator of Grails, might be getting closer. He definitely understands TVOM as a net gainer. He still creates plenty of his own sucking sounds, which are indeed sweet music to some of us (his use of Gant, for example, very sweet even if still very non-standard).

I can get a grails app up in minutes, deploy it, run it etc. The sucking sound is from some of the other stuff that comes down stream, but still a lot quieter a sucking sound than in many other alternatives open to me.

Recommended, even if not adequate. Going in the right direction.

This post was updated on Friday Feb 15 2008 to remove a slang usage that was keeping it from being posted on javablogs.