More Missing Future
Eric Kidd has summarized some of the responses provoked by his piece on ‘Missing Future’.
The response that I wish I had written comes from Alex Hoffman, who says “focus away from technology, platforms and the development community, to real world end-users and their requirements” and “Come to realize that the software industry is dominated NOT by companies like Microsoft or the open source movement. That’s a developer-centric view of the industry.”
That is exactly right! This is also the same general point I was trying to get across in my own “Mr. Safe” post earlier. We in the software industry are waaay too guilty of this self-indulgence where we think that the world cares about our politics, platforms, and gratuitous layers of abstraction. In the end, the only thing that matters is whether an end user gets real-life value from your code. It’s a hard lesson for CS grads, and one that many never learn. Developers often get hung up on details like “what language should I use?”, or “should I use message-oriented or service-oriented architecture?” Some CS grads get jobs where they can focus on those details exclusively and can ignore the fact that these details are just a means to a much more important end. But for most people, that stuffdoesn’t provide real value. Here are some examples of stuff that provides real value:
- You run a chain that sells groceries. You are alerted that a batch of meat has been recalled by the meat processor due to contamination. You need to contact as many people as possible from the 5,000 people who have purchased meat from that batch and alert them. It could save lives. Most large chains have this capability today, and have used it. It’s real value, and worth the investment. And the guy paying for it doesn’t care what language, OS, or database you use as long as it works.
- You are a manufacturer with dependencies on a few hundred suppliers. At any moment in time, your company has outstanding accounts payable for thousands of orders. You have contracts with each supplier that stipulate discount/penalty schedules based on payment within 30, 60, or 90 days. The longer you delay paying, the more time the money can collect interest in your company’s accounts, so you want to pay as late as possible within the window where interest gains outweigh penalties. Scheduling payments precisely can make millions of dollars in net benefit to your company based on interest gains and reduced penalties, and can let you have better control when liquidity is urgent. This is something that almost all large companies do, and is extremely valuable. Again, the guy paying for it could care less what language it’s written in, as long as it works.
Of course, it is true that some architectures, platformsand languages are better than others for certain tasks. And the choice of architecture can have serious implications down the road. But my point is that a focus on these things is seriously lacking in perspective. In the overall scheme of things, the value is created and the money flows because you have satisfied a real-world need, NOTbecause you have made a “better” platform. You can make lots of people happy and solve lots of real-world problems without having a very good platform, but you can go broke even with the “best” platform if you are NOT making real people happy and solving real-world problems. And as far as I can tell, real-world problems that could benefit from software are infinite.