Brilliant idea/URL.
It’s often true though. So many things I think “I could make an app for that” I wind up just using a spreadsheet for. At least it helps me explore the use cases more deeply for when I’d want to actually take it to the next level.
I hung out with a friend while they solved Advent of Code challenges in Excel, that was a trip to watch.
One of my biggest weakness as a developer is that I can barely use excel. It's really embarrassing, especially since I've moved to a financial firm. Do you have any recommendations for becoming semi competent with it?
There was a video from Joel Spolsky - you suck at excel. That is a good starting point
Damn. Taken down! Can I get an archived copy somewhere?
Link from Reddit post: https://www.reddit.com/r/excel/comments/14zj5vz/you_suck_at_...
https://archive.org/details/youtube-0nbkaYsR94c
Just an idea but how would you advise someone learning programming/a new programming language? Probably you'd say: build something with it. So same goes for excel. Try to hook up a spreadsheet to some database, have it update automatically, have drop down lists that populate automatically from the database (e.g. have a "country" drop down and automatically populate a "region" drop down based on the choice of country) and so on. You need some BASIC and SQL for this but not much
Oh wow. Different poster same problem. Your comment made me realize that it's the "but I don't wanna!" attitude that I already know how to push through when it comes to language learning, just disguised differently. I'm still not sure that I wanna, tho...
You gotta need it ...
For a best practices introduction I would recommend a course geared toward investment bankers. Some things that should be covered are:
* Avoiding hardcoding numbers, making input cells a certain color, etc.
* Knowing the all powerful F4 key that alternates between A1, $A$1, $A1, and A$1 (and knowing what each of these mean)
* Inserting blank lines above and below a summed range and including those rows inside of the sum formula (prevents formula from breaking if you move rows around)
Other than that you can do a lot of productive things with a combination of index/match and dynamic named ranges via offset formula.
All solid advice. I learned many of these by: (1) reverse engineering other people's great sheets (formulas and VBA), and (2) watching highly skilled Excel users.
For excel/spreadsheets etc chat gpt or google gemeni are a lot more useful than for normal programming as a lot of stuff about spread sheets is explained in easy steps for non technical people to implement so that has become a treasure trove of information for llm models.
Try to do something slightly complicated and have GPT4 explain how to do it efficiently in Excel!
That's how I do it and it works great. I've gained a new appreciation for Excel.
All the spreadsheets have map/reduce stuff! It's the programming you are used to but you type into a box and reference variables by sheet location instead of by name.
Buy one (or several) of these books and read through them (pick what you find interesting): https://www.amazon.com/s?k=excel
I find I learn best from (good) books because they actually explain things coherently, and you can leaf through them to discover features and things that look interesting.
Try stepping into a management role for a while, ideally one in which you have lots of dealings with less technical parts of a business. Even if it's not for you, at least you'll have gained some insights into that side of things, and more importantly - lots of real world exposure to spreadsheets!
- INDEX/MATCH. For all given purposes, the last parameter in MATCH() is always 0 unless you want to find the nearest match
- understanding that formulas can return arrays, not just single elements (easier in more recent versions of Excel which have made this more consistent for every formula), so you can e.g. AVERAGE(IF(A1:A100>100,A1:A100,FALSE)) get the average of the values between A1:A100 which are greater than 100. the FALSE parameter can be omitted there but I left it in for clarity. Interestingly this means AVERAGEIF() is just syntactic sugar, so I prefer to avoid it. it makes it easier to, say, change to MEDIAN(IF(...)) later, since MEDIANIF() doesn't exist
- if you combine the first two bullets above, you'll enter the fifth dimension
- don't ever hardcode a value if you can refer to it somewhere else. want to use INDEX(MATCH()) and AVERAGE to, say, take some average value over some time period? put the start and end dates into their own separate cells with no formulas, and then refer to those cells in your formula. if you later need to change the time period, you won't have to modify all your formulas, just those values
- LET() is strange at first but super powerful. most people still don't use it
- Separate data from presentation. This point can't be stressed enough. I care about it so much I'm literally building an Excel competitor to enforce this. If possible, separate raw data, data transformation and data presentation.
- most people know you can name cell ranges and refer to them in your formulas. most people don't know you can also name formulas and refer to them elsewhere. your "average value over time" calc doesn't even need to be in a cell anywhere, it can just exist as a defined value in a named range. now named ranges are hard to see (only visible if you open the name manager), harder to debug (you basically get just a #VALUE error most of the time, forcing you to copy-and-paste the named range into a cell to debug it) and they get copied to other workbooks when you copy-and-paste across workbooks, which makes them super messy.... but for short formulas they can be pretty nifty
- LAMBDA() is even more recent than LET() and basically makes named ranges more useful. even fewer people use it
The MS documentation for Excel is a pretty good resource to learn from these days, with text descriptions for just about every function, and videos for most too. This page [1] is an especially great resource. It's got a "top-10" list, which is a good place to start, as it covers the majority of things you'll see in a normal business document.
After those 10, they break them down by category, and have one for Financial Functions, which is going to be useful for you. Similarly, the Logical, Math & Trig, and Stats functions, will all be useful for looking at a Finance firm's spreadsheets.
[1] https://support.microsoft.com/en-gb/office/excel-functions-b...
I wonder at what point we stop calling them "spreadsheets" though.
You mention Excel, and a bunch of us do it Google Sheets, but at this point it's not about sheets of data anymore and more about the interface and runtime, and we have full applications running in it.
I remember a colleague running API tests inside his Excel sheet to more easily check for the different parameter combinations, but telling everyone he was still using Postman just to avoid discussing it.
A spreadsheet is really just an easily accessible, visual, functional programming environment. I think the question is not how to make spreadsheets more programmable, but how to make programming IDEs as simple as spreadsheets.
From the discussion of Brad Myers' classic 1990 paper (originally published by the ACM CHI conference in 1986, then updated in 1990 in the Journal of Visual Languages & Computing), "Taxonomies of Visual Programming and Program Visualization" (where Brad dropped by to answer questions):
https://news.ycombinator.com/item?id=26057530
https://www.cs.cmu.edu/~bam/papers/VLtax2-jvlc-1990.pdf
https://news.ycombinator.com/item?id=26061576
https://www.reifyworks.com/writing/2017-01-25-i-was-wrong-ab...
Excerpt from "Taxonomies of Visual Programming and Program Visualization", by Brad A Myers, 1990/3/1, Journal of Visual Languages & Computing, Volume 1, Issue 1, pages 97-123:
Spreadsheets, such as those in VisiCalc or Lotus 1-2-3, were designed to help nonprogrammers manage finances. Spreadsheets incorporate programming features and can be made to do general purpose calculations [71] and therefore qualify as a very-high level Visual Programming Language. Some of the reasons that spreadsheets are so popular are (from [43] and [1]):
1. the graphics on the screen use familiar, concrete, and visible representation which directly maps to the user's natural model of the data,
2. they are nonmodal and interpretive and therefore provide immediate feedback,
3. they supply aggregate and high-level operations,
4. they avoid the notion of variables (all data is visible),
5. the inner world of computation is suppressed,
6. each cell typically has a single value throughout the computation,
7. they are nondeclarative and typeless,
8. consistency is automatically maintained, and
9. the order of evaluation (flow of control) is entirely derived from the declared cell dependencies.
The first point differentiates spreadsheets from many other Visual Programming Languages including flowcharts which are graphical representations derived from textual (linear) languages. With spreadsheets, the original representation in graphical and there is no natural textual language.
Action Graphics [41] uses ideas from spreadsheets to try to make it easier to program graphical animations. The 'Forms' system [43] uses a more conventional spreadsheet format, but adds sub-sheets (to provide procedural abstraction) which can have an unbounded size (to handle arbitrary parameters).
A different style of system is SIL-ICON [49], which allows the user to construct 'iconic sentences' consisting of graphics arranged in a meaningful two-dimensional fashion, as shown in Figure 5. The SIL-ICON interpreter then parses the picture to determine what it means. The interpreter itself is generated from a description of the legal pictures, in the same way that conventional compilers can be generated from BNF descriptions of the grammar.
10. Conclusions
Visual Programming and Program Visualization are interesting areas that show promise for improving the programming process, especially for non-programmers, but more work needs to be done. The success of spreadsheets demonstrates that if we find the appropriate paradigms, graphical techniques can revolutionize the way people interact with computers.
https://news.ycombinator.com/item?id=26061279
http://www.cs.cmu.edu/~bam/acronyms.html
It an very different definition of visual programming to claim a system where you don't actually see the code is "visual programming”
In a text based language you see the code as text
In visual programming you generally see the code as a connected graph of nodes like Unreal Blueprints
In most spreadsheets you don't see the code. it's all hidden as formulas in cells and all you see is the result of each formula.
I'm not saying a spreadsheet isn't a programming environment but it's hard to see it as "visual programming" to see at most one line at a time
Seeing all formulas in Excel is a menu-button click away:
Formulas tab > Formula Auditing group > Show Formulas button
This is by far the most comprehensive overview of spreadsheets related to programming that I’ve ever seen. Thank you for putting this together.
There's also this paper by Alan Kay that talks about the power of spreadsheets:
https://worrydream.com/refs/Kay_1984_-_Computer_Software.pdf
You can feed postman a CSV to test parameters with. You can also do it on the CLI with Newman.
Once you've decided to go with Excel it becomes pretty different from just feeding an array of values. You can autogenerate the combinations applying rules on what to avoid, fuzzy the values, get the result of an API transform it and feed it to another API etc.
I'm not recommending any of this, but it can go as far as you want...
I think it still becomes about the data. If using a sheet as an app particularly with sharepoint, data integrity and merging multiple users often becomes a problem.
I run one for a financial services firm and often get "excel couldnt merge changes, want to save a copy or discard". We tested this out, 2 users make editing different sheets on a single excel workbook hosted on sharepoint and excel can't figure out how to merge. If someone is on VPN and connection drops this also often occurs.
This is why for all its faults and limitations, Google Sheets is astronomically better than Excel for collaboration. There is one single source of truth, will full change history and undo-redo of the entire spreadsheet or individual elements, plus comments and chat.
Check out "Google AppSheets". I've only scratched the surface while investigating other stuff but it's basically "drag-and-drop mobile GUI builder w/ sheets as a backend". If it were 2005 it would SLAY so much code. As it is, it seems really useful but the outcome seems a bit generic for modern tastes.
This seems quite hidden. Googling "google appsheets" results in "did you mean 'google sheets'?" and showing only results for google sheets unless you specifically then request AppSheets.
It sounds cool, but I'd hate to rely on it since Google will probably shut it down.
I am not using them so it should be ok for now. Once I start using them it’s almost guaranteed that they will shut down that service.
Seems to be because the actual name is AppSheet and not "Google AppSheet" (even though it is mentioned in this way on their website in some places).
Requesting just "AppSheet" gives the right result.
love appsheets, very powerful.
Our company used to run completely on Google spreadsheets (a lot of it was written by the CEO). It worked, but at some point, it became a convoluted unmaintainable mess.
First, we partially switched to Airtable, but soon abandoned it in favour of our own internal node/python tools. The company is now a lot larger and the tools are more robust/capable/clean now, but at the same time, they are much less flexible than the old spreadsheets.
Why is this downvoted? Many Wall Street fixed income trading desks were the same before 2010. What you wrote is true for many different types of businesses. A huge amount of sales (customer management) tools are written in Excel/VBA. They work well. It is a great platform.
“ they are much less flexible than the old spreadsheets.”
I have seen that several times while I was a consultant. People run their stuff on spreadsheets. It’s a big mess but things get done . IT comes in and starts producing “professional” systems. Months of requirements gathering, then they deliver something. It’s not 100% right so people need to write tickets. IT may or may not make the changes. If they make a change it takes forever. People still need to do their job so they go back to spreadsheets.
That sounds wild. Do you or your friend have anything to share about this?
Related: Excel as ESports parody...
https://www.youtube.com/watch?v=xubbVvKbUfY
https://www.youtube.com/watch?v=ICp2-EUKQAI
Well, the real thing exists as well
https://www.youtube.com/watch?v=UDGdPE_C9u8
I'm confused... are you just commenting on the name of the website itself or the content?
The content itself is about demonstrating how an LLM/Neural net works using a spreadsheet and is a play on the title "Attention is All You Need". It has nothing to do with using a spreadsheet for most of your use cases.
And the author's comments on the difficulty of doing matrix multiplication in Excel suggest that he doesn't _actually_ believe that spreadsheets are all you need.
XKCD 2180, https://xkcd.com/2180/
LOL that’s totally me. Thanks for posting.
it's like all the current gaga over RAG and vector dbs when the real ones just use numpy to prototype
Thanks! There's a truth to the name beyond just the play on the transformers paper. Definitely have thought about how many SaaS apps could be a spreadsheet and vice versa and often use them to create mini-apps (often via apps script).