← Back to context

Comment by overgard

6 days ago

That's a really good point. I think if there wasn't the insane amount of money involved and these were treated as tools instead, they would probably be MORE productive. I think a person working hand in hand with an AI instead of delegating is the sweet spot of making things fast while also not losing understanding or control of the system. You are absolutely right that these companies can't justify their valuations if they do that though. I just got a new mac to run models locally, and so far the results have been positive with some small hiccups. I'm thinking the future of this tech will likely be better tooling with better IDE integrations rather than "Claude plz make me a SaaS kthx"

> I'm thinking the future of this tech will likely be better tooling with better IDE integrations rather than "Claude plz make me a SaaS kthx"

I think this sort of thinking is a trap, because it presumes that all software has the same constraints.

There's a spectrum of requirements between "chuck this over the wall at Claude, it only has to work once" and "this is a literal rocket ship, formally verify the whole thing".

I've made some things with Claude I don't understand and don't control. It's fine, they're still useful to me. Things for the house that I wasn't going to build manually, some dashboarding stuff and scripts for work, stuff that can crash and burn and I'll be fine.

They won't justify trillions in investment, but they are useful.

Equally, I do agree with you on some things. Sometimes I hand-hold the LLM or forgo it entirely because I want to be 100% sure I know how something works, and can justify a decision if it causes a production outage.

I think the future is probably multiple different tools with different goals. Better IDE integration for some uses, an entirely separate "LLM herd controller" kind of thing for when you're okay with vibe-coding, and the most interesting is something in the middle where you're more in the loop than pure vibe-coding, but don't see the full context like in an IDE. Something where it surfaces changes to key components, but hides things like test changes.

  • Yeah I mean, there are definitely little scripts and stuff in my codebase that I'm happy to have an AI spit out and never look at because it's not important; but those are nice wins around the margins, not a justification of the "EVERYTHING HAS CHANGED!" insanity we've been seeing these past couple of years.

    The thing is though, for that purpose, AI is just an incremental improvement. I mean, in the 80s and 90s people were quickly building crappy-but-useful things with basic or visual basic or spreadsheets and access databases, in the 2000s people built awful but functional websites in PHP, etc. I think AI is an improvement on those "scratch my itch quickly" things, but it's not a replacement for good practices.

    • I do think it’s a step function improvement, as someone that enjoys those crappy but infinitely-useful tools.

      Those tools tend to suck in the sense that they were written for a single person, so the tool assumes that you wrote it and have the context of the author. Help text output often sucks, the UI often sucks or doesn’t exist, it might require 15 packages to be installed that no one has documented because it was never meant to be distributed.

      I like it as an MVP thing to trial whether other people would use it and I need to write a “real” version of it, or if I’m the only one that will use it and I can just vibe-code the hell out of it permanently.

      You used to have to decide that pretty early on, which meant a lot of talking to other people but also trying to prevent it spinning into a whole project with a PM that will never actually be done.

      Dunno, ymmv, I like it a lot in the domain of “stuff that doesn’t have an oncall rotation”. I do find it super useful in that space. Still useful but much less so if the code is something I could be paged for.

  • It’s what’s called in software engineering as “casual software” as a differentiator of “business software” and “critical software”. Not all types needs a high bar of quality, and most of the software engineering thought practices are tailored for business applications that will be made available to multiple users.

    As you said, building a script that only you use personally or a very simple thing that just accomplishes one task and it’s easy to test require almost no engineering, and an LLM can often build those with very little downsides.

> while also not losing understanding

That's a key point. Keeping knowledge and know how inside the company is strategic. For most people GPS did not result in better sense of direction, spellchecking did not help to write without making mistakes, and delegating translation to deepl does help to be better in a foreign languages. I don't see the gain for an individual, a company, a society if a technology reduces the ability to think, do stuff, understand complex problem, working hard at something. Hiring junior also matters, what is boring for a senior dev is useful for a junior, like the "wax on wax off" in Karatekid. Then when the senior dev retired the junior is not junior anymore and the know how is still here. I want to to transfer my knowledge to a junior, not to anthropic or google or openai.

Ideally, working hand in hand with an AI could be like driving a motorcycle vs riding a bicycle. Both are fine, but you go much faster with a motorcycle and you don't lose any ability. But prompting a motorcycle auto-pilot by voice sound a bit stupid and boring. Insane use of energy rarely comes into the equation, which is a bit weird. Personally it is why I am never tempted to use AI. However I see value in AI for finding weakness in a code (inverse of flattery), writing tests with all the edge cases based on specs since tests are often sloppy, asking a fresh view on a very difficult problem. I'd love to hear about the equivalent of move#32 in game 2 (AlphaGo vs Lee Sedol) in a difficult programming task. But I think that massive delegation of code writing is how you lose the knowledge and the know how: what keeps us sharp.

Final word: I asked once a review to claude, the codes involved a db transaction. Nothing complicated, Claude said everything was fine. However the transaction isolation level was not set (I did it on purpose, like if I did not know about isolation levels). He did not ask me if it was my intention to keep the default level. I would have preferred a challenging feedback: why did you chose the default isolation level ? Is it on purpose ? Do you know that the default depend on the db ? Do you know about isolation ? Tell me about the business use case and I'll explain which one would be the best.

I am thinking the opposite. I've been having great results with handing more and more responsibilities to the agent.

Contrary to what some people suggest, I have not hit any maintenance or reliability dead ends. If something breaks, the agent fixes it.

If it cannot, I have the agent instrument the code and work through the logs to check hypotheses, until the source of the issue is found.

If even that would fail, which did not yet happen, I can still do some old fashioned digging and learning, like I always have.

This is for native mobile app development, and the code base is around 100k LOC.