Few software experts have had as revolutionary an influence on the development of computing as Charles Simonyi, and few have been so richly rewarded for their efforts. As a scientist at Xerox’s Palo Alto Research Center in the 1970s, Simonyi invented Bravo, the first word-processing program that showed on-screen exactly how a document would look in print-a concept commonly referred to as “what you see is what you get.” Simonyi then joined Microsoft, when it was still a startup with three dozen employees. There he became the company’s chief architect, piloting the development of both Word and Excel. Along the way, he also became a billionaire: Forbes recently listed him as the 209th richest person in the United States.Last year Simonyi abruptly ended his 21-year tenure at Microsoft to start a company of his own, Intentional Software, which he has, to date, funded entirely with his own money. In one sense, Intentional Software is a modest company with modest goals; Simonyi does not expect to have a product to sell for several years. But in another sense, his goals are so large that the word “ambition” barely does them justice. Simply put, Simonyi wants to save software from its own complexity-so that the true potential of computer technology can at last be realized.
Grand quests are something Simonyi knows a lot about: he left Hungary to study abroad at the age of 17 and-illegally-never returned. While he still speaks with a faint accent, he also expresses his opinions unequivocally, without any searching for words, especially when talking about his favorite subject.
Software “has become a field where we focus on incremental improvements in processes,” he says. “That course is futile, because it can never solve the problem of human imperfection.”
What Simonyi proposes instead is a revolutionary change in how we write software, and even in how we think about software. “Conventional improvements people make come at the expense of forgetting what software is all about,” he says.
Why does software need a revolutionary change? Because today it is a technology in crisis, where its complexity has far outrun our ability to comprehend it. It’s next to impossible to understand what is going on in software whenever a program runs longer than a few hundred lines of code-and today’s desktop software contains millions of lines. What we don’t understand, we can’t fix: 25 percent of commercial software projects are canceled, which meant $60 billion in losses in 2000 in the U.S. economy alone (see “Why Software Is So Bad,” TR July/August 2002).
Even as software collapses under the weight of its own complexity, we’ve barely begun to exploit its potential to solve problems. The challenge, Simonyi believes, is to find a way to write programs that both programmers and users can actually read and comprehend. Simonyi’s solution? To create programming tools that are so simple and powerful that the software nearly writes itself-in much the way that Excel automatically adds columns of numbers or Word automatically formats our documents.
“Software should be as easy to edit as a PowerPoint presentation,” Simonyi asserts. That means giving it just as intuitive an interface.
Simonyi is attempting to solve one of the most fundamental problems of software development, typically expressed as “making the code look like the design.” If he succeeds, users will be able to create high-level designs of what they want their programs to do, which might resemble flow charts more than lines and lines of code. From these designs, code will be created automatically.
As the inventor of the first what-you-see-is-what-you-get interface, Simonyi seems uniquely suited to this challenge. But it’s still a tall order. Some say it can’t be done: people have been trying to create representative models that could automatically generate complex code for about as long as they have been writing software, and they have achieved only the most rudimentary successes.
Others say we have no choice. Indeed, similar if less extreme efforts to simplify and automate the task of programming are under way at IBM, Sun Microsystems, and other industrial and academic institutions (see “Extreme Programming: The Zero G Experience” and “From Artificial Intelligence to Artificial Biology”).
“We are trying to solve ever more complex problems with software,” says Grady Booch, a friend of Simonyi and one of the inventors of the Unified Modeling Language. Like the approach Simonyi proposes, this software language allows programmers to reason about what software should do without having to worry about details at the level of the actual code, whether it’s written in Java, C++, or one of today’s other common languages. Last December, IBM spent $2.1 billion to acquire Rational Software, the company where Booch and his colleagues developed the Unified Modeling Language.
“If you take a look at where we are going,” says Booch, citing emerging technologies such as nanoscale microprocessors, which should make computers vastly more powerful, if only we can find effective ways to write software for them, “you see there is no end state.” In other words, he insists, software needs to keep up with hardware, and the way we write it today, it won’t.