We Must Become System-System Thinkers

picassoEveryone building software must become a system-system thinker. A system-system thinker is someone who understands that the system they are building is part of a larger whole of other systems. The software we build is part of a more significant system that extends beyond the computer screen and network packets. Despite what many say, software does have a physical manifestation in the forms of the computers it runs on and the people who make and use it. The internet and the world-wide-web are mappable and have a physical form. All Software runs on hardware and hardware exists in the real world maintained by people.

The most critical computer system in the world is undoubtedly the internet. It’s the only computer system that has grown to the scale of trillions of components. All the atoms of the internet have been replaced, and it has never been shut down. This is no small accomplishment and is a result of the great design of TCP/IP and the protocol stack.

The reason the internet was able to scale so successfully was that its design is excellent. It scales because it was designed like another system that has a vast scale called the ecosystem.

The term “Ecosystem” is an interesting concept in itself because it was inspired by the electrical view of the brain proposed by Sigmund Freud. One night, the ecologist who promoted the concept of an ecosystem called Arthur Tansely, had a dream where he shot his wife. This dream disturbed him so much he read the works of Freud. He read how the brain is an electrical system of flowing energy, and he thought that nature must work the same way. Instead of electricity, nature has flows of minerals and energy. In other words, our view of nature is inspired by the technological developments at the time. Our view of nature is also that of a stable system that can adjust to shocks. As we shall see, it appears this view is wrong.

We have a much bigger systemic problem that will likely impact the computer and software industry in the coming years. We can ignore it in the community, but I want to make it clear, if nothing is done, there won’t be a computer industry or software profession. High technology needs organized human life to develop and function, and it won’t be possible with systemic failure.

That biggest threat to technological systemic failure is global warming. Why is global warming the biggest threat to the computer and software industry? We must first put on our system-system thinking caps on. Now that our caps are on let’s look at the extent of the problem.

The warming is accelerating and the new report by the IPCC on 1.5 degrees explains that we have a short window of 11 years until 2030 to dramatically reduce emissions. I sense that this is a conservative estimate and likely most scientists privately believe we will blow past 1.5 degrees. Global warming is having the most significant impact on the ecosystem.

For those that want to understand if there is already a systemic failure underway in our ecosystem, they should read the reports about the mass extinction happening now. A recent article by the Guardian described the collapse of insects in the Puerto Rican rainforest stating that 98% of insects on the ground had vanished. This is a total collapse of the ecosystem since a collapse of insects means a collapse of any animals relying on them. The scientists have attributed this insect collapse to global warming because the number of extremely hot days has dramatically increased in the rain forest going from almost zero to 40% of the days. The 2018 edition of the Living Planet Report found that 60% of all animals have disappeared since 1970. In other words, in less than 50 years, we have lost most of the wild animals of the world. To understand the extent of how few animals are left, a study published in Proceedings of the National Academy of Sciences found that humans make up 36% of all mammals on the planet. Domesticated mammals make up around 60%. That means only 4% of all mammals are wild.

While the internet has proven to be a robust system, it isn’t disconnected from the larger world. If the total collapse of our ecosystem causes mass social upheaval, the internet will stop functioning. It relies on points of centralization (large organizations) and large scale investment to keep functioning.

We have a choice as technologists to either design systems that could be robust against social collapse or build systems to maintain organized human life. In the past, I worked on the problem by designing robust networking systems. I built Fire★, a P2P computing system, back in 2013 because I believed a technical solution was possible. However, by understanding that our computer systems are connected to much larger systems, I don’t believe in a purely technical solution anymore. Since one of those larger systems, the ecosystem, is decidedly collapsing (not tomorrow, but now), it’s not far fetched to imagine our social systems are likely to follow, since they also rely on the ecosystem. If our social systems collapse, the framework which allows technological progress and development will also collapse.

The future of the computer industry and software profession is in peril. We must acknowledge this as a community and take appropriate actions. We must be system-system thinkers!


The Reality Making Machines

This short essay is for computer people like me. Meaning, people who make software. If you don’t make software, you are going to find this very boring. OK, now for the boring fun stuff.

It is impossible to talk about what is really out there (I am talking about what we call reality) without evoking our notions, or models of what we believe is out there. It is meaningless to talk about what is real and what isn’t because we cannot escape model making. Whether it is the models, our senses create and feed the brain, or the models our brain innately constructs. So I will state here that there is no such thing as real and not real, but that everything is real in one sense or another. When you think about the letters you read here, they are real in the sense that our brain has a model about them. They are as real as a unicorn is real, or the American Revolution, or the color red.

It turns out what is really out there seems to be mystical and incomprehensible since Issac Newton defined the mystical force of gravity which countered the mechanical view of the world. Scientists in the 20th century further buried the reactionary mechanical view of Descartes and Galileo with the even more mystical nature of quantum mechanics. Where influence can appear between things without any mechanical contact. This “Spooky action at a distance” is “just is”, and we can describe it and model it, but it is entirely counter-intuitive with other experiences in our lives. Think that whenever you raise your hand, you move the moon! How spooky.

Computer people tend to have a mechanical view of the world but a ghostly view of software as a nonphysical thing which resides in the body of the machine. A machine which is strictly deterministic and mechanical. The way software is built today reflects this mechanical view with the resurgence of functional programming, static languages, and even design strategies like Test Driven Development.

Philosophically we tend to separate what happens in the computer as a fiction and what happens outside the machine as the real world. Computer people view their jobs as modeling the real world inside of software instead of the more exquisite role of using software to create new realities for the users.

What many programmers don’t seem to grasp is that when a person uses a program’s user interface, the save button is as real to them as the mouse button they are pressing or their notion of the words they are reading. The person has a model of what they expect the software to do the same way they have a model of how the mouse button works or the model of what the words mean that they read. Jean Piaget called this Operational Thinking and starts to develop around 7yrs of age. If you have ever seen the real anger and stress that software provokes from your loved ones when it acts in ways they don’t expect, then you quickly realize that the software we make isn’t a joke.

Computers are reality making machines, and computer programmers are the gods of that little world they are creating for users to explore. Anyone who has played or creates video games understands this reasonably well. It seems that software developers and video game developers have their own separate cultures.

Computers as reality making machines are especially getting interesting because of the AI revolution that is happening. At first, there was considerable excitement in Big Data and significant investments made in tools to process the petabytes of data created every day. Then came the excitement in AI and techniques like Deep Learning, which became feasible once there was enough processing power to train machines using the vast data that’s collected.

These machines are now capable of automatically creating new models which come from their file and network-based senses. This means they are automatically able to create new realities and new experiences for users.

Eddington in the early 20th century said everything is meter reading. We live our lives reading the meters from our fingers, lips, nose, ears, and mouth. Scientists have constructed large expensive meters like the LHC. And computers are now reading meters in the form of files and network traffic.

It is about time that the Computer people bury the mechanical view of the world just as the physicists have done so at the beginning of the 20th century over 100 years ago.

Computer people need to accept that software is reality construction, not reality modeling and that they build dynamic systems, not static.

Maybe it’s time to throw out the bad ideas and go back to a more organic and mystical understanding, so we don’t forget the real purpose of these magnificent machines, a purpose so well envisioned by Douglas Engelbart, which is to embrace and extend our human potential beyond anything we have ever dreamed possible.