If I walked into a room of management consultants and asked how many were “coders,” I doubt I’d get many raised hands. If I asked how many of them were Excel power users, I bet everyone would volunteer.
But I’d argue those Excel gurus are actually writing software. In fact, a few years ago Microsoft added a feature to Excel — a flexible lambda function, for my fellow math and computer science readers — that made Excel Turing-complete. (If that means nothing to you, it’s a formal way of saying that a system like Excel can, slightly oversimplifying, express any program you’d ever want to write.)
In this way, I see a real parallel with one of the many ways that people are touting the power of Chat GPT and its ilk. When you can ask a large language model to generate source code for you, everyone’s a coder.
Which is incredibly powerful. Computers are much better than we humans at certain tasks, like manipulating huge amounts of data or searching through vast amounts of text for keywords or concepts.
But it’s also incredibly dangerous to give everyone the ability to write a piece of software without really knowing what’s going on. For the same reasons I worry about anything even remotely complicated coded up in Excel, I worry about the downstream consequences of giving non-experts machine-generated code for real-world problems.
It’s a delicate balance. Excel is perfect for something simple like tracking your vacation expenses with friends, and then figuring out how to divvy up what everyone owes. Or it’s perfect for doing basic data analysis on a survey with a few hundred responses rather than spending weeks mastering the basics of something like Python or R.
Excel turns everyone into coders, and that’s pretty great.
On the other hand, I’d very strongly argue that the minute you’re doing something even a little bit intricate, using Excel is a recipe for disaster.
Stories of Excel-related problems are everywhere. Late last year Microsoft added a way to turn off automatic date conversion because genetic researchers’ data were corrupted when, say, “MARCH1” was converted to a date (as in the 1st of March) instead of being kept as-is, representing a gene. That’s after the genetics community decided these problems were severe enough it proactively went through and systematically renamed any genes with a date-like name. “MARCH1” became “MARCHF1.” Over on Ars Technica, Simon Thorne wrote a great piece recently that dives into more of these pathologies, too.
Which illustrates the reason I think Excel is such a bad medium for anything other than the simplest programs. It’s incredibly difficult to systematically audit and test what you build.
A more orthodox programming language — Python, Java, Go, whatever — is designed to make snapping pieces together easy. If you need to encode complicated logic, you’re not programming by referencing cells. You can use named functions or packages, which you can, for example, open and look at in a separate window. Assumptions that are implicit in Excel, like what kind of data a cell is working with, are made explicit in “real” programming languages.
This is the same reason it’s so much easier — once you know what you’re doing — to do more intricate data analysis in Python or Stata than it is in Excel. You can write your logic out in a big, roomy space, not within the confines of the Excel formula bar.
These languages offer robust systems for writing systematic tests of your code. You don’t have to rely on instinct or checking two or three cells to verify everything checks out. This is especially important because bugs — as anyone who’s written more serious software knows — can often be incredibly subtle, even when they have huge consequences. As the piece in Ars explains, for example, a tiny bug in an Excel spreadsheet caused an error worth about $90 million.
A study cited in the same piece finds there is, on average, one major mistake in any Excel sheet with over 150 rows. Even putting aside the value of testing, I’d be really surprised if the error rate in, say, Python code is that high. A piece of source code with 150 lines is pretty easy to read, unlike an Excel sheet of similar size.
In that way, Chat GPT-generated code is somewhat better than Excel. If you needed to, you could audit the generated code. Unlike an Excel file, you can see everything splayed out in verbose, easy-to-read source. Or you could snap it into one of the language’s testing frameworks and write systematic tests of the system’s behavior.
Of course, it can be hard enough to get software teams to write tests and good code even when that’s their job. Often because the same kind of people I imagine are generating code with Chat GPT see it as a distraction. Superficially, writing good tests doesn’t deliver anything to anyone.1
And LLM-powered tools let people easily generate logic and code that’s far beyond what’s practically feasible in Excel. Which means there are more places for subtle problems to lurk for people who aren’t aware or systematically trying to find them with tests and code reviews.
None of which is to say that we should ban Chat GPT or stop using it. Far from it. So many of the people I know who write software full-time are in love with LLM-powered tools to accelerate their ability to write code. There are even companies cropping up to help you write better tests for your software using LLMs.
Instead, I see this as yet another reminder that these are tools like any others with limitations and tradeoffs. Duct tape is an amazing technology. It’s great if you need to temporarily patch a hole in an air mattress or hang a temporary poster for your band’s next gig on a street corner. But I wouldn’t feel great if I learned someone had used it to secure a loose part on an airplane. You wouldn’t reach for it if you needed to hang a panting by Rembrandt in a museum and you ran out of framing supplies.
When a situation demands seriousness, I think we owe it to ourselves to respond seriously. If big decisions about money or genetic research are on the line, we should be using serious tools, not winging it with Excel or LLM-generated source code.
Bonus: A Great Review
I make no secret of my deep skepticism that The Blockchain™ has any broad, practical commercial applications. I’m also an unabashed fan of the technology journalist Molly White. At the intersection, her review of Chris Dixon’s new book. The review is very much worth a read.
Enjoy this? Have an idea for something you’d like a perspective on? Drop me a line: I’d love to hear from you.
To be clear, I don’t think is either good or true.