It’s all about managing complexity

When I was working on a natural language processing system at Johns Hopkins during the summer of 2005, I remember having a minor epiphany: I realized that the strategy our research team was using was essentially just a way of converting an intractably complex problem into a series of computable smaller problems. It didn’t take me long to make the jump to realizing that this is an essential part of all science and engineering.

I was reminded of this when watching a Steve Jobs video recording from 1997 (via daringfireball). Steve is talking about why he thinks better developer tools and APIs are so important to progress (around 25 minutes into the video):

It’s all about managing complexity. It’s like scaffolding, right? You erect some scaffolding and if you keep going up and up and up, eventually the scaffolding collapses of its own weight. That’s what building software is. It’s how much scaffolding you can erect before the whole thing collapses of its own weight. It doesn’t matter how many people you have working on it — doesn’t matter if you’re Microsoft, with 500 people on a team — it will collapse under its own weight.… These [new developer tools] allow you to not have to worry about 90% of the stuff you worry about, so that you can erect your 5 stories of scaffolding, but starting at story number 23 instead of starting at story number 6. You can get a lot higher.

This is related to the fundamental notion of abstraction, and to “the mythical man-month” (which Steve also references). It’s a good reminder.

In a related section, Steve responds to a question asking about how visual programming tools might fit into this. His answer (around 42 minutes in):

Here’s the deal. The way you get programmer productivity is not by increasing the lines of code per programmer per day. That doesn’t work. The way you get programmer productivity is by eliminating lines of code you have to write. The line of code that’s fastest to write, that never breaks, that doesn’t need maintenance, is the line you never had to write! So the goal here is to eliminate 80% of the code that you have to write for your app. That’s the goal. So along the way, if we can provide vizi-this and vizi-that and visual this and visual that, well that’s fine, but the high-order bit is to eliminate 80% of the code. When you ‘draw the line’ in interface builder, you’re eliminating code of one form. But that only goes so far. Maybe we can go further. I’ve seen a lot of demos of things that try to take it all the way back into the algorithmic part of the codebase, and none of them have ever been any good. If there are any good ones out there, show them to me — I’d love to see them.

In other words, abstraction is far more important to productivity than whether a language is visual or textual. Making languages visual is only a win if it can help solve the “higher order” issues: bugs, maintenance, and complexity. Steve’s 1997 claim is that he has not seen compelling demos of this in the visual programming space.

I think this is crucially important to keep in mind when thinking about visual programming languages that could be generally adopted. They have to provide an advantage in terms of abstraction. It seems that so far the opposite has been true: abstraction has been the main weakness of visual programming systems.

The cloud is part of the app

With so many people now watching for Apple information leaks and rumors, their big announcements rarely contain big surprises anymore. However, there is usually a twist or two that no one foresaw, because few are as good as Apple at radically simplifying their products and services.

For me, the twist today was that the cloud is not some separate thing that you have to manage and think about. Instead, it is simply a feature of an app.

Because existing cloud providers offer third-party services that are sold separately, these providers have no choice but to emphasize the cloud as a separate thing. For example, Dropbox—probably the most elegant user experience out there—gives you a special folder on your file system that you can drag files into to tell Dropbox to sync them with the cloud. All files that live in that folder are automatically synced. Because of this, Steve Jobs told us, “Some people think the cloud is just a hard disk in the sky.”

Alternatively, some cloud services are integrated with web applications. For example, Google Docs stores your documents in the cloud and lets you view and edit them using a web browser. (Indeed, Google’s general goal seems to be to move all computing into the web browser, so not just your data but also the apps themselves live in the cloud. I’ve written previously about why I think that is shortsighted.)

Apple’s new “iCloud” offering brings to native apps the cloud integration that we’ve previously only seen with web applications. Moreover, it does this so seamlessly that the user is not really supposed to think about it at all. At Omni we spent a long time wondering how Apple was going to solve the problem of document sync in their iWork apps on the iPad. Then, last week, they shipped updates to those apps with no sign of cloud sync. What we didn’t realize was: that conspicuous absence was the whole point. The synchronization happens automatically, invisibly. There is no need for any user interface at all. Any file updated on one device is updated on all devices within seconds.

