HI version is available. Content is displayed in original English for accuracy.
Advertisement
Advertisement
⚡ Community Insights
Discussion Sentiment
59% Positive
Analyzed from 1714 words in the discussion.
Trending Topics
#code#don#design#llms#always#more#different#understanding#understand#needle

Discussion (27 Comments)Read Original on HackerNews
That was never the requirement, you've made it up to avoid addressing the real argument
> So if copying a useful piece of code from Stack Overflow has always been acceptable,
Not really, the thing you partially hide in "useful" is the quality assessment. Blindly copy&pasting code was "never" "acceptable"
> why would asking a machine to produce that code be fundamentally different?
Because the previous premise is wrong, but also this one - it will be different code with different tradeoffs, at least try to make any argument why the situations are identical
This has not "always been acceptable"; copy-pasta was a pejorative not that long ago, and people have been fired for simply copying code from SO and using it without understanding it.
That has always been true. AI doesn't change it. It just rearranges some elements that come ahead of that understanding. The volume and velocity are challenges but the understanding and judgement is what separates the good and the great.
BTW: "systems" in my world include not just the technology components but also the humans who operate, adjust and manage all the pieces, and the processes that control it all.
Now you have AI infilitrating both sectors, and well.
Ok, so it's probably going to be the same problem. With AI, I can now explore more docs and more tests, and push out into the edge cases, all because I've got a local LLM and have no real worry about electricity costs.
Businesses on the other hand, will be addicted to LLMs and will have token budgets and will soon enough go back to just good enough software designs.
Finding where AI is moving the needle has been hard, if not impossible.
Because code, by it self has never moved the needle. It's the product, what the code does that moves the needle.
Building the wrong thing, faster, is just a speed run to a legacy code base. That isnt your development teams fault.
Never a truer word said. It's the only thing that moves the needle.
I'm not sure that businesses are straying from AI. I reckon everyone's on board. but AI is now accessible to the business folks - callow as they are to the requirements of the technology components - and it's bound to run up against the technology folks trying to wave them off when enthusiastic excesses threaten what the code does, now or in the future. There'll be adjustments on both sides.
[1] https://woventhought.substack.com/p/ai-assistants-need-adapt...
For example I've worked in clean tech where PLC programming controls turbines, complete understanding is required here. Every bug and LOC associated a human needs to be in the loop, it's worth the time.
Alternatively I do game development, and I don't think there is value in understanding the complete debugging process. For example I accidentally bound spacebar-release to two things in multiplayer causing a co-op glitch. I do not need to search for this needle in a haystack to debug, that is a bad use of time.
>If writing code becomes cheap and accessible to everyone, then writing code stops being much of a differentiator. The developers who stand out will be the ones who understand systems.
I agree especially for limits/boundary conditions. In the game I'm working on, fundamentally understanding 500 GPU vs. CPU controlled fish on screen and their limitations is required to be a good architect, or this game will run at 10fps.
If your game was being played by a million people paying a subscription. Then it would be worth debugging it.
For example after an hour of process of elimination it finds the bug, reproduces it, then it recommends a ~1 line fix. Then that's where one should spend their attention budget, and think through the consequences, weighing positives and negatives, and then either asking for a different fix, not merging, or accepting it. This is a lot more productive IMHO.
I don't think design is necessarily out of reach for AI. As usual, the closer you get to the bleeding edge of what's been done vs. what's possible, the more thought needs to go into a design for it to be considered good. And TBH, even if you only make it to "it works", that's still laudable. There's plenty of profitable companies with terrible designs, technical debt, and broken systems built before AI, and that's why often these arguments fall flat for me.
I like the idea of mostly getting average designs out of AI. I am tired of running into overly complicated solutions to seemingly simple problems. Microservices vs. Monoliths for example. Maybe they thought they saw something that needed that complexity which was credible before, but they have gone and left someone else with their decisions, and left any credibility to the void. They're just playing the game though because there's is/was an incentive to get micro services on your resume for the next job.
because if you start a curriculum over what the model wrote then, one can argue, you are better off writing it yourself in the first place.
All you're sure to get is a bigger bill for tokens.
That's not guaranteed to happen and it's not a new problem, since it happens when managers are unable to detect problems in the team's product or output.
> From the outside, this looks like competence. But if you don't understand why the solution works, you're not actually becoming more capable. You're becoming dependent on the machine to maintain the illusion.
So many things in life operate exactly like this: We don’t need to understand the why, we just accept the solution as-is and move on. An experienced professional has another skill: keeping track of which things matter enough to dig in to and develop mastery, and which things can be “good enough”. This is also informed by the “intuition of how machines behave” that the author mentions.
Sadly the bot-gulled will always say "But the next model will be good enough to do that!".
I convinced myself that functional specs and detailed design documents were not needed because they wouldn't be kept in sync with the code. But the LLMs are essentially turning the synthesis of the code from those documents to a compilation step of sorts.
Now I must ponder the question, what portions of the acts of coding, designing and delivering a working product were the portions that bring me joy. I've been attempting to answer this question by making a concerted effort to delegate the coding to the LLMs and reviewing if the code conforms to the designs I've written down. This process is much closer to the historical engineering disciplines but I have to say, its not been easy.
My advice to the the more junior reading this. Experiment with different functional and design spec formats that best serve the LLMs and develop the skill of writing these and then managing the LLMs.
TLDR, the LLMs are giving the term Software Engineering actual meaning.
I don't really agree. This kind of division of labor has always been possible, with architects doing the design and engineers/programmers doing the implementation. Architects who design systems with lofty requirements with no regard for the cost of their decisions are kind of a meme in the industry. I don't believe it's really possible to separate design from implementation, unless the person specifying the design is really knowledgeable about the problem space.