I can't trust an engineer who doesn't curl.

I have a confession to make. I have a very hard time trusting a software engineer who doesn't know how to use curl. If your entire job revolves around building distributed systems, APIs, or web applications, but you can't manually probe a network endpoint from the command line, we have a fundamental disconnect about what it means to be a software engineer.

Welcome to leadprompt.sh // executing leadership from the root. I’m your host, John Collins.

Recently, I was working with a software engineer on a legacy application, trying to debug a stubborn integration issue. The application logs were confusing, so I asked him to just drop down to the terminal and run a quick curl request to test the network connection and check the raw headers.

He looked at me blankly. He had no idea what I had just asked him to do. The command curl meant absolutely nothing to him.

This isn't a junior developer fresh out of a bootcamp, either. He is well into his forties, a seasoned developer. But because he has primarily worked inside the walled gardens of Windows IDEs and heavy frameworks, his exposure to Linux environments, the command line, and fundamental networking was practically non-existent.

It got me thinking again about a worrying trend in our industry: how many coders have little to no understanding of how computer networks actually work. We build microservices and web applications every single day. We rely on the Internet as our primary runtime environment. Yet, there’s a widespread lack of foundational understanding about network layers, the OSI model, TCP/IP protocols, DNS resolution, or the harsh physical realities of latency and packet loss.

Too much abstraction

To older hackers like me, this feels almost alien. Those of us who were learning to program in the early 90s remember the visceral excitement of connecting to the Internet for the first time. We remember waiting for our parent's copper phone line to free up, firing up a 28.8K modem, and listening to that screeching handshake: literally hearing the hardware convert digital 1s and 0s into analog sound waves. You had to understand the connection, because the connection was fragile. It was beautiful to me!

A massive part of this trend toward ignorance is driven by layers upon layers of abstraction. And don't get me wrong, abstraction is incredibly powerful in terms of productivity gains.

Because of cloud providers like AWS, software engineers no longer need to rack servers or configure subnets just to ship a feature. You can write a Lambda function, push it to the cloud, and it just runs. It's network voodoo.

But that convenience comes at a steep cost. Developers are shipping code with little understanding of how their application communicates to remote servers over physical network connections. They treat the network as a magical, infinitely fast, perfectly reliable black box. And when that black box breaks, for example when the API times out, when the DNS record doesn't resolve, or when the reverse proxy drops the connection: they are completely lost. They don't know how to drop down a layer and troubleshoot the infrastructure.

AI won't help

AI is only accelerating this dumbing down of the craft. We are adding yet another massive layer of abstraction. Now, some argue engineers no longer need to worry about how to code, let alone how their underlying networks or server infrastructure work. Just prompt the LLM, copy the output, and move on.

Are we creating a software engineering idiocracy? A generation of developers who can glue APIs together but have no idea how the plumbing works? Sometimes I worry we are.

But I also know that the good ones, the truly curious ones, will always dig deeper. They won't settle for the black box. True systems architects know that you can't design resilient software without understanding the environment it runs in. The hackers of today have access to network bandwidth, open-source tools, and computation that I could only dream about when I was first starting out.

So, if you are an engineering leader listening to this, encourage your teams to peek under the hood. Make them run that curl command. Have them read raw HTTP headers. Because when the abstraction leaks, and it always leaks, the engineers who understand the network are the ones who will save the day.

Keeping hacking, talk to you next time.

Download audio

File details: 7.3 MB MP3, 5 mins 5 secs duration.

Title music is "Apparent Solution" by Brendon Moeller, licensed via www.epidemicsound.com

Subscribe

Apple Podcasts (iTunes)

Spotify

YouTube Music

Amazon Music

YouTube

Main RSS feed