My Thoughts on AI, Part 1: Fears, Opinions, and Mental Journey · Mark's Dev Blog
My own personal thoughts and opinions on AI effects and usage, and how those have evolved over time
Introduction ๐๏ธ
This post will be tough to write. There's a lot of discourse and arguing about AI everywhere you look. I've read it all. I don't want to get caught up in arguments, get misinterpreted, or be labeled with beliefs that don't apply.
I am not e/acc or P(doom). I am a software engineer, I am a person, trying to figure this out same as everyone else.
I am not trying to sell anything, change anyone's mind, or say I am an expert. I don't have the answers.
I do have thoughts, opinions, fears, excitement, and concerns. I've shared a lot of them in private. Enough people have heard those thoughts and said they want to hear or read more about my opinions that it seems worth my time to write them up publicly. A lot of these aren't original to me. I don't claim to be a deep thinker. I have read a lot, thought a lot, synthesized a lot.
So, here's my story and opinions, from the heart, best as I can write them. So many points I could make and articles I could cite as references here, but this one's just me. My story, told my way. A lot of you are probably going to see the length and yell "TLDR" and nope right out of here, or throw it in an agent to summarize. That's fine. Take it for what it's worth. Maybe this helps someone else. (and if you want to skip to the tech workflow post there you go.)
Introduction
Part 1: The Before Times
Programming Is Life
Clouds on the Horizon
Ominous Signs
Part 2: Fear, Doom, and Depression
The Pivot
The Wilderness
The Tidal Wave
P(doom)
Depression
Part 3: Reverse Engineering
Miami Sunshine
Flipping The Bit
Part 4: Taming the Beast
Architectural Research
Mind. Blown.
Part 5: Diving In
Ramping Up
Immer
Nerd-Sniped
Self-Reflection
Part 6: Liftoff
Trust Factor
Gearing Up
The Re-Pivot
Part 7: Warp Speed
Pulling It All Together
Pattern Matching
Shipping for Agents
Part 8: So What Do I Think Today, Anyway?
Most Of My Fears Are Still Valid, And So Are You
The Tiger Is Out
Gotta Go Fast
Oops It's Capitalism
Maintainability is the Mindset
But Non-Determinism?
Is This Actually Better?
What About the Craft?
Final Thoughts
Part 1: The Before Times ๐๏ธ
Programming Is Life ๐๏ธ
I love programming. I love the problem solving, the thinking. Getting in a flow state, trance music cranked up, deep in the code, surfacing hours later and seeing that this feature didn't exist at the start of the day and now it does and it's all because I figured out how to do it. Debugging deeply. Trying to understand the guts of an unfamiliar system, figuring out where things were going wrong, finally nailing the tweak or architectural change that fixes the problem. Learning new tools, unlocking new capabilities.
I've been programming for 25+ years, over half my life. I cut my teeth in the early days of the Agile Manifesto. I read Joel Spolsky and that rewriting a system from scratch was a bad idea. I read the HN debates about how to interview programmers. I read the 8th Light and Uncle Bob discussions about "Software Craftsmanship" and honing our skills. I never spent time doing code katas, but clearly craft mattered. Writing code the right way mattered. It wasn't just about whether the code ran. It was whether the code was elegant, clean, readable, maintainable. "Make It Work, Make It Right, Make It Fast" became my mantra. "Tradeoffs" was my favorite keyword.
I built my career on deep understanding. I firmly believe that "programming is building a mental model of the system". That every programmer's job is really to understand the problem domain and the system they're working on, that you break down a new feature or bugfix by comparing it to your existing understanding of the system, and that at the end of a 6-hour coding session you've not only written working code but you've shaped a new and improved understanding of the existing system plus the changes. That you learn the fundamentals of your tools, go into the next layer of abstraction, dig into unfamiliar code, learn on the fly.
I believe in determinism. That pure functions aren't just an esoteric concept, but make code predictable and testable. That you can understand a system, even if there's distributed pieces and timing problems and race conditions. That you can solve a problem by taking the time to understand it, break it down, build the mental model, scientific method debug the solution, document it, maintain it. Redux wasn't just a way to manage data outside React, but a way to make the data flow predictable. That the Redux DevTools should show a meaningful human readable history of what happened in the application.
And then came AI.
Clouds on the Horizon ๐๏ธ
Dunno when I first started hearing about using AI to write code. Probably somewhere in the GPT-2ish era. Surely read it somewhere on HN or Reddit.
I...