, 16 tweets, 4 min read Read on Twitter
A key superpower of spreadsheets is that a beginner can just store some data in a table without any formulas... which is *actually useful* for achieving real goals

Unlike, say... printing "hello world" onto a screen
Even advanced spreadsheet users continue using the system in this most basic of ways. How many programming systems can say the same?
"Learnability" isn't a standalone property of a system, it depends on how well people's real goals correspond to the early wins they can achieve in the system

Immediate utility -> motivation to keep using -> deeper learning
To be "learnable" by adults, perhaps an idealistic computing medium needs to start by providing practical wins for their busy lives:

If I can use the tool to get through my email, maybe eventually I'll start programming in it / running science simulations / making art
Bonnie Nardi, in A Small Matter of Programming:
Andrea DiSessa, in Changing Minds:
Obviously, storing tables of data isn't the only option for a useful first step. For example @coda_hq is exploring "writing a document" as a foundation for computing.

Fun to think about what other options are out there...
Another nifty thing about spreadsheets:

Autofill achieves some key benefits of abstraction, without actually introducing abstraction.

It's just a robot that quickly copy-pastes a formula 100 times, tweaking cell references. Easy to understand what it did.
Once you've autofilled, you can instantly see concrete invocations on every input case, which is super helpful for debugging. "Oh, there's an error on just that one row"

"Real programming" environments could learn from this
You can also easily override the logic in special cases for specific inputs. "For February, we want a different formula since it's a short month"

True, can be hard to maintain later, but super easy to set up and often gets the job done
This approach is far from perfect--complete lack of abstraction can cause many problems down the line.

But for simple programs with small input sets, I think it's a surprisingly elegant mechanism.
Seems like this could have limited applications in fuller programming languages too.

Instead of writing a complex nested conditional, just make a decision table specifying the behavior for every single possible input!
@jonathoda has done thought-provoking work on "managed copy-paste" that goes beyond Autofill, thinking about how to reconcile different "copy-pasted" versions of behavior. (a key challenge for mitigating the downsides of this style)

vimeo.com/287270545
This topic also reminds me of @dan_abramov 's recent talk at Deconstruct, which cautioned against abstracting too eagerly. Sometimes inlining is the right thing to do.

@hillelogram has written about the elegant power of decision tables.

If you squint you can kinda see these tables as spreadsheets!

hillelwayne.com/post/decision-…
Some have brought user-defined functions into spreadsheets, eg Peyton Jones, Burnett, and Blackwell:

microsoft.com/en-us/research…

Interesting work, but seems focused on bringing "normal abstraction" into spreadsheets, rather than finding new point in tradeoff space of abstraction
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to Geoffrey Litt
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!