Software and Money are Both Tools

Imagine a civilization that relied on bartering. You get this if I get that – tit for tat, apple for orange, donkey for horse, food for water. Commerce would be challenging: let’s say you were an apple farmer and wanted to trade apples for oranges with orange farmers. However, because the orange farmers only like to eat peaches, they would be unwilling to trade. To get oranges, you would need to first find someone willing to trade peaches for your apples and then trade those peaches to the orange farmers. That’s a lot of work getting oranges. You can imagine how much more work would be required to get more complex items. If only there were some easier system of trade!

Oh wait, there is: money! Money is a universal currency that facilitates trading among owners of different products. Instead of trading apples for oranges, you can trade apple for money (sell) and then trade the money for oranges (buy). Since money is used by everyone, the orange farmers could then use the money you paid for their oranges to buy peach, thereby saving you the trouble of trading apples for peaches

Fundamentally, money is a currency that facilitates trading among a community and solves the problem poised by bartered trading. It is a tool to facilitate getting stuff you want or need.  


Imagine a civilization without software. There are no cars, computers, phones, alarm clocks, or electronics. Life would be/was different. If only there were some way to quickly tell a friend to meet up in 5 minutes or to download Taylor Swift’s latest hits. How much easier life would be!

 Software (along with hardware and other technologies) solves these problems. It is common nowadays to text a friend to arrange a meetup or to fly across the country to visit a relative. Software has advanced every industry and in some cases, has even cannibalized other industries, such as type writers.

 Fundamentally, software is a bunch of instructions telling machines how to solve problems too complex for humans to solve, and in doing so, it augments us to surpass our own biological limitations.


Both money and software exist to make our lives easier. The former increases communication among ourselves; the latter increases communication beyond ourselves. Both of these are tools whose usefulness is determined by the problems they solve.

 Money, often represented by coins, is almost useless until society assigns it a value. It is an agreed-upon mechanism for replacing bartering, which is simply the exchange of goods and services for other goods and services. Thus, money is important but it also has limitations: not everything can be bought since not every good or service can be exchanged for. Money cannot buy something that doesn’t exist (although it is an incentive for finding new discoveries); it cannot buy love (it sure can buy fake love though); nor can it buy happiness.

 Its limitations mean that money is not power. Money is simply purchasing power and since it can’t buy happiness or emotions, it is important to not be carried away with the goal of making more money simply for the sake of making money. Having excessive money doesn’t guarantee success or fulfillment; it only represents potentially getting better goods and services but if we don’t want these better goods or services, then does it still make sense to work so hard for the extra money? The equivalent analogy would be to work hard amassing a huge toolbox filled with tools that will never be used. Yeah, not very useful. On the other hand, although money doesn’t guarantee happiness, lack of money often guarantees miserableness because of the inability to purchase life necessities. It is beneficial to view money not as a mythical substance but simply a tool whose usefulness depends on what it can buy.

 As money is a common exchange system for humans, software is a common communication system for machines. Similarly, software, often comprised of thousands to millions of lines of code, is useful only when it solves a problem. Even beautifully written, highly maintainable, and naturally extensible code is not useful if it fails to solve a problem (unless that problem is to learn how to write beautiful code) or if it aggravates an existing problem.

 As money facilitates our lives, so too should software. There’s a huge difference between writing beautiful software for the academic or intellectual satisfaction and using software as a tool to solve practical problems. The former is for enjoyment; the latter is to eliminate existing problems. As such, when writing software, it is important to know if you’re writing for academic/learning pleasure or to solve problems because they require approaches.

 Seeing software as a tool adds perspective to design decisions. If the tool would be used only once, development speed would be more important than maintainability and as such, it would be better to quickly write bad but working code than to excessively dwell on writing quality code. On the other hand, if the tool will be used by many clients for a long time, writing maintainable code makes more business sense. How we approach software is determined by the problem it is intended to solve.

Money and software are both tools designed to solve problems. On their own, they are not so useful. After all, most people would agree that a phone is more useful than a thousand coins or a million lines of incorrect code. But when they are used to solve problems, they become essential to our daily lives.

Sharing is caring!

Leave a Reply

Your email address will not be published.