And it all started with Visicalc. The spreadsheet and the word processor are the most important computer programs ever created. No wonder Google and Microsoft still make billions from these two.
Reminds me of "Ask HN: Is the world run by badly updated Excel sheets?" [0]
You need experience to see the shorcomings of spreadsheets. No version control. No tests. In general it's good for things that don't need to evolve, but stay the same (most likely because they're short lived).
[EDIT] An example of a comment from that thread pointing in this direction:
> In general, you adapt to the excel owner's quirks, not vice versa. If you don't like it you should create an excel sheet of your own and copy/paste, which people also do.
> I knew a project manager who's job seemed to be reconciling multiple versions of a spreadsheet with different authors.
I use Google Sheets for all my finances, it's great.
I have an Expense Tracker UI within Google Sheets that allows me to submit expenses to the main sheet (currently just over 5000 rows of expenses over the last few years)
I only just recently vibe coded a web UI tool that uses a Google Service Account to add expenses to this Google Sheet for me, and then created a Progressive Web App from that so I could do everything on my phone.
In summary, Google Sheets is sometimes all you need instead of a database for very simple applications (and built for an audience of one)
I haven't used Google sheets for maybe 2 years, didn't have the need, but week ago I needed to send customer a table that will be updated every couple of days. I was surprised how slow it is. Table has 40 lines and 8 columns, static text only, and it takes 12s until I can edit it. For what it is (adding sentence every 3 day) it's ok but if I had to actually use it for myself on a daily basis it would drive me mad.
> To cut things short, always use the easiest solution to solve a particular problem and once that solution does not work for the business anymore reassess what the new requirements are and either try enhance the current solution or find an alternative that better solve the problem.
When solving a problem, solve the problem you have, not the problem you think you might have in the future, or the problem you wish you had. Your solution will prove inadequate in the future, but you are unlikely to correctly predict in what way your solution will be inadequate.
I've long argued that spreadsheets are essentially a structured programming tool for people that would never imagine they could or would program. And maybe even a gateway drug in a proportion of cases?
One thing I've learned: Never (ever) make yourself reliant/dependent on Google products. If you do get banned / locked out, it is the most AI-Kafkaesque process imaginable to regain access. And you could stay locked out for years.
I use Google sheets myself from time to time, but I regularly do backups of the sheets I'm working on, or anything important I have access to. I've been in the hole before, for reasons I still do not understand, and it was one of the most frustrating "customer support" processes I've ever experienced, and it took years.
One thing I would add is, sometimes when you need some extra complexity that's too difficult to express or build in Google Sheets, one step above it is Google Colab (or any other Jupyter notebook).
Before building a full blown app, I always ask myself: 1. can this just be a spreadsheet? If not, 2. can this just be a Jupyter notebook?
And yes, the integration between Sheets and Colab is great.
how do you upgrade some existing "thing" from a google sheet to a colab notebook?
I know of the gspread package for python... but I can't see how that gives you anything but the raw data from the sheet. any graphs and interaction (!) and such you would have to redo in jupyter.
IMO Jupyter notebook is a big step up in complexity from just writing a python script. You can put block comments in python script just fine. "let me spin up a local web server to view my comments and run my code in serial in an object oriented fashion" no thanks from me.
"Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%."
- Donald Knuth
Start with a gsheet, when it breaks build something else.
True story - I know a guy who built an application using Excel for tracking toll charges for car rentals back in the early 2000's. Over time he built out a team and an application. Piece by piece he automated things, but he initially did everything by hand, tracked it in Excel and printed it in PDFs out to his customers for reconciliation.
He sold the business for $400M. No outside capital, he was the only owner.
I suppose the issue here is trusting Google with your personal and business data. Mining that information for targeting advertising aside, it's not unheard of Google locking people out of their accounts with no reasons or obvious recourse.
I wonder what the best non-mega corp solution there is for this.
Xoogler here. For my five years we only used Sheets (called Trix internally) for everything from project management, CRM, quarterly planning, reporting, interviewing, finances and so on.
This was not because it was a Google product (we used plenty of competitors' products) but because it is so easy to make them good enough for the task that you can move on to getting the job done instead of administrating getting the job done.
I can say that even now lots of machine learning datasets are kept as rows in gSheets and processed by Python running in Colab. In our team, all our evaluations: read input data from gSheet, run model inference, store outputs in gSheet for manual review if needed, process outputs to compute metrics and plot graphs in Colab. It is great because evaluation logic frequently changes, and without Colab you would sit and wait days each time for code reviews and stupid readability approvals.
And then, of course, if you want reproducibility, you just check in Colab notebooks into the source control.
Google Sheets was phenomenal for prototyping apps and getting quick feedback from users back when I used it in 2015-2020. Back then they had this janky implementation of Mozilla Rhino underpinning their "Apps Script" engine and it still beat the pants off of anything else you could use for free.
Certainly you can shoot your feet with the various spreadsheet-isms but if you're diligent about keeping raw data pure (preferably in a completely different sheet inaccessible to users) it does a bangup job of quickly shoving a UI in front of users and letting them realize what they want and iterate on it before calcifying it into a more rigid system.
Exactly this. Worked for a startup that had dogmatic leaders on 'using the best tool' 'spreadsheets are bad' (a trope they just got from people, not having used it themselves). Ended up spending thousands on consultants to build reporting etc that ended up needing to be changed after 6 months because of business/personnel changes.
Spreadsheets are the best tool to quickly spin up and make changes to data.
I've always thought about a tool to make a 'front-end' version of spreadsheets that end users use, where the layout can be a bit more freeform (i.e. build reports and dashboards in spreadsheet, then 'select' these reports and paste them into a front end WYSIWYG tool).
Always overlooked point in these pro/anti-spreadsheet discussions:
A spreadsheet gives you a DB, a quickly and easily customized UI, and iterative / easy-to-debug data processing all in a package that everyone in the working world already understands. AND with a freedom that allows the creator to do it however they want. AND it's fairly portable.
You can build incredible things in spreadsheets. I remain convinced that it's the most creative and powerful piece of software we have available, especially so for people who can't code.
With that power and freedom comes downsides, sure; and we can debate the merits of it being online, or whether this or that vendor is preferable; but my deep appreciation for spreadsheets remains undiminished by these mere trifles.
It's the best authoring tool we've ever devised.
EDIT TO ADD: the only other thing that seems to 'rhyme' with spreadsheets in the same way is: HyperCard. Flexible workbench that let you stitch together applications, data, UX, etc. RIP HyperCard, may you be never forgotten.
To expand on the overlooked point: it gives you a DB and a programming environment (however challenged) that you can use without needing sign-off from IT. In any moderately sizeable organization, getting approval to use anything but standard software is slow and painful.
Nobody wants to explain to IT that they need to install Python on their machine, or drivers for sqlite, or - god forbid - get a proper database. Because that requires sign-off from several people, a proper justification, and so on.
Right? Spreadsheets have such a low barrier of entry. I use Google Sheets in a middle of a farm field to enter plant growing records on my cell phone. I don't even have good reception at times so the sheets are in offline mode; they'll synch when I get back to the house.
Crappy, crummy records are oftentimes better than no records. Farming is data-heavy and data-starved at the same. A learning cycle is a year, and one year is not like the other one.
Hard agree here. The value of combining database + UX + logic into a workbench is like the app we've been reinventing over and over again. It's why Visual Basic still lives :-).
And yes, not the greatest way to proceed once you know what you want, but a heck of a way to iterate quickly and identify the actual requirements.
I agree. However, so many of my use cases include a one-to-many relationship that I was outgrowing excel/sheets too quickly. Once a project added a VLOOKUP, it hit an inflection point in complexity.
I spun up a local Grist instance in my org, using SAML with our org's email authentication. It's intuitive enough that I've replaced a few shared spreadsheets with it (now with rowwise permissions) and powerful enough that I've also replaced a few internal CRUD apps.
- My own rough business accounting (download all bank statements and do some pivots and graphing. Real accountants do the real thing, but I like to have a version that makes sense to me and that is up to date)
- Personal accounting finance tracking for sharing expenses and tracking living costs over time
- Consolidated asset tracking across different projects/accounts etc, just a quick summary that's not perfect but spending 10 minutes a month manually updating it helps keep it in my head too.
- A lot of project management (we also have real PM tools, but I keep my own sheets because it's easy and it makes sense to me)
- A bunch of quick analytics (I also use metabase, but sometimes it's just faster to create a graph in sheets)
Most of the time the sheet is not the _main_ tool I use, but it is the easiest and most useful one, while the others have better integrations, safety mechanisms (I often end up with +500 or whatever in a copy-paste formula error and sometimes don't catch it), and collaborative measures (if you have 2+ people editing the same sheet you're usually going to have a bad time)
Have you heard of Fina Money? SpreadSheet works, but Fina tries to make it easier to analyze and visualize your finance data from sheets + live banks. It solves the problems you mentioned.
88 comments
[ 4.3 ms ] story [ 93.6 ms ] threadYou need experience to see the shorcomings of spreadsheets. No version control. No tests. In general it's good for things that don't need to evolve, but stay the same (most likely because they're short lived).
[0] https://news.ycombinator.com/item?id=33611431
[EDIT] An example of a comment from that thread pointing in this direction:
> In general, you adapt to the excel owner's quirks, not vice versa. If you don't like it you should create an excel sheet of your own and copy/paste, which people also do.
> I knew a project manager who's job seemed to be reconciling multiple versions of a spreadsheet with different authors.
I have an Expense Tracker UI within Google Sheets that allows me to submit expenses to the main sheet (currently just over 5000 rows of expenses over the last few years)
I only just recently vibe coded a web UI tool that uses a Google Service Account to add expenses to this Google Sheet for me, and then created a Progressive Web App from that so I could do everything on my phone.
In summary, Google Sheets is sometimes all you need instead of a database for very simple applications (and built for an audience of one)
2010's: I use Google Sheets for everything
2020's: I use Etherpad[0] for everything
[0] Or any other alternative for that matter
When solving a problem, solve the problem you have, not the problem you think you might have in the future, or the problem you wish you had. Your solution will prove inadequate in the future, but you are unlikely to correctly predict in what way your solution will be inadequate.
I use Google sheets myself from time to time, but I regularly do backups of the sheets I'm working on, or anything important I have access to. I've been in the hole before, for reasons I still do not understand, and it was one of the most frustrating "customer support" processes I've ever experienced, and it took years.
One thing I would add is, sometimes when you need some extra complexity that's too difficult to express or build in Google Sheets, one step above it is Google Colab (or any other Jupyter notebook).
Before building a full blown app, I always ask myself: 1. can this just be a spreadsheet? If not, 2. can this just be a Jupyter notebook?
And yes, the integration between Sheets and Colab is great.
I know of the gspread package for python... but I can't see how that gives you anything but the raw data from the sheet. any graphs and interaction (!) and such you would have to redo in jupyter.
- Donald Knuth
Start with a gsheet, when it breaks build something else.
He sold the business for $400M. No outside capital, he was the only owner.
https://www.seangoedecke.com/the-simplest-thing-that-could-p...
I wonder what the best non-mega corp solution there is for this.
This was not because it was a Google product (we used plenty of competitors' products) but because it is so easy to make them good enough for the task that you can move on to getting the job done instead of administrating getting the job done.
Is that the case? I find that super interesting. No sexy Slack or Teams type of thing?
And then, of course, if you want reproducibility, you just check in Colab notebooks into the source control.
Google Sheets was phenomenal for prototyping apps and getting quick feedback from users back when I used it in 2015-2020. Back then they had this janky implementation of Mozilla Rhino underpinning their "Apps Script" engine and it still beat the pants off of anything else you could use for free.
Certainly you can shoot your feet with the various spreadsheet-isms but if you're diligent about keeping raw data pure (preferably in a completely different sheet inaccessible to users) it does a bangup job of quickly shoving a UI in front of users and letting them realize what they want and iterate on it before calcifying it into a more rigid system.
Spreadsheets are the best tool to quickly spin up and make changes to data.
I've always thought about a tool to make a 'front-end' version of spreadsheets that end users use, where the layout can be a bit more freeform (i.e. build reports and dashboards in spreadsheet, then 'select' these reports and paste them into a front end WYSIWYG tool).
A spreadsheet gives you a DB, a quickly and easily customized UI, and iterative / easy-to-debug data processing all in a package that everyone in the working world already understands. AND with a freedom that allows the creator to do it however they want. AND it's fairly portable.
You can build incredible things in spreadsheets. I remain convinced that it's the most creative and powerful piece of software we have available, especially so for people who can't code.
With that power and freedom comes downsides, sure; and we can debate the merits of it being online, or whether this or that vendor is preferable; but my deep appreciation for spreadsheets remains undiminished by these mere trifles.
It's the best authoring tool we've ever devised.
EDIT TO ADD: the only other thing that seems to 'rhyme' with spreadsheets in the same way is: HyperCard. Flexible workbench that let you stitch together applications, data, UX, etc. RIP HyperCard, may you be never forgotten.
There's Decker https://beyondloom.com/decker/
Nobody wants to explain to IT that they need to install Python on their machine, or drivers for sqlite, or - god forbid - get a proper database. Because that requires sign-off from several people, a proper justification, and so on.
And yes, not the greatest way to proceed once you know what you want, but a heck of a way to iterate quickly and identify the actual requirements.
I spun up a local Grist instance in my org, using SAML with our org's email authentication. It's intuitive enough that I've replaced a few shared spreadsheets with it (now with rowwise permissions) and powerful enough that I've also replaced a few internal CRUD apps.
https://github.com/gristlabs/grist-core
- My own rough business accounting (download all bank statements and do some pivots and graphing. Real accountants do the real thing, but I like to have a version that makes sense to me and that is up to date)
- Personal accounting finance tracking for sharing expenses and tracking living costs over time
- Consolidated asset tracking across different projects/accounts etc, just a quick summary that's not perfect but spending 10 minutes a month manually updating it helps keep it in my head too.
- A lot of project management (we also have real PM tools, but I keep my own sheets because it's easy and it makes sense to me)
- A bunch of quick analytics (I also use metabase, but sometimes it's just faster to create a graph in sheets)
Most of the time the sheet is not the _main_ tool I use, but it is the easiest and most useful one, while the others have better integrations, safety mechanisms (I often end up with +500 or whatever in a copy-paste formula error and sometimes don't catch it), and collaborative measures (if you have 2+ people editing the same sheet you're usually going to have a bad time)
Some of them are AirTable like which is CRM focus, but I just want a really simple spreadsheet that is easily accessible and not from Big Tech.