Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I'm definitely gonna get hate for saying this but: the rise of coding with LLM assistants is going to worsen an issue our industry is already struggling with: we have tons of developers out there who do not know their fundamentals in programming, who are utterly rudderless without heaps upon heaps of framework code doing lots of work for them, who are now being further enabled by machines that write even that code for them with some tweaking afterwards.

I have interacted with software developers at conferences who cannot do basic things with computers, like navigate file systems, or make changes to the Windows registry, where to get and how to use environment variables, how to diagnose and fix PC issues... Like in a perfect world your IT department sorts this stuff for you but I struggle to take seriously someone who claims to create software who seemingly lacks basic computer literacy in a number of areas.

And I'm sorry, "it compiles and runs" is the bare fucking minimum for software quality. We have machines these days that would run circles around my first PC in the late 90's, but despite that, everything is slower and runs worse. My desktop messaging apps are each currently sucking up over 600 MB of RAM apiece, which is nearly 3 times what my original PC had total. Everything is some bloated shite that requires internet access now at all times or it utterly crashes and dies, and I'm sorry but I cannot separate in my mind the fact that we have seemingly a large contingent of software developers out there that can't bloody use computers to thank for this. And cheap-ass management, to be clear, but I think these are nested problems.



I don't think it's necessarily worsening, it's just becoming more evident.

The way I conceptualize this is that there are two kinds of knowledge. The first is fundamental knowledge. If you learn what is computational complexity and how to use it, or what is linear algebra and why do we care, then you're left with something. The second is what I call "transient" knowledge (I made up the word). If you learn by heart the DOM manipulation methods you have to invoke to make a webpage shiny (or, let's be real, the API of some framework), or what is the difference between datetime and datetime2 in SQL Server 2017, then it looks like you know how to do stuff, but none of those things are fundamental to the way the underlying technologies work: they are mostly pieces of trivia that are the way they are because of historical happenstance rather than actual technical reasons.

To be effective at any given day job, one might need to learn a few pieces of knowledge of the second kind, but one should never confuse them for actual, real understanding. The problem is that the first kind can't be learned from youtube videos in increments of 15 minutes.

That's what LLMs are exposing, IMO. If you don't know what is the syntax for lambdas in C# or how to structure components in React, any LLM will give you perfectly working code. If your code crumbles to pieces because you didn't design your database correctly or you're doing useless computations, you won't even know what you don't know.

This transcends software development, by the way. We talk about how problem solving is a skill, but in my experience is more like physical form: if you don't keep yourself in shape, you won't be when you need it. I see this a lot in kids: the best ones are much smarter than I was at their age, the average struggles with long division.


A guy I work with calls transient knowledge "arcana," I've come to appreciate the concept. Now I'm aware of when I'm generating arcana for other people to learn :)


> It compiles and runs

…and rapidly becomes deprecated not due to quality but because the requirements for operation or development changed substantially. This second order effects make the “compile and run” focus paradoxically efficient and correct use of resources. Engineers, especially academically experienced ones, prematurely optimize for correctness and arbitrary dimensions of quality because they are disconnected from and motivated by interests orthogonal to their users.


> …and rapidly becomes deprecated not due to quality but because the requirements for operation or development changed substantially.

Did they? Like I have no data for this nor would I know how one would set about getting it, but like, from my personal experience and the experiences of folks I've spoken to for basically my entire career, the requirements we have for our software barely change at all. I do not expect Outlook to have chat and reaction functionality. I do not desire Windows to monitor my ongoing usage of my computer to make suggestions on how I might work more efficiently. These things were not requested by me or any user I have ever spoken to. In fact I would take that a step further and say that if your scope and requirements are shifting that wildly, that often, that you did a poor job of finding them in the first place, irrespective of where they've now landed.

They are far more often the hysterical tinkerings demanded by product managers who must justify their salaries with some notion of what's "next" for Outlook, because for some reason someone at Microsoft decided that Outlook being a feature complete and good email client was suddenly, for no particular reason, not good enough anymore.

And again speaking from my and friend's experiences, I would in fact love it very much thank you if Microsoft would just make their products good, function well, look nice and be nice to use, and then stop. Provide security updates of course, maybe an occasional UI refresh if you've got some really good ideas for it, but apart from that, just stop changing it. Let it be feature complete, quality software.

> Engineers, especially academically experienced ones, prematurely optimize for correctness and arbitrary dimensions of quality because they are disconnected from and motivated by interests orthogonal to their users.

I don't think we're disconnected at all from our users. I want, as a software developer, to turn out quality software that does the job we say it does on the box. My users, citation many conversations with many of them, want the software to do what it says on the box, and do it well. These motivations are not orthogonal at all. Now, certainly it's possible to get so lost in the minutia of design that one loses the plot, that's definitely where a good project manager will shine. However, to say these are different concerns entirely is IMO, a bridge too far. My users probably don't give a shit about the technical minutia of implementing a given feature: they care if it works. However, if I implement it correctly, with the standards I know to work well for that technology, then I will be happy, and they will be happy.


MS produces some very good software, like .net core, garnet etc. Their biggest asset is however Marketing. They have perfected selling software, no matter how bad it is.

Their end-user software ranges from "bad but could be worse" to "outlandish crap that should be illegal to ship". Their user base however doesn't know much better, and decision makers in commercial settings have different priorities (choosing MS would not be held against you).

But even in tech circles MS Windows is still used. I know the excuses. MS can continue focusing their efforts productising the clueless user that doesn't understand anything and doesn't give a shit about all the leaks, brittle drivers, performance degradation, registry cluttering etc. MS follows the right $$ strategy, their numbers don't lie.


> They have perfected selling software, no matter how bad it is.

I agree in general with that statement, but we also need to acknowledge that those sales occur within a market that unequivocally endorses their products as "the standard," irrespective of quality, and further still the vast, vast, vast majority of their sold licenses are in corporate environments, where the people making the purchasing decisions and the people utilizing the software are rhetorically different species. I would be shocked if you could find a single person who prefers Teams to Slack, yet tons of organizations use Teams, not because it's good, but because it comes bundled with 365 services, and you're already paying for Outlook, OneDrive, Word, and Excel at the minimum. And you're certainly not going to not have those pieces of software... and therein lies the problem.

> MS can continue focusing their efforts productising the clueless user that doesn't understand anything and doesn't give a shit about all the leaks, brittle drivers, performance degradation, registry cluttering etc.

But they do give a shit. There's just no meaningful alternative. I run into people who absolutely 100% give a shit and are incredibly frustrated at just how BAD computing is lately, even if they lack the vocabulary to explain massive memory mismanagement means their phone gets hot in their hand when they're just reading goddamn text messages, they still understand that it sucks and it wasn't always like this.

> MS follows the right $$ strategy, their numbers don't lie.

That statement however is so vague it's unfalsifiable. We do know Microsoft has previously "lost" battles with individual applications in individual fields, it is completely believable that they could again and more (the entire XBox division comes to mind). What Microsoft has truly mastered is anti-competitive business practices that hobble their competition from the word go, and make it more or less impossible to compete with them on a software quality axis.

The only office suites I know of that even have numbers that are visible next to Microsoft are LibreOffice and the Apple suite, neither of which are actually sold at all.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: