(2021-07-11) Litt Function Follows Form

Geoffrey Litt: Function Follows Form? I’ve been spending my summer (remotely) at Ink and Switch, the research lab where I worked on Cambria last summer. This time around I’m working on rich text editing, together with Slim and a few other collaborators. We have some ideas about how collaborative rich text editors (like Google Docs) could better support the way people actually want to work together, and how CRDTs like Automerge could help enable those use cases. Not much to share widely yet, but get in touch if you have thoughts on that topic!

So here’s a question I’ve been thinking about lately: What defines a piece of software?

One way to answer is by describing the kinds of tasks the software helps you perform.

Another way to answer would be to describe more literally the capabilities the software provides. You could say, “It gives you a series of landscape boxes that you can put text and shapes into.”

Joel Spolsky, who worked on Excel for a while, notes that many people actually treat Office software in the second way: The great horizontal killer applications are actually just fancy data structures.

Most Excel users never enter a formula. They use Excel when they need a table.

Word processors are not just tools for writing books, reports, and letters. They provide a specific data structure: lines of text which automatically wrap and split into pages.

PowerPoint is not just a tool for making boring meetings. It provides a specific data structure: an array of full-screen images.

In realtime collaborative software like Google Docs and Figma, people often find ways to take advantage of the shared “space” metaphor beyond the explicit purpose of the tool—it’s common to write “hey I’m editing this section” into the body of a Google Doc

I’m obviously not saying PowerPoint is the culmination of the vision of personal computing, but I am saying, it’s neat that people find ways to use software in new ways, and I wonder: how can we encourage more of this kind of thing?

An important sub-problem is: how can we support people in mapping tool capabilities to end goals? That’s a critical step in unleashing the power of horizontal tools: you need to be able to find an appropriate general toolkit, and feel confident that it’ll get the job done, even if your use case isn’t listed on the marketing page.

this process isn’t necessarily easy! It’s arguably a big part of what salespeople, designers, and product managers do—think through the needs of a problem, and find ways to solve the problem with a given toolkit. But I also think this is a skill that anyone can become competent at with a bit of practice.

One simple but effective pattern here is “templates”

Platforms like Notion and Airtable clearly put a ton of effort into templates for this reason.

One approach I find promising here is the work my advisor Daniel Jackson has been doing for a while on describing “concepts” in software designs. (Here’s an essay

“How would you describe PowerPoint?” isn’t just a question for a user observing a finished product. It’s also a question for software designers. In your design process, do you choose to emphasize use cases, or structural form?

DiSessa describes a “nightmare bicycle” where the gears are labeled not with numbers, but with icons describing the best situation for each gear: smooth uphill, smooth downhill, gravel, crossing railroad tracks....

something is deeply wrong with this design.

There is no sense of systematicity or completeness in the mechanism.

taken too far, this design process infantilizes the user

If all we do is check off individual user stories one by one, it seems like we too often end up with a nightmare bicycle: chock full of specific uses, but deprived of any coherent structure. We should aim for structure that people can grasp and reuse. Computers as medium, not appliance. (generative)


Edited:    |       |    Search Twitter for discussion