Inventing on principle to unleash creativity and transform programming
This is the most interesting talk I’ve seen in years. I urge you to take the time to watch the entire thing.
Ok, you’re probably not going to watch a 55 minute video based on my recommendation alone, so let me break it down for you.
Brett Victor is a big name in interface design—he’s the guy behind the very cool graphics in Al Gore’s interactive digital book, Our Choice. He’s also the author of the very cool Kill Math project which you should check out as an equally powerful idea for changing math education.
Brett’s talk consists of two incredibly powerful questions:
- How can we transform computing/programming by forming tighter bonds between the act of creation and the creation itself?
- How can we develop a true sense of purpose in our work that makes the world a better place?
What follows are my notes and highlights from the talk that resonated with my own work, I hope you will find as compelling as I did.
Transform programming by giving programmers an immediate connection to their creation
The problem of programming, as Brett sees it, is the separation between coding an idea and seeing your code come to life after compiling/interpreting. As a programmer, you have to imagine what every line in the program you are writing does, essentially simulating the computer program in your brain before running it. This is a huge mental load for most students.
Computer science instructors know this implicitly, and it’s why they are encouraging students to run their programs often.
Brett blows all this away with a simple question—how do we give coders an immediate connection to their work? Watch this.
In this six-minute excerpt from Brett’s Talk, he tears down the compile/run/interpret wall of programming and gives the programmer an always-active representation of the program that instantly responds to every change. This can even work in the reverse direction—-the programmer can select an element in the simulation and be taken to the code that is responsible for this element. This is very much like the great Hacakasaurus module for web development that allows users to click on an element in any webpage, view the code for that element, make changes to that code, and see the result instantly.
This is more than just reducing the cognitive load on the programmer to keep track of every element in the code and what it does. As Brett says—this immediate connection allows “ideas to surface in ways that would be impossible before.”
Interlude for a profound quote
Ideas start out tiny and weak and fragile. In order deveolp and mature, ideas need an environment where the creator can nurture them, feed them and shape their growth.
Shouldn’t schools be this environment?
Seeing the future in a program right before your eyes
Here’s another problem my students have programming VPython. They create something, but they don’t really have any idea how the object they created in their program will move. Then they run the program and see the path the object takes. Then they make a small change, and see how the path changes, but more often than not, they forgot the path from the original run. What if instead they could do this:
In this programming environment, you can literally pause time, rewind back to the past, click a button to see the future predicted path, and then make live changes to the code to see how the path will change. Imagine how incredibly powerful this would be for exploring ideas like planetary motion.
As Brett says—”being able to try ideas as you think of them” and seeing their effect instantly (not after pressing the run button) is incredibly powerful.
Even Binary Search can be interesting
Now, if you’re a computer science teacher, here’s the creme de la creme: Binary Search. I remember my first exposure to this idea. My awesome computer science professor asked us how many searches it would take to find 1 name in 1000 in a phone book, and he stunned with the answer—10. Then he followed up with the question, what if that phonebook had 1,000,000 entries? Now how many searches will it take to find one single name? 20! Wow, I had to figure out this powerful idea called binary search.
But as Brett points out, the code behind binary search does all it can to hide the beauty of binary search from all those who aren’t madly in love with computer code, firstly because it forces you to “play computer” in your head and try to simulate what the program will do.
But what if you programmed it like this?
All this starts with a excellent question from Brett that has implications for education—
If we are writing code on a computer—why are we simulating what the computer would do in our head? Why doesn’t the computer just do it and show us?
There are many people who are thinking about how to teach computer science that are far smarter than me, but I think a programming environment like this could go a long way toward achieving our goals of helping everyone to learn to think computationally.
This idea extends beyond programming
Brett’s last example shows this idea is extensible beyond programming, he takes us to the world of electronics. He starts by taking on the circuit schematic, which he sees as an archaic diagram we use because it’s easy to draw on paper. But since we are now working with new computational tools, we should rethink our designs. Why can’t we have an interactive schematic that helps us to understand the function of each of the elements and the cricuit as a whole?
Here is the heart of how computers can transform education— no, it’s not doing the same old things like delivering lectures in new ways via YouTube, but instead, it’s re-thinking the entire design of education to build the idea-nurturing environment Brett talks about—connecting the process of creation to the product of creation, the process of learning to the outcome of learning.
It’s about having a guiding principle
As amazing all all of these ideas are, the most powerful part of Brett’s talk is the last half, which I won’t excerpt here—hopefully you now feel compelled to go and watch it.
Brett talks about working not just with a purpose, but instead with a guiding principle, and how these guiding principles can change the world—linking it even to an activist lifestyle.
He cites the example of Larry Tesler, one of the pioneers in Computer Interface Design who transformed the way computers work to end modes in interface design—at one time in order to use early word processors you needed to constantly switch from a viewing mode to an editing mode as you read/edited your work. Larry devised interfaces and tools (including cut, copy and paste) that eliminated the need for modes and allowed one to directly edit as you were reading the text, without invoking some mode-shifting command. This idea ultimately became a guiding principle for Larry, which you can find on his website http://www.nomodes.com/ and even his license plate, which reads “NOMODES”.
The crucial point is that at the time, people thought modes were a perfectly fine way to interact with a computer, and it took an activist like Larry to change this. Brett even goes as far as to connect these transformations in interface design to transformers in social justice and civil rights, such as Elizabeth Cady Stanton, who battled for women’s suffrage in the turn of the 19th century, when many in the dominant majority thought it was perfectly normal for women not to vote. Today, thanks partly to her efforts, we look back and wonder how it ever was possible to think this way, just like many interface designers and software programmers look back on a modal interface design and wonder “what were they thinking?”
Brett is also clear to point out that there is a huge difference in significance between these two accomplishments—he isn’t trying to equate the significance of eliminating modal design with achieving women’s suffrage. Instead, he showing us the power of viewing our work through the lens of a guiding principle and seeing ourselves as activists for change, no matter what we do.
So what is your guiding principle?