The fox and the hedgehog

Photo Credit: Alexas Fotos on Unsplash

A fox knows many things, but a hedgehog knows one big thing.

I am sure that you have heard this saying before: it’s attributed to the Greek poet Archilochus, who lived in the 7th century BCE, so it’s been around for a while.

I think that this saying is useful in enterprise technology: we work in a field full of foxes (technology capable of doing many things) and hedgehogs (technology which is good at doing one big thing). It is often difficult to tell foxes and hedgehogs apart, especially when we are also surrounded by people who want to convince that their hedgehog is a fox: that it’s not just a great piece of technology that can solve one big problem, but that it can solve all our problems. If you have been working in the technology field for a while, then you will have seen several technologies and approaches promoted as the answer to everything, before they either faded away, or settled down into the life of happy hedgehogs (ESBs, anyone?).

To illustrate this, let’s play a game of fox or hedgehog, starting with a couple of easy examples, and then moving onto a couple that are a bit more tricky.

Programming languages - fox or hedgehog?

A programming language is the paradigmatic fox: it contains logical constructs which we can put together to do anything we want to do.

Given this flexibility, we might ask why there is more than one programming language in the world. Why do we need more than one fox? Part of this answer lies in the never-ending dis-satisfaction and optimization orientation of software engineers, and part of it lies in our tendency, given the infinitely flexible nature of code, to put it everywhere and ask it to do everything, from routine transaction processing within a great big mainframe, to gathering sensor data in a tiny IOT device.

This means that, while any programming language is theoretically an infinitely flexible fox, in practice, we have a group of foxes, each of which is best at a slightly different set of tricks. (And it turns out that the collective noun for a group of foxes is an earth - although it can also be called a leash or a skulk. Three more new things I learnt today.)

Relational databases - fox or hedgehog?

Just as programming languages are paradigmatic foxes, I think that relational database are paradigmatic hedgehogs. They do one thing - storing data in a structured format, and retrieving it on demand - but it’s a big thing, that underpins most of the commercial software products that run today. Relational databases may differ in features such as scalability, reliability and performance, but we can just regard those as differences in thickness and strength of the hedgehog’s spikes (which we should properly call quills - I’m learning lots of vocabulary today).

Indeed, relational databases are such hedgehogs that we can see how things go wrong when we try to get them to do new things. For example, many databases offer the ability to create stored procedures, logic which is invoked when data is stored or retrieved. I always feel nervous when creating stored procedures: they can sometimes be helpful when enhancing the basic trick of storage and retrieval, but it is very tempting to let them get out of hand, and attempt to turn the database into a hybrid fox, packed full of infinitely flexible logic. That normally ends up in expensive work to de-fox the hedgehog, and separate the logic from the data.

Cloud - fox or hedgehog?

I think that cloud is a fox that is often mistaken for a hedgehog. Now that cloud has been around for a while, many people have a mental model of it, and that mental model tends to be dominated by basic compute and storage services. This is the mental model that gives rise to the slogan, ‘cloud is just somebody else’s computer’. In this model, cloud does one big thing: it provides compute and storage that you don’t have to own.

Yet I think that this model misses the fundamentally software defined nature of cloud: a set of platforms that can be configured to be whatever they need to be. Cloud can emulate a single environment for experimentation, a geographically distributed network of data centres, a long term archive, or an AI workbench. I think that these things are sufficiently different that we can regard cloud as a fox - and a fox that keeps learning new things.

Generative AI - fox or hedgehog?

We are right in the middle of figuring out exactly what Generative AI (the type of AI which can be used to generate text, video or audio content, and which underpins popular services such as ChatGPT) is. If you read all of the coverage of Generative AI, then you would believe that it is obviously a fox, which can do many things: apparently, it can be a teacher, a doctor, a lawyer, an author and an artist.

Yet, as with any new technology, it is important to stay grounded in how Generative AI actually works. (And to understand that, the Attention is All You Need paper written in 2017 is still a great place to start.) And, when we dig down through the layers of excitement, we find that Generative AI does one thing: it predicts the next step in the output likely to satisfy the user. In the case of Large Language Models (LLM), this means the next word in the string.

This is one thing, but it is such a big one that it gives the impression of being many things. Humans interpret the world through language, and we have a tendency to take confident assertions at face value. When an LLM produces words that we would expect from a lawyer or a doctor, we are strongly tempted to believe that it is reasoning like a doctor or a lawyer - rather than to think that there happens to be a lot of medicine and law in the language.

Generative AI is an example of a hedgehog that looks like a fox. Its one big thing is useful, impressive and versatile: there is much work that can be assisted through the production of language informed by a large corpus. But we should remember that it is just one thing.

In enterprise technology, we will continue to meet foxes, hedgehogs, foxes that look like hedgehogs and hedgehogs that look like foxes. As ever, our key to telling them apart, and figure out what they are good for, is engaging with the fundamentals and seeking a deeper level of understanding.

Previous
Previous

What can technologists learn from board games?

Next
Next

The three flavours of legacy: sour, bitter and sweet