Select your localized edition:

Close ×

More Ways to Connect

Discover one of our 28 local entrepreneurial communities »

Be the first to know as we launch in new countries and markets around the globe.

Interested in bringing MIT Technology Review to your local market?

MIT Technology ReviewMIT Technology Review - logo


Unsupported browser: Your browser does not meet modern web standards. See how it scores »

{ action.text }

Unburying Intention

How do you make the code look like the design? First, Simonyi contends, you have to understand what’s wrong with the current practice of programming.

“Programming today is the opposite of diamond mining,” he claims. “In diamond mining you dig up a lot of dirt to find a small bit of value. With programming you start with the value, the real intention, and bury it in a bunch of dirt.”

In Simonyi’s view, software developers are doomed to fail because they need to do three jobs at the same time-only one of which they are well suited for. First, they have to understand the often complex needs of the client-the insurance specialists or accountants or aircraft designers for whom the software is being built. Programmers must try to soak up knowledge that their clients have spent years accumulating. If not a wholly impossible task, it’s certainly an inefficient use of their expertise.

Second, programmers must translate these client needs into algorithms and interfaces that the computer system can understand. Simonyi sees this as the core task of the programmer. But today it’s done poorly: when the programmer has completed the software, there is no way for clients to modify it or even to understand how it reflects their contributions.

Third, in order for the computer to execute instructions properly, programmers must write perfect code-with the precision of a machine. Despite constant claims from software companies about the superiority of their development processes to their competitors’, the fact is that bug-free programming is impossible, since we are not machines. A study at Carnegie Mellon University recently found that programmers average 100 to 150 mistakes per 1,000 lines of code.

Simonyi wants to rid the programmer of the burdens of all of the third and a large part of the first and second tasks. He seeks to not only automate the dronelike parts of programming but also make the programming interface so intuitive that the insurance specialists or accountants or aircraft designers can see their contributions and make improvements by bringing their own expertise to bear, without the programmer as intermediary. Once programmers are freed from the inappropriate tasks that now burden them, they will be able to concentrate on the task for which they are uniquely trained: the design of the program itself.

“The real question is, what are we trying to do with this [piece of] software?” Simonyi says. “That’s what intentional programming will allow us to concentrate on. When you want to create a wonderful system for health care, you should be concerned with the problems of health care and how to solve them. But the way we write software now, the understanding of those problems is lost, because the programmer needs to be concerned instead with how to sort numbers, or how to store data on a disk.”

0 comments about this story. Start the discussion »

Tagged: Computing

Reprints and Permissions | Send feedback to the editor

From the Archives


Introducing MIT Technology Review Insider.

Already a Magazine subscriber?

You're automatically an Insider. It's easy to activate or upgrade your account.

Activate Your Account

Become an Insider

It's the new way to subscribe. Get even more of the tech news, research, and discoveries you crave.

Sign Up

Learn More

Find out why MIT Technology Review Insider is for you and explore your options.

Show Me