Value of Money
What is the value of money? I mean, if you have a dollar, you have a dollar. Isn’t a dollar the value of one dollar? Yes. But one dollar might not be the value of the money you spent with face value of one dollar. In other words, the one dollar is the face value, the actual value of the one dollar you have spent might be higher or lower than one dollar.
This is not very deep and should be easily understood. Let me use a simple example.
For instance, on Amazon.ca, one litre of saline solution is about $20CAD. If you go and buy some table salt and dissolve it, I bet you will get one litre of saline solution with a few tablespoons of salt. So, what is the value of the $20 versus the, say one dollar, of making saline solution yourself with table salt you can buy in a supermarket? It depends what you use it for.
I personally will be very reluctant to inject the saline solution into my body. I would also be very reluctant to inject that saline solution I can buy from Amazon, to be honest with you. Medical grade saline solution is about $100CAD per litre, it seems.
Easy. Simple. But why?
Then, when you see a $23 million dollar toilet for a spacecraft, you think government waste? Or maybe the contractor is fleecing the taxpayers?
Mind you, I am not saying the contractor is not fleecing the taxpayers. I am saying we should not automatically think that way.
Value of money of the toilet you can buy in a Home Depot versus a toilet that you need to have in a spacecraft are two different things. You must consider the context.
Okay, fine, whatever, what does this have anything to do with programming, you ask?
A very common complaint I have heard over the years is that programmers are too expensive. An executive of a very successful company once asked me why it would take her IT department one week to create the same report that she could whip out in a few minutes with Excel. At that time, I just smiled. She was right, of course. And she was wrong. This is the equivalent of value of money for programming.
I had a system that did not touch for eight years. When I needed to revive the system, I simply re-compiled and it worked. It was written in Java. After a round of testing, I started updating the libraries. That is it. Java is really not “write once and run everywhere”. It is still mostly “write once on one system and it will run on that system”. Assuming that system is Linux.
Would I have the same luck if the system was written in Python? I honestly don’t know. I am having issues figuring out compatibility issues with some software written a few years ago in Python. Even ruby was telling me File.exists is no good a few weeks ago. Without telling me what is good. Pay attention to deprecated features, people! Well, sure, but I don’t really want to touch something written eight years if I don’t need to.
But if I need to whip out a script right now to do something, Python and ruby would still be quicker to do than in Java.
What the hell is my point? Tools and context. Use the right tool for the right context. And they are tools. Check the “value of money” when you use a tool for a particular context.