← Back to context

Comment by simonw

14 days ago

Have you really never found writing code painful?

CI is failing. It passed yesterday. Is there a flaky API being called somewhere? Did a recent commit introduce a breaking change? Maybe one of my third-party dependencies shipped a breaking change?

I was going to work on new code, but now I have to spend between 5 minutes and an hour+ - impossible to predict - solving this new frustration that just cropped up.

I love building things and solving new problems. I'd rather not have that time stolen from me by tedious issues like this... especially now I can outsource the CI debugging to an agent.

These days if something flakes out in CI I point Claude Code at it and 90% of the time I have the solution a couple of minutes later.

What you’ve described is very much not writing code though. It’s the tedious and unpleasant outcome of having a flaky or under resourced CI setup or pulling in a misbehaving dependency. Neither of those is typing code per se. I don’t think it’s fair to conflate that kind of problem with the creative work involved in implementation itself.

“Writing code is boring and tedious” says more about the speaker than it does about programming.

Not everyone thinks this way. For sure, I don't enjoy every repetitive/tedious tasks or having to put out fires under time pressure, but I happen to be someone who enjoys solving problems. Many times, I helped others find and understand the root causes of bugs after they spend hours cluelessly debugging. (And often LLMs are completely lost as well, provide terrible suggestions or fixes) In an extreme case, I helped fix a bug an entire team of people (of several people) failed to address. And I always learn from such experiences, try to come up with solutions that would prevent it from happening in the first place, and think through the whole thing to be even more efficient at Debugging.

The point is that, LLMs can't always do all of this, they don't necessarily help you think about the root causes or address the human part of the causes, they don't help you build technical skills that you can use in the future. They fix it and it's done (possibly with a terrible, short time solution), unless the human wants to dive deep. For sure this happens all the time, in fact probably more than not, but LLMs are not going to help the situation.

  • I enjoy the kind of problem solving you are describing there too. That's why I like being able to point LLMs at them first - if they can find the fix I get to save a bunch of time and spend it on more interesting problems, and if they can't find the fix then I know I'm going to have a great time digging into a really gnarly problem myself!

Incidentally, I've been using AI to deal with the weird bugs, cryptic errors and generally horrendous complexities of a framework we've been using at work (Elixir's Ash). It's really nice to no longer have to read badly organized docs, search the Internet for similar problems and ask around in the developers' Slack/Discord.

  • So many of my coding agent sessions start with "clone <github URL to relevant dependency> into /tmp for reference" - it's such a great pattern because incomplete or inaccurate decimation matters way less if the agent can dispatch a sub-agent to explore the codebase any time it needs to answer an obscure question.

You have a solution, I've seen them recommend some pretty terrible bug fixes, especially in the ci realm because they get rather clueless as the perspective gets higher or broader

> I point Claude Code at it and 90% of the time I have the solution a couple of minutes later.

Same experience, I don't know why people keep saying code was easy part, sure, only when you are writing a boilerplate which is easy and expectations are clear.

I agree code is easier than some other parts, but not the easiest, industry employed millions of us, to write that easy thing.

When working on large codebases or building something in the flow, I just don't want to read all the OAuth2 scopes Google requires me to obtain, my experience was never: "now I will integrate Gmail, let me do gmail.FetchEmails(), cool it works, on to the next thing"