image from IT System as a Neural Network

IT System as a Neural Network

Many people complain that their computer systems turned out to be more difficult to build and maintain than they initially expected. Allow me to add a few words from my perspective. In my view, this problem stems from a flawed metaphor we use when thinking about computer systems.

enter image description here

For many, a computer system is similar to an Ikea piece of furniture. At the start, we receive a ready-made package of elements along with instructions. We put them together and have a cabinet (plus a few spare screws 😉). Unfortunately, creating a computer system is in no way similar to assembling furniture. It is many, many times more challenging.

It’s time for a different metaphor that explains why:

  • There are no identical computer systems,
  • Copying functionality is difficult,
  • Integrations are so time-consuming.

The Nervous System and a Computer System

A computer system, as the name suggests, operates on information. This means that what flows through a computer system are individual pieces of information. It looks like this:

  • A client enters an order into the system,
  • The system converts the order into a list of products to be fulfilled,
  • Finally, the supplier sees this list on the screen and knows what to prepare.

Information is input, transformed, and grouped. There is a database with information, input, and output points.

We can compare this to how information is transported through our body - in the nervous system:

  • Skin receptors send information to the brain that the temperature is dropping,
  • Based on this, the brain decides to put on additional clothing,
  • Hands receive the information that they should put on a warm sweater (over the head!).

In our body, we have a central place for gathering and analyzing information, various receptors collecting and responding to information, and nerves that transmit this information further.

And now, the most important thing.

Why Are There No Identical Computer Systems?

Computer systems are tailored to the functions and needs of the company that uses them. The company, in turn, is based on the business environment in which it operates.

It’s similar with the nervous system. It is based on a given species and its capabilities. The given species, in turn, is adapted to the environment in which it exists. If we compare the nervous systems of two different species, such as a human and a dog, almost everything differs:

  • How the brain is constructed and manages the nervous system,
  • The type of information the nerves transport,
  • The capabilities of organs receiving nerve signals.

Even within the same species, differences can be significant - our bodies are not identical.

Companies also differ from each other. Different clients, various tax systems, unique ways of solving similar problems, etc. This causes the companies' computer systems to be different. Each of the above differences means a change in the type of information or the way it is processed. And this leads to changes in the computer system.

Why Is Copying Functionality Difficult?

Or, in other words, “Why don’t people have dog noses?"

enter image description here

Take, for example, man’s best friend - the dog. A dog has a much more sensitive sense of smell than a human. This is not only due to having a better olfactory organ but, more importantly, to the brain’s enhanced ability to process this information. The brain recognizes dozens of different stimuli from the nose and knows how to react based on them. The nervous functions are adapted to the capabilities and needs of the dog species.

For a human to have a dog’s sense of smell, it is not enough to transplant a nose. We would need to reorganize the entire nervous system related to smell. Nerves connected to the nose would have to be adapted to a greater number of received stimuli, and the brain would have to learn to interpret them. With current bioengineering capabilities, this is impossible. And it explains why humans are not used for detecting drugs with dog noses.

Similarly, with a computer system, you cannot simply transfer functionality A from one system to another. We are limited by the same issues as mentioned above:

  • Different ways of entering information - business processes differ, we use different libraries/frameworks, we work on web/mobile,
  • Different ways of collecting and processing information - different decision processes, we use different database engines, models, and field names,
  • Different ways of sharing information - we have different ways of sending information to clients, we use different external systems.

Even a minor change in a field name from second_name to last_name can disrupt the copied business functionality of an IT system. When copying larger functionalities, there will be many more aspects to adapt.

Why Are Integrations So Time-Consuming?

A few weeks ago, an excellent article was published on Martin Fowler’s blog: “You Can’t Buy Integration”:

Despite a wide range of tools that aim to simplify wiring systems together, you can’t buy integration.

This fits perfectly with the metaphor of the nervous system as a computer system.

enter image description here

Integration can be seen as attaching a limb (e.g., a hand) when someone has had an accident. You can’t just attach two body parts. The most challenging aspect of such operations is the proper connection of nerves. Correct transmission of information is crucial for the new part of the body to connect with the rest. Without this, we may have a hand but will not be able to move it.

This is also the case with using ready-made components in computer systems. If we want to use, for example, the Stripe gateway for online payments, it is not enough to just add it to the website. The integration must seamlessly connect with our system - have the same communication model, field names, and adapt to our business process. All the small details must work; otherwise, an error will occur at some stage. And then comes the unpleasant debugging.

It gets even worse when we have multiple external integrations. Who hasn’t had issues with different field names for addresses, such as firstLine/street/streetName between systems? Suddenly, we have ten different models and ways of working.

Using an external component requires proper adaptation to our system. And this takes time and is not always something that can be done quickly. Otherwise, we end up with a Frankenstein.

Summary

Thinking of computer systems as furniture that can be assembled according to instructions is flawed. It has caused us many problems in the past. I hope this metaphor will be a better way of thinking about systems. One that shows what a complex creation we are dealing with.

If you’re interested in the topic of metaphors and their impact on our thinking, I recommend the book Metaphors We Live By by George Lakoff.

Did this metaphor resonate with you? Let me know in the comments.

comments powered by Disqus