← Back to context

Comment by mathw

13 hours ago

You could just not use LLMs and retain your brain function.

Trawling through bad documentation and even worse Stack Overflow answers to figure out how to use some API was not using my brain functions. It was wasting my time and making me lose the flow of the important parts of my work.

I used to lose entire days trying to figure out some stupid error in a build chain or trying to upgrade through some library's breaking change. Now I can get it done in a few minutes and I don't believe I've lost out on any great "problem solving opportunities."

  • > I used to lose entire days trying to figure out some stupid error in a build chain or trying to upgrade through some library's breaking change.

    Shouldn't the takeaway here be that depending on poorly maintained libraries is a risk? Code is a liability, not an asset. The habit that modern web developers inspired of depending on a new library for everything before ever thinkng about the problem first is bad actually. GenAI is a force multiplier for putting bandaids on bandaids and managing complexity, not extracting simplicity.

    I don't use GenAI enough to lose entire days on it but when it "halucinates" fictional answers complete with broken citations and invented links that go nowhere, I am so glad I don't have to use this stuff for work.

    • Even well-supported, well-documented projects. I'm in the middle of a Spring Boot upgrade, which includes a collection of Hibernate updates. These are well-supported projects with -- theoretically -- fantastic documentation. But when something goes wrong, trawling them for what's happened is tedious and doesn't teach me much; you end up chasing down uncommon threads. The death of StackOverflow doesn't help much either. Previously, web searches might have found a commiserator, but that's all gone now.

      A concrete example: during one of the updates, previously working code started throwing an OptimisticLockingException. Only in one place, annoyingly. My thought was that Hibernate was more strict about something it had previously been lenient about. I went down two or three false threads in the docs; I debugged the old version and the new version and read the guts of Hibernate but couldn't figure out why the persistence path had changed so significantly (or why it'd throw an OptimisticLock, it was saving a brand new row!). I was really struggling.

      I set Opus on it, and it found the relevant section of the docs and zeroed in on the issue in the code: we were generating and setting an ID on a class that had an annotated @GeneratedValue. Old Hibernate said "whatever"; new Hibernate changed the persistence code so in this situation it calls `merge` instead of `save` (update rather than create AFAICT); there was no existing entity with the generated ID (of course, it's a new entity!); it fails.

      While my hypothesis was broadly right, that _particular_ issue would've taken me days to chase down -- but the LLM correctly diagnosed in minutes with links to relevant documentation.

      I vaguely hate LLMs, but this one saved me from a days long side quest that would've held up delivering the actual value of the project. I hope this doesn't sound like my brain is no longer functioning.

      (edit -- reading it back I'm starting to write like one of the fucking things, which is probably the part of them I hate the absolute most)