There’s an oddity to my vocation: It’s really new.

I remember taking my first intro class in spring 1998 in the now-defunct computer science department at Georgetown College (No, really, it’s gone now. Gone for lack of interest.), and the professor, Brian Crawley, said, “What’s interesting about Computer Science is, many of its creators are still with us. This field is largely less than 50 years old.”

He was right. Leaving aside Babbage, Ada Lovelace, and the general concept of algorithms, the digital computer as a device was shockingly recent: ENIAC in 1945, EDSAC in 1949. The first programming languages FORTRAN, LISP, ALGOL in the late ’50s. As I sat in that classroom, I was barely 40 years removed from people who “programmed” with plug boards, switches, and machine code.

In the intervening roughly 30 years, much happened and in one sense nothing changed:

What Happened

  1. Programming went from a clerical job to a cult. I don’t have the research handy, but in the early days, many women were programmers. Notably Rear Adm. Grace Hopper herself, one of the progenitors of COBOL. It was a regular job with regular expectations. Then UNIX, Xerox PARC, the microcomputer revolution, Silicon Valley, those pesky guys from Microsoft, and the Mac and IBM PC happened. Cycle after cycle of startups, waiting on that 10x->100x idea. Probably the zenith of this ethos was Paul Graham’s Hackers and Painters. He’d later go on to start Y Combinator. Programmers as “Artists” is both seductive and repugnant to me now. You’ll see why in a minute.

  2. OOP and Design Patterns rose and fell. This one’s kind of funny, because I have seen SO MUCH terrible C++ code both at my previous job and at my current FAANG establishment. Of course, C++ != OOP, but it was all the rage in the ’90s. If you weren’t object-oriented and applying 17 patterns from the “Gang of Four,” what were you even doing? Then the crash happened–those self-same systems had to be rewritten because they were unintelligible gobbledy-gook just to avoid a switch statement. We kept what was good (Interfaces, basically) and the newer languages either strongly encourage or outright don’t support inheritance. Good, because it’s shit that will come back to bite you.

  3. Agile. I think half of my blog is about Agile. The rise, my own enthrallment with it (and its forms), and the horrors that it became in Corporate America. On god, I’d get in a time machine and tell the guys who signed the Agile manifesto to take a one-day course in “SAFe” and they’d probably run screaming the other way. Find a process that works at the scale of your org. Wake up and realize it’s pseudo-waterfall and move on with your life.

  4. The Cloud. It’s your code running on someone else’s computer. It’s not magic. I know the people who keep a very big one running and it’s frigging magnificent to watch. You want to be using a cloud provider not your own datacenter in almost all cases. But, I lived through the massive lift-and-shift era that was a one-time windfall for the industry.

  5. AI. Literally nothing, nothing, nothing, BOOOM. John McCarthy in the ’50s was working on this crap, and AI researchers kept plugging away for 60 years. Honestly, programmers were fat, dumb, and happy with our “Nothing can pass the Turing Test.” We were so busy saying nothing could solve the halting problem that we missed the part where it didn’t need to. Then ChatGPT happened. The following 4 years (has it only been?) have been watching an entire industry deal with its own obsolescence.

What Hasn’t Changed

We never, and I mean NEVER, became real Engineers. There is no licensing requirement or exam or any sort of certification required to hire someone and call them a “Software Engineer”. No agreed-upon skills, aptitudes, “simulator time”, or anything.

If you want to build a bridge, a Professional Engineer (PE) must sign and seal the plans for that bridge…or you aren’t building the bridge.

If I want to build an architecture for a $200MM banking system? “Well, Harold has built stuff like this before. He knows Java. Let’s hire a ton of contractors who’ve paid us kickbacks and I’m sure there won’t be any issues with security.”

THIS is why the “Programmers are artists” ethos grates on me so very much. At intervals, we seemed close to becoming a real, predictable engineering discipline. That my profession never really became a profession with real qualifications sort of irks me. Maybe I just liked to take tests back in the day?

Gatekeeping

The arguments for the utter chaos that is (was?) programming abound:

  1. The real innovators are self-taught anyway
  2. I don’t want people interested in a career and a life. I want wizards (see point 1, above)
  3. We want the latest tech and people who are native in it (read: Young People)
  4. Nobody wants a Union or Society like the American Medical Association or American Bar Association–they hold the labor pool artificially small and make cost-to-serve go up.

For 1-3, they’re ugly but they’re real: Truly “Exceptional” devs with a cult following are often mavericks. For the drones working 10+ hours a day at the company, you don’t want people who treat it as “just a job”. Cults of personality work. The young work until they drop and don’t have inconvenient family obligations. And, we want the cheapest labor pool.

The last is actually compelling. As I age, I’m getting more libertarian in that I find “price” to be a signal between buyers and sellers, nothing more. If prices are high, we need to increase supply and more doctors do that. If programmer prices are too high (…and they are/were) then the market needs to increase supply and decrease demand.

Floodgates

Which brings us to today. Two market forces play:

  1. The large companies shed thousands of programmers since 2023
  2. GenAI means they can (theoretically) make do with fewer. In some cases, 10%-20% of previous staffing. This is very much in progress, with Frontier Models nibbling at that staffing % with each release, if on a flattening curve. For example, Antropic’s Opus 5 isn’t really impressing me.

So, the next step is for wages to collapse. Hasn’t happened yet, but on longer timescales those offers will get smaller, and down-leveling will be more prevalent. It’s essentially a “buyer’s” market from the top-tier FAANG companies. Outside of Anthropic, NVIDIA, and OpenAI, you can get Principal-level talent for regular SDE-level rates. That’s 25-30 cents on the dollar, and it’s a steal.

What Next: The Tiers

I don’t want to “gatekeep” programming. That’s ridiculous. That’s like saying “You need a certificate from Microsoft to use Excel”. Programs, applications are tools.

Still, a guy who welds mild steel on his ranch is not the same as a diver who welds oil rigs underwater at 200+ ft down. We need to know who can do what.

Thus I’d propose two tiers:

  1. Automation, Line-of-Business stuff: Welcome to the AI future. Go nuts. Vibe-code and scratch your itch, but like all the Perl scripts I wrote back in the day, prepare to throw it away and vibe-code a new one in 2 months.
  2. Infrastructure and durable, long-lived applications: Software-Engineered and operated with help from GenAI. These folks would be qualified and certified.

Or maybe even Tier 2 doesn’t survive.

You are a world-class Senior/Principal Software Engineer. I am your employer. Interview me on a project called “Let’s start a company that XXXX.” From there I want to create a project we can execute to design and stand up our tech stack in the way you recommend in a way that will scale to a run-rate of $100MM annually with full operations and customer service capability

Anyone need some ditches dug?