• randusername 6 minutes ago

    No more AI thought pieces until you tell us what you build!

    AI is a general-purpose tool, but that doesn't mean best-practices and wisdom are generalizable. Web dev is different than compilers which is different than embedded and all the differences of opinion in the comments never explain who does what.

    That said, I would take this up a notch:

    > If you ask AI to write a document for you, you might get 80% of the deep quality you’d get if you wrote it yourself for 5% of the effort. But, now you’ve also only done 5% of the thinking.

    Writing _is_ the thinking. It's a critical input in developing good taste. I think we all ought to consider a maintenance dose. Write your own code without assistance on whatever interval makes sense to you, otherwise you'll atrophy those muscles. Best-practices are a moving train, not something that you learned once and you're done.

    • kranner 3 hours ago

      > If you ask AI to write a document for you, you might get 80% of the deep quality you’d get if you wrote it yourself for 5% of the effort. But, now you’ve also only done 5% of the thinking.

      This, but also for code. I just don't trust new code, especially generated code; I need time to sit with it. I can't make the "if it passes all the tests" crowd understand and I don't even want to. There are things you think of to worry about and test for as you spend time with a system. If I'm going to ship it and support it, it will take as long as it will take.

      • jdjdjssh an hour ago

        Yep, this is the big sticking point. Reviewing code properly is and was the bottle neck. However, with humans I trusted, I could ignore most of their work and focus on where they knew they needed a review. That kind of trust is worth a lot of money and lets you move really fast.

        > I need time to sit with it

        Everyone knows doing the work yourself is faster than reviewing somebody elses if you don’t trust them. I’d argue if AI ever gets to the point where you fully trust it, all white collar jobs are gone.

        • layer8 2 hours ago

          Yes, regression tests are not enough. One generally has to think through code repeatedly, with different aspects in mind, to convince oneself that it is correct under all circumstances. Tests only point-check, they don’t ensure correct behavior under all conceivable scenarios.

          • slfreference 2 hours ago

            I think what LLMs do with words is similar to what artists do with software like cinema4d.

            We have control points (prompts + context) and we ask LLMs to draw a 3D surface which passes through those points satisfying some given constraints. Subsequent chats are like edit operations.

            https://youtu.be/-5S2qs32PII

            • catdog 2 hours ago

              An LLM is an impressive, yet still imperfect and unpredictable translation machine. The code it outputs can only be as good as your prompt is precise, minus the often blatant mistakes it makes.

            • simianwords 2 hours ago

              Honest question: why is this not enough?

              If the code passes tests, and also works at the functionality level - what difference does it make if you’ve read the code or not?

              You could come up with pathological cases like: it passed the tests by deleting them. And the code written by it is extremely messy.

              But we know that LLMs are way smarter than this. There’s very very low chance of this happening and even if it does - it quick glance at code can fix it.

              • kranner an hour ago

                You can't test everything. The input space may be infinite. The app may feel janky. You can't even be sure you're testing all that can be tested.

                The code may seem to work functionally on day 1. Will it continue to seem to work on day 30? Most often it doesn't.

                And in my experience, the chances of LLMs fucking up are hardly very very low. Maybe it's a skill issue on my part, but it's also the case that the spec is sometimes discovered as the app is being built. I'm sure this is not the case if you're essentially summoning up code that exists in the test set, even if the LLM has to port it from another language, and they can be useful in parts here and there. But turning the controls over to the infinite monkey machine has not worked out for me so far.

                • jdjdjssh an hour ago

                  > If the code passes tests, and also works at the functionality level

                  Why doesn’t outsourcing work if this is all that is needed?

                  • jmathai an hour ago

                    We haven’t fully proven that it is any different. Not at scale anyway. It took a decade for the seams of outsourcing to break.

                    But I have a hypothesis.

                    The quality of the output, when you don’t own the long term outcome or maintenance, is very poor.

                    This is not the case with AI in the same sense it is with human contractors.

                    • simianwords an hour ago

                      Why do we have managers if managers don’t have accountability?

                      • jdjdjssh 43 minutes ago

                        I’m not sure what you’re getting at. I’m saying there’s a lot more to creating useful software than “tests pass / limited functionality checks work” from a purely technical perspective.

                    • throwup238 an hour ago

                      It depends on the scale of complexity you’re working at and who your users are going to be. I’ve found that it’s trivial to have Claude Code spit out so much functionality that even just proper manually verifying it becomes a gargantuan task. I end up just manually testing the pieces I’m familiar with which is fine if there’s a QA department who can do a full run through of the feature and are prepared to deal with vibe coding pitfalls, but not so much on open source projects where slop gets shipped and unfamiliar users get stuck with bugs they can’t possibly troubleshoot. Writing the code from scratch The Old Way™ leaves a lot less room for shipping convincing but non functional slop because the dev has to work through it before shipping.

                      The most immediate example I can think of is the beans LLM workflow tracker. It’s insane that its measured in the 100s of thousands of LoC and getting that thing setup in a repo is a mess. I had to use Github copilot to investigate the repo to get the latest method. This wouldn’t fly at my employer but a lot of projects are going to be a lot less scrupulous.

                      You can see the effects in popular consumer facing apps too: Anthropic has drunk way too much of its own koolaid and now I get 10-50% failure rates on messages in their iOS app depending on the day. Some of their devs have publicly said that Claude writes 100% of their code and its starting to show. Intermittent network failures and retries have been a solved problem for decades, ffs!

                  • simianwords 2 hours ago

                    This is one of the more true and balanced articles.

                    On the verification loop: I think there’s so much potential here. AI is pretty good at autonomously working on tasks that have a well defined and easy to process verification hook.

                    A lot of software tasks are “migrate X to Y” and this is a perfect job for AI.

                    The workflow is generally straightforward - map the old thing to the new thing and verify that the new thing works the same way. Most of this can be automated using AI.

                    Wanna migrate codebase from C to Rust? I definitely think it should be possible autonomously if the code base is small enough. You do have to ask the AI to intelligently come up with extensive way to verify that they work the same. Maybe UI check, sample input and output check on API and functionality check.

                    • akiselev 2 hours ago

                      > On the verification loop: I think there’s so much potential here. AI is pretty good at autonomously working on tasks that have a well defined and easy to process verification hook.

                      It's scary how good it's become with Opus 4.5. I've been experimenting with giving it access to Ghidra and a debugger [1] for reverse engineering and it's just been plowing through crackmes (from sites like crackmes.one where new ones are released constantly). I haven't bothered trying to have it crack any software but I wouldn't be surprised if it was effective at that too.

                      I'm also working through reverse engineering several file formats by just having it write CLI scripts to export them to JSON then recreate the input file byte by byte with an import command, using either CLI hex editors or custom diff scripts (vibe coded by the agent).

                      I still get routinely frustrated trying to use it for anything complicated but whole classes of software development problems have been reduced to vibe coding that feedback loop and then blowing through Claude Max rate limits.

                      [1] Shameless plug: https://github.com/akiselev/ghidra-cli https://github.com/akiselev/debugger-cli

                    • willtemperley 4 hours ago

                      I'm very happy with the chat interface thanks.

                      * The interface is near identical across bots

                      * I can switch bots whenever I like. No integration points and vendor lock-in.

                      * It's the same risk as any big-tech website.

                      * I really don't need more tooling in my life.

                      • simianwords 2 hours ago

                        I think the agents are also becoming fungible at the integration layer.

                        Any coding agent should be easily to whatever IDE or workflow you need.

                        The agents are not full fungible though. Each have their own characteristics.

                      • OsamaJaber 2 hours ago

                        The hardest part of (a step behind) is knowing when something is crossed over How do you decide when a tool is mature enough to adopt?

                        • simianwords 2 hours ago

                          This requires good intuition and being unemotional.

                          Lots of people who become successful are the ones who can get this prediction correct.

                        • satisfice 2 hours ago

                          The one thing disagree with is having the AI do its own verification. I explicitly instruct it never to check anything unless I ask it to.

                          This is better because I use my own test as a forcing function to learn and understand what the AI has done. Only after primary testing might I tell it to do checking for itself.

                          • piker 3 hours ago

                            > “Their (ie the document’s) value stems from the discipline and the thinking the writer is forced to impose upon himself as [she] identifies and deals with trouble spots”.

                            Real quote

                            > "Hence their value stems from the discipline and the thinking the writer is forced to impose upon himself as he identifies and deals with trouble spots in his presentation."

                            I mean seriously?