Make up your own rules of probability
johndcook.com
johndcook.com
One of the things that most puts me off from using spreadsheets is the difficulty of validating calculations. The formulae themselves are not visible, so it takes a lot of mousing around to convince yourself the cells do what you think they should. For example, I've seen problems where a long "vector" calculation is correct in the upper reaches, and wrong down below, due to failure to completely "fill down" the calculation.
I wonder how many of the spreadsheets studied by Baggerly and Coombes expressed input errors, rather than errors of understanding?
To toggle formulae visibility in Excel hit: ctrl+tilde(~)
And yeah, I understand that spreadsheets were never designed with the idea that people who would use them to enter long complex formulas or for purposes where defect detection would be really important, but that's how they're used in the real world.
Google Spreadsheets is catching up fast (and has even surpassed Excel in quite a few areas), I'm hoping that this motivates MS to make more improvements.
Admittedly, Excel has a smoother editing experience (which is the real issue here) and is probably better suited for more resource heavy tasks, but Google Spreadsheets excels [intentional] in the following areas:
API -- http://code.google.com/apis/spreadsheets/
Scripts/Templates -- http://code.google.com/googleapps/appsscript/
Forms -- http://docs.google.com/support/bin/answer.py?hl=en&answe...
External data functions -- http://docs.google.com/support/bin/answer.py?hl=en&answe...
Revision History --
Some of this might be achievable in Excel, but it's not integrated as well and requires much more wrangling (e.g. VB scripts).
Or, rather, Excel's designers spent very little time and effort into support for non-trivial formula creation and use.
But, if we all seem to agree that Excel is not the place for serious calculations, can we fairly continue to take shots at Excel for being bad at supporting them?
i.e. When I see people maintain non-trivial web apps by opening notepad against production code, it never occurs to me to complain that notepad should have syntax highlighting, collaboration and version management, etc.
But with something like making the formula editor reasonable, I think they do have some blame. Excel costs a heck of a lot more than notepad and it is billed as being a serious tool for professionals to use.
A very good friend of mine worked for a major aerospace company that used Excel spreadsheets for almost all engineering. I'd say the biggest problem is that if you're doing important calculations in Excel, then you're completely ignorant of the last 40 years of research into defect reduction and detection in computer science. That ignorance is not completely unintentional either: there were a lot of people who literally pride themselves on not being like the dumb computer folks.
Plus, if spreadsheets are your tool, you likely have very bad tools. So when you make a spreadsheet to run the power budget for satellite A, the obvious thing to do when satellite B comes up for development is to copy the spreadsheet containing the analysis from sat A, change the filename and bury it somewhere on the shared network drive. Then, if you find a defect in the spreadsheet, you have no way of tracking which copies have that same defect because they're scattered all over the shared drive.
In any event, my friend found tons of bugs in spreadsheets, many of which were actually important. Probably the best bug involved a power budget for satellites that inverted electrical current so instead of comparing current to a max theoretical current value, it compared 1/current to the max value.
It's so clearly the wrong thing, and yet the authors of these beasts are always really pleased with their efforts.
Besides the "old shoe" feeling of Excel, I think there's something about the automatic updating done by the spreadsheet that users find gratifying. You alter a cell and the program launches into a bunch of updates automatically. It's like seeing the array of blinking lights.
Even many papers in computer sciencey topics leave out critical implementation steps in describing algorithms and approaches; even a mediocre implementation makes the authors assumptions’ and precise meanings much more explicit. Often (though not always) code is as readable or more readable than mathematical formulae.
Each column was populated with a recurring formula, for example lets say that column A had something like "=D3+E3" in row 3 and column B had "=D3-F3" in the same row, filled down the whole sheet. We factored out the repeating patterns, put them into user-defined functions, and found that we got different results to the original sheet. After spending a while trying to work out what we'd got wrong, we double-checked the original. Halfway down column B it switched from using its own formula to using a mis-copied version of column A's. So half the numbers in column B were wrong. In effect, the metric that the business had been running on for several months had been meaningless.
The company never bought our software, but that may have been because they disappeared a month or so later.
There is actually a research group devoted to studying spreadsheet risks: http://www.eusprig.org/