It Sucks Being a Manager

I’ve written quite a bit about the overall process of AI-assisted development. Not the “write code” part of it - if anything, that’s the easy part. There’s a process to writing a project which can be maintained, with bug fixes and new features.

What’s a little tough right now is constantly being in the position of being a manager, stakeholder, business, and end-user. I’ve understood it in an abstract, and tend to be careful about considering them.

It’s so very visceral now.

The Impatient Stakeholder in My Head

That internal stakeholder voice is loud, and it’s impatient. It’s the part of you that just wants to see progress.

  • “I wanna see it work!”
  • “It’s a simple change, just do it!”
  • “Why are you wasting time planning? Just write the code!”

When you’re the one in charge of the whole show, these aren’t just annoying phrases from someone else; they’re temptations you have to fight within yourself. And with AI, giving in is just a prompt away.

“I Wanna See It Work!”

Ah, the old feedback loop. A lot of time and effort has been put into a project, but where are the results? The stakeholder, whether it’s a real person or the one in your head, wants a demo. Now.

So, I can instruct the AI to have something to show earlier in the process. Just get the UI up, mock out the data, and make it look like it’s doing something. It’s exhilarating to see something tangible so quickly.

This has inevitably, every single time, led to a poor framework. The quick-and-dirty approach becomes the foundation. By “later,” I mean in a day or two, because everything moves so fast. The shortcuts I took yesterday to get a working demo are the technical debt I have to pay off tomorrow morning.

“It’s a Simple Change”

This is another classic. Why should I write a prompt to create a comprehensive plan to add a feature or fix a bug? It’s “just” a button. “All you have to do is” wire it up. It’s “only” a minor bug in the data processing.

Those little words - “just,” “all you have to do,” and “only” - are the red flags that lead to doom.

I’ve learned to recognize those phrases as attempts to diminish the difficulty of a task. It isn’t that the task is easy, it’s that the speaker wants it now and doesn’t care about the future ramifications. When that speaker is yourself, it’s a sign you’re about to make a big mistake.

The Future Is Now

With AI-assisted development, the “future” is tomorrow, or even later today. Cutting corners has worked in the past because the person or people cutting the corner often didn’t have to live with the decision. They’d move to a new project or a new company, leaving the mess for someone else.

Those cut corners don’t linger for long anymore.

I’ve Been Living It

Oh yea, I’ve been living it. I’ve been making those same mistakes, talking myself into the “simple change.” And when I do, wow, what a mess. Everything takes longer. A task that should have taken an hour now takes four, because I have to unravel the knot I tied for myself yesterday.

It always comes back to bite me.

I can see it in my git logs. My process is usually to have nice, formal commit messages every hour or so, describing a clean, discrete unit of work. Then, suddenly, there will be a gap of four hours, followed by a single commit that just says “fixed a bug.” That’s the sign. That’s when I know I cut a corner and spent the next few hours paying for it.

And I supposedly know better.

Beating a Not-So-Dead Horse

I don’t think this horse is dead yet, so I’m going to keep beating it: the development process is important.

It doesn’t matter which AI model you use if your process is a mess. A bad process with a great model will just help you create a disaster faster.

The hard part isn’t getting an AI to write a function. Writing code is the easy part.

Developing code - building something stable, maintainable, and extensible - is hard. It requires discipline, planning, and resisting the urge to take the “simple” shortcut. That’s the real skill in this new world of AI-assisted development.