Design by Principle

Recently, I had the great pleasure of watching a video of Bret Victor, talking about design and development.  It’s long, but it’s really brilliant.

Bret Victor – Inventing on Principle from CUSEC on Vimeo.

The title of the video is “Inventing on Principle”, which I think does not actually sell what is a truly jaw-dropping collection of ideas.  Bret has resolved a tremendously complex set of computer science problems in a relatively elegant manner, and in my book, that makes him a genius.

Bret is mentally riding a wave that most people can’t even see, creating a new paradigm in the “Man-Machine Interface”, or MMI.  If you don’t know what that means, then you won’t know what I’m talking about.  But it’s a BIG problem in fact.  This problem is responsible for more lost computer productivity than anything else I can think of, yet most people are barely aware it exists.

If you do know what the “Man-Machine Interface” is, then you will be thinking to yourself, “I thought this problem was solved a long time ago.”  Most people do.  It’s actually a fair indication of just how old and neglected this problem is that it is still mostly referred to as the “Man” Machine Interface.

The MMI is the fundamental way in which humans work with computers.  It is our “address” of the machine, and like our “address” of the ball in golf, almost all of our problems in working with computers trace back to the basic ways we use the computer to get the ball in the hole.

We thought this was all taped down in the late 80’s, with Windows and Apple and OS2 having graphical user interfaces and mice.  No, that wasn’t the end of the story.  All that those interfaces did was essentially make computers prettier and more interesting.

Bret says that the very idea of using a mouse, or even a monitor for that matter is not that far an advance from using a teletype machine with printed readouts.  Even in Windows, we are still essentially issuing commands and then trying to make sense of the computer’s literal and moronic responses.

I will try to sum up the essence of his argument in as few sentences as possible, because he does take a while to make his point, and there is a lot to see.  What he demonstrates is amazing, so you will still need to watch the video to understand the power and the genius of what he is saying, but the “Principle” part is easy.  It goes like this;

Currently, everything we do with computers follows a fairly linear progression of interactions.  We do some thinking, and then we ask ourselves, “How do I get the computer to do that?”  We then frame what we want the computer to do in terms that it understands.  This might be a command, or a program, or a sequence of actions.  We then tell the computer to execute that sequence, and then we wait until it’s done.  When it’s done, we then check the outcome to see if that is what we want or expected.  In our heads, we have an idea, which (critically) we have pre-calculated, which we use to test the “sanity” of what the computer has done.  If it’s “sane”, we’re done.  If it’s “insane”, we rinse and repeat, until we get the outcome we want.  We then have our “job” done, and we’re done with the computer.

What Bret is suggesting is that this is absurd.  Humans, are in fact doing all of the thinking in this instance.  The computer is doing only what it’s optimized for, literally, mindless number crunching.  The computer has abdicated all responsibility or involvement.

This is unacceptable.

Bret is of course right.  But the trick is, computers don’t think, and can’t understand our intention.  So we “let them off the hook” as it were, and do all the thinking for them.  Bret maintains however that this is not only unnecessary, but it is faulty thinking on our part.

Almost all of the computer interactions that we have take place within fairly narrow “problem domains”.  With tools as advanced as they currently are, in most instances we only imagine that we are asking the computer to do something that is completely original and novel.  In almost all instances however, we follow logical process path-ways which are relatively constrained, or at least familiar, and most of the divergence of our thinking is in fact reducible to a relatively small set of inputs or “parameters”.

He illustrates with some fairly complex programming problems that traditionally, to be honest, will be a challenge for most undergrads in a University program; sorting algorithms, the development and testing thereof.  In his example, he shows how a programming environment can be made “aware” and “interactive”, so that it can alleviate enormous swathes of code-compile-run-test-debug, or as we normally call it, the “iterative cycle of development”.

This one innovation here is a tremendous breakthrough, and one of the costliest problems in all software development.  It has been “solved” in a huge variety of ways, through the creation of simpler, higher-level 4GL languages, through new compilers to speed up the compilation portion of this problem (Google tried this), through the creation of “Test Driven Development” methodologies, by the production of scripting languages and scaffolding environments, through the endless array of “frameworks”, and so forth.  I have used them all, but watching Bret’s little programming environment took my breath away.  I believe that his approach will literally revolutionise software development.

Most interestingly of all, and this is where his “principle” comes in, he moves from showing how this can work in programming, to showing how it can be done with 2D animation and games, which are very complex 4D constructs.  In other words, it appears his principle may actually be universal for human-computer interactions.

Bret’s ideas, as the title suggests, are about Principle.  Designing from Principle, Bret maintains, is what has driven almost all of the great leaps.  I would not argue with this.  The approach to design that he advocates will create a new way of interacting with computers.  It’s subtle, to be sure, and while it is visually amazing, it is important to conceptually grasp what he is saying.  My summation is no substitute for hearing Bret demonstrate it.  Once you’ve seen it, you will cast a far more critical eye on the way we work today.  It may take time, but you will no doubt be seeing the influence of these ideas for many years to come.