Are spreadsheets a true programming language?
Are spreadsheets a programming language if they often need low code solutions to fill the gap between it and software? If spreadsheets are considered a programming language, then it’s the most unique one of them all.
To master it, you have to learn their unique command line (in each cell), R1 notation, and effectively pandas (each spreadsheets own library of functions and tools). And if you’re using Microsoft, you have to learn their suite and VBA. Satya Nadella also calls it a programming language as he does here but most of the world would disagree.
If you do a simple search for “how many people can program” the answer is usually somewhere around 25M and 40M people. This clearly does not include people who use spreadsheets, since that number is more closely to be estimated at around 1 billion people and growing.
In some ways, spreadsheets are actually better than traditional programming languages. The standard A1 notation grid offers several advantages from a programming perspective:
- There is no requirement to name things since everything can be referenced by row and column
- You type implicitly. When you reference another variable/cell, you can just click the cell you are referring to and see the relationship
- There is no “running,” “compiling,” or even “stopping.” (You can turn on “manual calculations” in Excel where you can force this behavior by pressing F9 to “run,” but most people do not do this)
- There is no hidden state to keep track of in your head
- Very easy to bulk edit. Several features within spreadsheets make this possible, but one example is pressing CMD+R or CMD+D to autofill
- Unlike programming, where there are a million ways something can be broken and they can be interconnected (do I have the most updated node module? do I have the right .env file? syntax error? runtime error?), in spreadsheets, aside from a circular reference, errors are confined in the cells that they occur in
On the flip side, there are a few disadvantages to spreadsheets, and these are likely why it’s often not included in the “traditional programming” camp.
- They’re not very reusable — unlike the beautiful ecosystem of sharing code and leveraging online libraries and packages, spreadsheets basically only work for the specific use case they were built for
- The lack of names makes spreadsheets less dynamic/automatic. Most spreadsheets require more manual effort to “update” vs. the same program written in code
- You can see this when a financial analyst updates a model with a new dataset to get an answer compared to a programmer reusing their SQL queries on the new dataset
- There is less flexibility on UI/UX given a spreadsheet’s confinement in a grid. Even though you can technically build Twitter with a spreadsheet, you could never make it look as good
- This admittedly depends on how a spreadsheet or program is built, but debugging tends to be harder in spreadsheets because you must evaluate formulas in every single cell
The other argument is that spreadsheets is more akin to the IDE where you do some functional programming versus being a full on programming language. And in that IDE people generally build things that are “one-off” and not full on “software applications,” which is an important distinction. What people build in spreadsheets today tend to be one off calculations and report that people just start from scratch, compared to software which tends to be “unbreakable,” “composable,” and “reusable.” But does this really disqualify something as a programming language? If I only use Python in Jupyter Notebooks where I start from scratch often, I would still consider my self a programmer…
Even when someone ends up building something less trivial in spreadsheets, the long term result is different than if it was built using real programming. They tend to be less maintainable and have very little documentation with most of the knowledge sitting with the original author. If you’ve ever worked at a company that had a large and complicated Excel file, there is always the expert for it. And if that expert ever left, the file often became useless with the next person only using pieces of it while rebuilding the rest with their own logic.
Lastly, and paradoxically the least and most important point, is that most people I’ve met find spreadsheets to be an “easier” endeavor compared to programming and therefore exclude it as a programming language. Even the best spreadsheet users don’t usually consider themselves as programmers and view it to be an order of magnitude harder (just ask your finance and investment banking friends).
My conclusion is that spreadsheets are a programming language, but not used as such because there is less tooling to make it accessible and the culture behind it is not there. However, in my opinion, I think it’s important to consider it as a programming language universally. Historically, we’ve heard about the shortage of programmers in the US, but that’s because it excluded one of the most popular programming languages in the world. Given how much “easier” people consider spreadsheets to be than programming, improving spreadsheets may be our best bet to make everyone a programmer!
Our goal at Subset is to make this transition happen by providing tools to allow spreadsheets to build more reusable apps and change the culture to one where people share their code and apps for others to reuse. Why is that important? If more people have confidence in their ability to build stuff using spreadsheets as a programming language, it’ll result in a stronger, more creative, and more productive world. Given that there are 750M to 2B spreadsheet users, the impact could be astronomical.
What do you think? Do you think spreadsheets are a programming language?