Technology Review - Published By MIT
Advertisement

November 2003

Everyone's a Programmer

Continued from page 1

By Claire Tristram

smaller text tool iconmedium text tool iconlarger text tool icon

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."

November 2003

Would you like to read more articles from the November 2003 issue?

This article is from the November 2003 Issue of Technology Review. To read other articles from this issue simply register for My.TechnologyReview.com. It's free.

Subscribe today and save up to 41% »

Comments

Advertisement

Current Issue

Technology Review November/December 2008
Sun + Water = Fuel
An MIT chemist has opened the way to making hydrogen fuel from water using sunlight.
•  Subscribe
Save 41%
•  Table of Contents
•  MIT News

Magazine Services

Career Resources

MIT Technology Insider

Stories and breaking news from inside MIT about the latest research, innovations, and startups--in a convenient monthly e-newsletter. Subscribe today
Advertisement

Follow us on Twitter

Twitter

Get Technology Review updates via the web, cellphone, or Instant Messager – Follow techreview on Twitter!

Advertisement

More Technology News from Forbes

Advertisement
Advertisement
TECHNOLOGY RESOURCES
Advertisement
MIT Massachusetts Institute of Technology