Tag Archives: system design

An old comment haunts me

It turns out that I wrote two versions of the piece on the financial crisis I posted earlier. The other version, which you’ll find posted here, says basically the same thing but contains the following comment which now haunts me. I had written:

“Unfortunately, most economists appear to have little understanding of system design. (When I was in college, many of those who failed our engineering subjects shifted to economics.) Instead of following good principles of design, our economists repeat the most common mistake of amateur programmers: they rely on global variables.”

What a twist of irony! Although I did pass my electrical engineering course, I’m now an MA economics student in the same university where I learned engineering more than 25 years ago.

It is interesting, though, that many of the early founders of neoclassical economics, like Vilfredo Pareto and Leon Walras had engineering training.

An insightful historical analysis by Philip Mirowski (Against Mechanism) traces the development of neoclassical economics from 19th century physics, whose mathematical methods the early neoclassicals imported en toto and applied to the analysis of consumer utility, producer profit and market equilibrium. The methods of physics, Mirowski says, have changed radically since then, but neoclassical economics remains mired in 19th century physics methods of analysis. I am still trying to grasp the full meaning of Mirowski’s analysis, however.

In another piece (I don’t recall now if in the same book or another), Mirowski also commented that economics needs an algebra of its own, which also haunts me in a different way. It has challenged me to learn more about different algebras. (Aside from the more commonly-known high school/college algebra, there’s boolean algebra, matrix algebra, vector algebra, set algebra, etc.) When I mentioned this to an economist who was currently taking a PhD in Math, he thought about it for a while and then said, “actually, that’s true.”

Another area to explore.

The world financial crisis: a programmer’s perspective

I wrote the piece below some ten years ago, during the height of the Asian financial crisis. Because of its relevance to the current global crisis, I’m posting the piece here.

Globalization: poor design?

by Roberto Verzola

Most successful designers of complex systems follow basic rules of design.

Whether it is a spaceship that will land men on the moon, or a worldwide network of ten million computers such as the Internet, or a huge computer program with fifty million lines of code, or a tiny computer chip with two million transistors on it, the design rules are surprisingly similar.

One of the most basic rules in designing complex systems is called modularization. The rule says one should break up a complex system into smaller parts. These smaller parts – usually called modules – should be more manageable and relatively independent from each other. The modules should interact only through a few well-defined interfaces. Each module should have high internal cohesion. The coupling between modules should be minimized.

A good example is the Apollo lunar mission. One of the most complex systems ever made by human beings, it used modularization all through out, from the design of the spaceship itself, to the electronic circuitry that comprised much of its automatic intelligence. The mission’s spectacular success is a tribute to the effectiveness of modular design.

Another example is the Internet, a computer network designed to survive a nuclear attack. Again, the basic rule in the design of the Internet was modularization. The Internet implements communications through relatively independent network layers which interact with each other only through well-defined interfaces. Internet communications protocols have also been broken down into simpler protocols. There is a protocol for transferring mail, another for news, and still another for files.

In economics, modularization means that countries should try to become as self-sufficient as possible and as independent from each other as possible. It means that interaction between economies should be minimized and should occur only through well-defined regulations. Coupling among economies should be minimal.

Globalization, the current trend among economic planners, violates the design principle of modularization. By tearing down “well-defined interfaces” between economies, globalization increases the coupling among countries and makes countries more instead of less dependent on each other.

A complex system with high interaction among its parts becomes more prone to system failures. It is difficult to modify and to improve. It becomes error-prone, yet the errors are more difficult to identify and to correct. In a poorly-designed system, attempts to correct errors often introduce more errors into the system, making it even more failure-prone.

From a systems view, a globalized economy is a badly designed economy. It will be prone to errors and failures. It will be difficult to maintain and to improve. Attempts at correcting its failures will result in even worse problems.

Look at the problems of today’s globalized economy. Because of the free movement of goods, diseases spread quickly from one corner of the globe to another. CFCs produced in one country damage the ozone layer and threaten the health of the citizens of other countries. Toxic wastes produced in the North find themselves being dumped in the South. Chernobyl’s radioactive emissions threatened the dairy industry of the rest of Europe. A stock market crash in the U.S. would probably send stock prices worldwide tumbling. Because of the free movement of capital, job insecurity as well as speculation has become a global problem.

These are all the consequences of the bad design inherent in a tightly coupled global economy.

Despite this, economists often insist that globalization is inevitable, and the best we can do is to adjust to it.

For a designer’s viewpoint, of course, there is no such thing as “inevitable.” Every design is the result of a conscious or unconscious effort. Poor designs become inevitable only because the designer relaxes on his rules, and adopts an “anything goes” approach. To the economist, on the other hand, relaxing the rules is called “liberalization”, “deregulation”, or “leveling the playing field”. And “anything goes” is called “free-market competition”. A relaxation of the rules then makes it easy to violate the basic principles of good design, and makes globalization inevitable.

Who want the rules relaxed? These are mostly the global corporations, the main beneficiaries of globalization. They are the equivalent of global variables in software.

Software engineers try to eliminate global variables or turn them into local variables. Because global variables can easily cause changes behind the back of the system designer, they make the whole system unreliable and crash-prone. When global corporations use transfer pricing to maximize profits at the expense of the host country, or when they switch to highly automated equipment and minimize local employment, or when they compete with local entrepreneurs for skilled labor or for bank loans, or when they suddenly pull out liquid assets for some reason or another, we are witnessing what system designers call the “undesirable side-effects of global variables.” Thus a fundamental rule in system design is to avoid global variables.

Faced with a badly-designed, non-modular system, designers frequently find it easier and more cost-effective to simply junk the design and to start from scratch.

Perhaps, this is what we should do with globalization.

[From Chapter 22, Towards a Political Economy of Information by Roberto Verzola]