In my last years of college, I took a lot of history classes, and I wound up loving them. So much so that I thought I should have pursued a minor. While this doesn’t make me an expert, I learned some things that stick out to me, and there is one I’m going to share about and draw a parallel to the software world’s approaches to design.
The ancient Greeks were remarkable and developed many of our modern concepts. Now, there’s more to this statement, like how there was a massive purge of information when Christianity took hold, and that’s also why certain Greek ideas and knowledge stuck around and plenty of other knowledge didn’t.
But that’s a tangent. Let me instead talk about how the Greeks went about these philosophical works that we still use and depend on. In this case, I’m going to talk about medicine.
I want first to bring up a gentleman named Galen. Galen was a very prolific and well-respected Greek who created a ton of information on the subject of the body and medicine. In fact, many of his writings were preserved throughout time and became the backbone of many treatments over history.
Galen, however, never opened a human body. He never even saw an animal’s insides. He never applied any treatments or experimented with different medicines. This was also when things like humors were a big part of people’s understanding of the body. He thought of an idea, reasoned through it, and declared it as fact. He convinced generations of people of his correctness and lived up to the Greek ideal of pure thought.
He was dangerously wrong about quite a lot of things, though.
Now, let’s talk about someone far less known named Dioscortes. He was interested in treatments. So, he began a very long and arduous journey of recording various treatments people reported. If someone had a home remedy for a fever, he’d write it down. He’d also check on it to see if it worked.
This was also the time when people understood the body through the lens of humors. His resulting work was a matrix of components and how it affected each humor.
The impact of this was he created one of the first and most correct classifications of animals and plants of the time. He was simply able to identify the relationship between black pepper and ginger by cataloging treatments. These plants are in the same family, and he figured this out centuries before anyone else.
Unfortunately, while this man created a wealth of verified information that is still useful today, it was very un-greek of him. He was practical and saw things first-hand instead of simply thinking it through.
Let’s take the Romans, who, more like Dioscortes, believed in practicality over concept, in contrast. They conquered a lot of the world not because they were the best or biggest army but because they’d study their enemy, experiment, and overcome them.
This includes the Greeks.
The engineering the Romans employed is still revered and studied for its precision and practicality. Self-healing concrete was a mystery until this year and explains how certain structures have stood for thousands of years.
In my class, our teacher gave us an unsolved challenge. If we solved it, we got an A in the class.
There is a mountain with a tunnel in it. That tunnel contains a Roman aqueduct. Archaeologists know it was dug out from two different sides because there’s a small part in the middle where the two tunnels meet. That meeting point is just a few inches off from perfectly smooth. So how do you have two tunnelers dig from opposite sides of a mountain that precisely? Also, consider the sloping grade of the tunnel for the aqueduct.
Now, I come down pretty hard on architects because they’re like the Greeks to me. They think hard, write a lot, and often don’t get their hands dirty with the reality of what happens. We should be more like the Romans as we build software. The designs and engineering of the Romans were born out of utility and practicality. So if we think some component is needed in our software, show me. Some new tech is needed? Prove it, don’t debate.
So much energy is spent talking about what good design is with little to show. I’ve seen teams crippled over the Greek-like arguments of good while the software cripples and rots under impractical notions of good.
This isn’t to say nothing good comes from thinking and conceptualizing like the Greeks, far from it. As I said above, we owe a lot to that. What I am saying is we can’t stay in the land of thought-stuff forever. We have to get our hands dirty, and we have to be practical even if it feels like it goes against what we conceptualized as good.