To make iCloud even more invisible, it’s free. There need be no user interface associated with paying. There need be no decisions about value and purchasing. You log in once when setting up the device, and that’s it. From then on, your various devices simply feel more like different views onto a single device. The automatic syncing makes it easier to operate the devices, not more complicated. You can spend less time managing the device and more time thinking about your content, your work, your friends.

There are bound to be remaining issues with sync conflicts, offline access, data plan limits, etc. But fast internet access is becoming widespread enough that this seamlessness does not seem out of the question.

The cloud is part of the app. The app is part of the cloud. If an app is cloud-enabled, that just means all devices automatically stay up to date.

The pieces for educational software

Who do you need in order to make outstanding educational software?

  • Artistic and child psychology experts from children’s TV
  • Curriculum designers and subject experts from textbooks
  • Interaction designers and programmers from computer games and apps
  • Teachers who know the kids and can test prototypes with them

What pieces do you need to bring together?

  • Psychological: “flow”, storyline, context
  • Aesthetic: beautiful, interesting, simple
  • Emotional: for a purpose
  • Reliable: solid programming
  • Convenient: internet, app store
  • Low-cost: software product that runs on widely-available devices
  • Effective: learning goals are met

Once the disruption in education takes hold, software with all of these pieces will prove very popular.


One of the best talks at CHI this year was by Chris Harrison of Carnegie Mellon, who presented work on what he calls “kineticons” — applying motion to icons and GUI elements of all scales. This is not animated icons per se, but motion applied to static icons. He came up with 39 kineticon motions and then asked 200 Amazon Mechanical Turk workers what they thought the motions meant. Among the interesting results was that “blowing in the wind” was a better indicator of movability than the iPhone springboard’s “jiggle” motion.

Apple has been a pioneer in using this type of motion to convey meaning, but Chris neatly shows how many more possibilities there are.

Direct manipulation vs. intelligent agents

Ben Shneiderman wrote in 1997:

Direct manipulation depends on… rapid incremental reversible operations whose effect on the object of interest is immediately visible. This strategy can lead to user interfaces that are comprehensible, predictable and controllable. Direct manipulation interfaces are seen as more likely candidates to influence advanced user inter- faces than adaptive, autonomous, intelligent agents. User control and responsibility are highly desirable.

That’s worth reading carefully and thoughtfully.

[Shneiderman, B. Direct manipulation for comprehensible, predictable and controllable user interfaces. Proceedings of the 2nd international conference on Intelligent user interfaces, 1997.]

More specifically:

Agent promoters believe that the computer can automatically ascertain the users’ intentions or take action based on a vague statements of goals. This author is skeptical that user intentions are so easily determined or that vague statements are usually effective. However, if users can specify what they want with comprehensible actions selected from a visual display, then they can more often and more rapidly accomplish their goals while preserving their sense of control and accomplishment.

I completely agree with Shneiderman. I wonder if “agent promoters” today have progressed enough to offer solid counterarguments.

By design

“For the sake of design integrity, a professional designer will put up with vast amounts of discomfort, and resent any consumer unwilling to make the same sacrifice.”

-Ralph Caplan

People don’t buy what you do, they buy why you do it

Apple just released their first iPad 2 commercial, called “We Believe”:

This is what we believe. Technology alone is not enough. Faster, thinner, lighter…those are all good things. But when technology gets out of the way, everything becomes more delightful…even magical. That’s when you leap forward. That’s when you end up with something like this.

It reminded me of the TED talk by Simon Sinek, “How great leaders inspire action.” Simon’s message, which he repeats constantly, is: “People don’t buy what you do, they buy why you do it.” He cites Apple as a master at this. None of Apple’s marketing dives into product specs. They say, “this is what we believe.” From the beginning, they believed in “thinking different.” Whenever they introduce new iPods, they bring a guest star musician onstage to play music. Steve Jobs introduces them by saying, “This is a reminder of why we make iPods: because we love music.” The new iPad ad is another textbook example.

Some great quotes from Simon’s talk:

What’s your purpose? What’s your cause? What’s your belief? Why does your organization exist? … Inspired leaders — and inspired organizations — all act and think from the inside out: why —> how —> what.

The goal is not to do business with people who need what you have; the goal is to do business with people who believe what you believe.

What you do simply proves what you believe.

MLK gave the “I have a dream” speech, not the “I have a plan” speech.

We follow those who lead not because we have to, but because we want to. We follow those who lead not for them, but for ourselves.