The DIY Software Revolution

Airtable is one of the more interesting online products that has come out in the last couple of years. With my designer hat on, I thought it was nuts.

But when I stepped back and looked at it holistically you can see how clever it is. It’s using the same principles as a spreadsheet, but with online smarts (APIs for example) that make it extendable beyond what the spreadsheet can do. And just like the spreadsheet, it can be used for simple tasks or complicated reporting tools. It’s possible to push the possibilities further. Sometimes it’s worth taking off your designer hat.

The CEO Howie Liu touches on this approach in the talk above, as well as giving a quick history of software development approaches that contain useful ideas for today.

My notes (there’s a tonne of notes for this talk) 

Designers take complexity and assess not important dimensions (then remove these from the user view).

Function and form

Data model and logic – function

Visual layer – form

For example, Weebly and Squarespace prioritise the form, not the function.


From the 60s to today the way we think about programming hasn’t changed that much. It’s a bunch of code in text.

Looks as daunting as it did in the 1960s.

“We haven’t made the same leaps and bounds with programming”.

Writing code = a narrowly scoped way of understanding a problem. Code doesn’t equal software.


Series of instructions that tells a computer to do something.

The tools we use to manage and manipulate information.

Lacks focus on the value of humans who use information.

Information could be:

  • Your Pokemon card collection
  • Cattle
  • Equipment.

Human scale information – represents information as we know it.

Check out Bonnie Nardi’s work. She is a HCI academic.

Computer deals with information/data. -> Knowledge sits with the person.


They learn that their changes affect the output of the system.

MIT – scratch

Program structure


is represented as puzzle pieces. They have visual affordance.

They can be pieced together to make the system do certain things.


Game development software for kids.

In the past there has been different radical approaches to rethinking programming. Visual programming is one way.

Text-based code is inherently linear.

Flow-based is one way of rethinking this.

Quartz composer etc.

Mathematic Hupercard

Myst – visual system.

Why isn’t there more impetus to do more about visual programming? 

It’s hard to take novel approaches. Places the burden on the developer to put in sweat and hours.

Spreadsheets are a good example of a user-centred ‘programming’ tool.

How do you model the data of the world around you?

Google, Facebook, Microsoft.

Tools to manage your own informational version of the world.

In 1990s innovation died out in terms of software/programming approaches. This was a convergence of reasons:

  • Internet
  • Lots of tools with a narrow value proposition started popping up
  • Microsoft dominated and washed divergent voices out of the market.

We moved toward simplified experiences with our systems.

In design we looks for ways to reduce choices.

Perhaps we need to start designing for possibilities and tinkering.

“Junk food push-button experiences”.

User as driver approach has become the widespread model.

For software to get to the next step, we need to look to some of the (programming) ideas of the past (1960s – early 90s).

Let’s use kits as a paradigm to design our systems. 

Keep the barrier of entry low.

Cater for shallow, immediate experiences but also provide depth to allow the person to achieve mastery/bend the system to their own will.

“A lot of applications we use now are very shallow for example Dropbox. But for kits we want it to be an onion”.

  • Declarative – here’s the constraints. Solve within the constraints.
  • Imperative – do x then y.

Here are the dimensions of systems:

  • DOM
  • Logic
  • Interface layer.

Instead of prioritising the visual layer (Squarespace etc) why don’t we provide tools to manipulate the logic layer.



Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>