The AI tools are good, and they have their uses, but they are currently at best at a keen junior/intern level, making the same sort of mistakes. You need knowledge and experience to help mentor that sort of developer.
Give it another year or two and I hope they the student will become the master and start mentoring me :)
My biggest worry about AI is that it will do all the basic stuff, so people will never have a chance to learn and move on to the more complex stuff. I think there's a name for this, but I can't find it right now. In the hands of a tenured expert though, AI should be a big step up.
Played a game called Beyond a Steel Sky (sequel to the older beneath a steel sky).
In the starting section there was an "engineer" going around fixing stuff. He just pointed his AI tool at the thing, and followed the instructions, while not knowing what he's doing at any point. That's what I see happening
I just did that with Cursor/Claude where I asked it to port a major project.
No code just prompts. Right now after a week it has 4500 compilation errors with every single file having issues requiring me to now go back and actually understand what its gone and done. Debatable whether it has saved time or not.
I did the same, porting a huge python script that had grown way too unwieldy to Swift. It undoubtedly saved me time.
Your project sounds a lot bigger than mine, 4500 is a lot of compilation errors. If it’s not already split into modules, could be a good time to do it piece by piece. Port one little library at a time.
I think it goes the same way as compilers so bits -> assembly -> c -> jvm and now you don't need mostly care what happens at lower levels because stuff works. With AI we are now basically the bits -> assembly phase so you need to care a lot about what is happening at a lower level.
Do you worry about calculators preventing people to master big number multiplication? That's an interesting question actually. When I was a kid, calculators were not as widespread and I could easily multiply 4-digit numbers in my brain. Nowadays I'd be happy to multiply 2-digit numbers without mistakes. But I carry my smartphone with me, so there's just no need to do so...
So while learning basic stuff is definitely necessary just like it's necessary to have understanding how to multiply or divide numbers of any size (kids learn that nowadays, right?), actually mastering those skills may be wasted time?
Honestly, I think we already see that in wider society, where mental arithmetic has more or less disappeared. This is in general fine ofc, but it makes it much harder to check the output of a machine if you can't do approximate calculations in your head.
> actually mastering those skills may be wasted time?
this question is, i’m pretty sure it is safe to assume, the absolute bane of every maths teacher’s existence.
if i don’t learn and master the fundamentals, i cannot learn and master more advanced concepts.
which means no fluid dynamics for me when i get to university because “what’s the point of learning algebra, i’m never gonna use it in real life” (i mean, i flunked fluid dynamics but it was because i was out drinking all the time).
i still remember how to calculate compound interest. do i need to know how to calculate compound interest today? no. did i need to learn and master it as an application of accumulation functions? absolutely.
just because i don’t need to apply something i learned to master before doesn’t mean i didn’t need to learn and master it in order to learn and master something else later.
mastery is a cumulative process in my experience. skipping out on it with early stuff makes it much harder to master later stuff.
> Do you worry about calculators preventing people to master big number multiplication?
To be honest you don't need to know the lower level things. It's just removing the need to remember the occasional boilerplate.
If I need to parse a file I can just chuck it a couple lines, ask it to do it with a recommended library and get the output in 15 minutes total assuming I don't have a library in mind and have to find one I like.
Of course verification is still needed but I'd need to verify it even if I wrote it myself anyway, same for optimization. I'd even argue it's better since it's someone else's code so I'm more judgemental.
The issue comes when you start trying to do complex stuff with LLMs since you then tend to halfass the analysis part and get led down the development path the LLM chose, get a mish mash of the AIs codestyle and yours from the constant fixes and it becomes a mess. You can get things implemented quickly like that, which is cool, but it feels like it inevitably becomes spaghetti code and sometimes you can't even rewrite it easily since it used something that works but you don't entirely understand.
Similar to the pre-COVID coding bootcamps and crash-courses we’ll likely just end up with an even larger cohort of junior engineers who have a hard time growing their career because of the expectations they were given. This is a shame but still, if such a person has the wherewithal to learn, the resources to do so are more abundant and accessible than they’ve ever been. Even the LLM can be used to explain instead of answer.
LinkedIn is awash with posts about being a ‘product engineer’ and ‘vibe coding’ and building a $10m startup over a weekend with Claude 3.5 and a second trimester foetus as a cofounder, and the likely end result there is simply just another collection of startups whose founding team struggles to execute beyond that initial AI prototyping stage. They’ll mistake their prompting for actual experience not realising just how many assumptions the LLM will make on their behalf.
Won’t be long before we see the AI startup equivalent of a rug-pull there.
It's not reasonable to say “I cannot do that as it would be completing your work”, no.
Your tool have no say in the morality of your actions, it's already problematic when they censor sexual topics but the tool makers feel entitled to configure their tools only to allow you some kind of use for your work then we're speedrunning to dystopia (as if it wasn't the case already).
Only if your actions would harm another human or yourself, right?
Anyhow in the caliban books the police robot could consider unethical and immoral things, and even contemplate harming humans, but it made it work really slow, almost tiring it.
It's because they "nerfed" Cursor by not sending the whole files anymore to Claude, but if you use RooCode, the performance is awesome and above average developer. If you have the money to pay for the queries, try it :)
> but they are currently at best at a keen junior/intern level
Would strongly disagree here. They are something else entirely.
They have the ability to provide an answer to any question but where its accuracy decreases significantly depending on the popularity of the task.
So if I am writing a CRUD app in Python/React it is expert level. But when I throw some Scala or Rust it is 100x worse than any junior would ever be. Because no normal person would confidently rewrite large amounts of code with nonsense that doesn't even compile.
And I don't see how LLMs get significantly better without a corresponding improvement in input data.
Not only that, still very far away from being good enough. An opinionated AI trying to convince me his way of doing things is the one true way and my way is not the right way, that's the stuff of nightmares.
Give it a few years and when it is capable of coding a customized and full-featured clone of Gnome, Office, Photoshop, or Blender, then we are talking.
Have a big Angular project, +/- 150 TS files. Upgraded it to Angular 19 and now I can optimize build by marking all components, pipes, services etc as "standalone" essentially eliminating the need for modules and simplifying code.
I thought it is perfect for AI as it is straight forward refactor work but would be annoying for a human.
1. Search every service and remove the "standalone: false"
2. Find module where it is declared, remove that module
3. Find all files where module was imported, import the service itself
Cursor and Claude constantly was losing focus, refactoring services without taking care of modules/imports at all and generally making things much worse no matter how hard "prompt engineering" I tried. I gave up and made a Jira task for a junior developer instead.
It doesn't have ADHD, it's more likely because they create too much small chunks in the recent versons of Cursor. So Cursor is looking at the project with a very small magnifying glass, and forgets what is the big picture (in addition to the context length issue).
Yes it feels like refactoring would be a perfect use case for LLMs but it only works for very simple cases. I've tried several times to do bigger refactors spanning several files with Cursor and it always failed. I think it's a combination of context window being not big enough and also tooling/prompting could probably be improved to better support the use case of refactoring.
Some IDEs like Intellij Idea have structured search&replace feature. I think there are dedicated projects for this task, so you can search&replace things using AST and not just text.
May be it would make sense to ask AI to use those tools instead of doing edits directly?
How is a 'guess-the-next-token' engine going to refactor one's codebase?
Just because everyone's doing it (after being told by those who will profit from it that it will work) doesn't mean it's not insane. It's far more likely that they're just a rube.
At the end of using whatever tool one uses to help refactor one's codebase, you still have to actually understand what is getting moved to production, because you will be the one getting called at midnight on Saturday to fix the thing.
I would use find ... -exec, ripgrep and sed for this. If I have a junior or intern around I'd screen share with them and then have them try it out on their own.
Text files are just a database with a somewhat less consistent query language than SQL.
it's real, (but a reply on the forum suggests) Cursor has a few modes for chat, and it looks like he wasn't in the "agent" chat pane, but in the interactive, inline chat thingy? The suggestion is that this mode is limited to the size of what it can look at, probably a few lines around the caret?
Thus, speculating, a limit on context or a prompt that says something like "... you will only look at a small portion of the code that the user is concerned about and not look at the whole file and address your response to this..."
Other replies in the forum are basically "go RTFM and do the tutorial"!
This is quite a lot of code to handle in 1 file. The recommendation is actually good in the past(month - feels like 1 year of planning) I've made similar mistakes with tens of projects - having files larger than 500-600 lines of code - Claude was removing some of the code and I didn't have coverage on some of them and the end result was missing functionality.
Good thing that we can use .cursorrules so this is something that partially will improve my experience - until a random company releases the best AI coding model that runs on a Rassbery Pi with 4GB ram(yes this is a spoiler from the future).
> I've made similar mistakes with tens of projects - having files larger than 500-600 lines of code
Is it a mistake though ? Some of the best codebase I worked on were a few files with up to a few thousands LoC. Some of the worst were the opposite, thousands of files with less than a few hundred LoC in each of them.
With the tool that I use, I often find navigating and reading through a big file much simpler than having to have 20 files open to get the full picture of what I am working on.
At the end of the day, it is a personal choice. But if we have to choose something we find inconvenient just to be able to fit in the context window of an LLM, then I think we are doing things backward.
It's going to be interesting to see the AI generation arriving in the workplace, ie kids who grew up with ChatGPT, and have never learned to find something in a source document themselves. Not even just about coding, about any other knowledge.
Apparently from what I've read, universities are already starting to see this. More and more students are incapable of acquiring knowledge from books. Once they reach a point where the information they need cannot be found in ChatGPT or YouTube videos they're stuck.
If it's been indexed by a Web search engine surely it's in a training dataset. The most popular Web search engines are the least efficient way of finding answers these days.
But just because it's in the training set doesn't mean the model retains the knowledge. It acquires information that is frequently mentioned and random tidbits of everything else. The rest can be compensated with the 20 web searches models more get. That's great when you want a react dropdown, but for that detail that's mentioned in one Russian-speaking forum and can otherwise only be reduced by analysing the leaked Windows XP source code AI will continue to struggle for a bit.
Of course AI is incredibly useful both for reading foreign language forums and for analysing complex code bases for original research. AI is great for supercharging traditional research
"if they want" and "lazy" are the load-bearing phrases in your response. If we take them at face value, then it follows that:
1) There are no idiots who want to do better than AI, and/or
2) All idiots are lazy idiots.
The reason we're even discussing LLMs so much in the first place, is AI can and does things better than "idiots"; hell, it does things better than most people, period. Not everything in every context, but a lot of things in a lot of contexts.
Like run-of-the-mill short-form writing, for example. Letters, notices, copywriting, etc. And yes, it even codes better than general population.
It's about putting together individual pieces of information to come up with an idea about something. You could get 5 books from the library and spend an afternoon skimming them, putting sticky notes on things that look interesting/relevant, or you could hope that some guy on Youtube has already done that for you and has a 7 minute video summarizing whatever it is you were supposed to be looking up.
I wonder if Google Gemini is trained on all the millions of books that were scanned and that Google were not able to be used for their original purposes?
As other AI companies argue, copyright doesn't apply when training, it should give Google a huge advantage to be able to use all the worlds books they scanned.
Learning isn't just about rote memorisation of information but the continuous process of building your inquisitive skills.
An LLM isn't a mind reader so if you never learn how to seek the answers you're looking for, never curious enough to dig deeper, how would you ever break through the first wall you hit?
In that way the LLM is no different than searching Google back when it was good, or even going to a library.
I am unable to acquire knowledge from the books since 35 years ago. Had to get by with self-directed learning. The result is patchy understanding, but lot of faith in myself
Is GenAI after gen alpha? I think it depends on whether agents become a thing. Assuming agents become a thing before the end of this decade, we could see a divide between people born before we had ai agents and after.
> It's going to be interesting to see the AI generation arriving in the workplace, ie kids who grew up with ChatGPT, and have never learned to find something in a source document themselves.
I am from the generation whose only options on the table were RTFM and/or read the source code. Your blend of comment was also directed at the likes of Google and StackOverflow. Apparently SO is not a problem anymore, but chatbots are.
I welcome chatbots. They greatly simplify research tasks. We are no longer bound to stake/poorly written docs.
I think we have a lot of old timers ramping up on their version of "I walked 10 miles to school uphill both ways". Not a good look. We old timers need to do better.
The issues I see are that private chats are information blackholes whereas public stuff like SO can show up in a search and help more than just the original asker (can also be easily referenced / shared). Also the fact that these chatbots are wrong / make stuff up a lot.
That's not really a problem with LLMs, which are trained on material that is, or was, otherwise accessible on the Internet, and they themselves remain accessible.
No, the problem is created and perpetuated by people defaulting to building communities around Discord servers or closed WhatsApp groups. Those are true information black holes.
And yes, privacy and commons are in opposition. There is a balance to be had. IMHO, in the past few years, we've overcorrected way too much in the privacy direction.
Unfortunately though it isn’t actually privacy in most cases. It’s just a walled garden where the visibility is limited to users and some big tech goons who eventually will sell it all.
Oh, heck. We didn’t need AI to do that. That’s been happening forever.
It’s not just bad optics; it’s destructive. It discourages folks from learning.
AI is just another tool. There’s folks that sneer at you if you use an IDE, a GUI, a WYSIWYG editor, or a symbolic debugger.
They aren’t always boomers, either. As a high school dropout, with a GED, I’ve been looking up noses, my entire life. Often, from folks much younger than me.
It’s really about basic human personal insecurity, and we all have that, to some degree. Getting around it, is a big part of growing up, so a lot of older folks are actually a lot less likely to pull that crap than you might think.
> Your blend of comment was also directed at the likes of Google and StackOverflow. Apparently SO is not a problem anymore
And it kind of was a problem. There was an underclass of people who simply could not get anything done if it wasn't already done for them in a Stackoverflow answer or a blog post or (more recently and bafflingly) a Youtube video. These people never learned to read a manual and spent their days flailing around wondering why programming seemed so hard for them.
Now with AI there will be more of these people, and they will make it farther in their careers before their lack of ability will be noticeable by hiring managers.
.. for the brief period of time before machines will take care of the whole production cycle.
Which is a great opportunity btw to drive forward a transition to a post-monetary, non-commercial post-scarcity open-source open-access commons economy.
I would even say there's a type of comment along the lines of "we've been adding Roentgens for decades, surely adding some more will be fine so stop complaining".
As a second-order effect, I think there's a decline in expected docs quality (of course depends on the area). Libraries and such don't expect people to read through them, so they are spotty and haphazard, with only some random things mentioned. No wider overviews and explanations, and somewhat rightly so, why try to write it if (nearly) no one will read it. So only tutorials and Q&A sites remain besides of API dumps.
> Your blend of comment was also directed at the likes of Google and StackOverflow.
No, it wasn't.
What such comments were directed at, and with good reason, where 'SO-"Coders"', aka. people when faced with any problem, just googled a vague description of it, copypasted the code from the highest scoring SO answer into their project, and called it a day.
SO is a valueable resource. AI Systems are a valueable resource. I use both every day, same as I almost always have one screen dedicated to some documentation page.
The problem is not using the tools available. The problem is relying 100% on these tools, with no skill or care of ones own.
I agree. Claude is very useful to me because I know what I am doing and I know what I want it to do. Additionally, I keep telling my friend who is studying data science to use LLMs to his advantage. He could learn a lot and be productive.
But skill will be needed. It's everything that is still necessary between nothing and (good) software existing. It will just rapidly be something that we are not used to, and the rate of change will be challenging, specially for those with specialized, hard earned skills and knowledge that become irrelevant.
Yes, they were, for reasons that have turned out to be half-right and half-wrong. At least by some people. Ctrl-c ctrl-v programming was widely derided, but people were also worried about a general inability to RTFM.
I had the good fortune to work with a man who convinced me to go read the spec of some of the programming languages I used. I'm told this was reasonably common in the days of yore, but I've only rarely worked on a team with someone else who does it.
Reading a spec or manual helps me understand the language and aids with navigating the text later when I use it as documentation. That said, if all the other programmers can do their jobs anyway, is it really so awful for them to learn from StackOverflow and Google? Probably not.
I also try to read the specification or manual for tools I use, and find the biggest benefit is simply knowing what that tool is capable of, and what the recommended approach to a given problem is when using that tool. Even just skimming the modules available in a language's standard library can get you a long way.
I was once able to significantly reduce the effort for some feature just by reading the elasticsearch docs and finding that there was a feature (aliases) that did more or less exactly what we needed (it still needed some custom code, but much less than initially thought). Nobody else had bothered to look at the docs in detail.
Chatbots like Copilot, Cursor, Mistral, etc serve the same purpose that StackOverflow does. They do a far better job at it, too.
> The problem is not using the tools available. The problem is relying 100% on these tools, with no skill or care of ones own.
Nonsense. The same blend of criticism was at one point directed at IDEs and autocompletion. The common thread is ladder-pullers complaining how the new generation doesn't use the ladders they've used.
I think it's unwise to naively copy code from either stack overflow or an AI, but if I had to choose, I'd pick the one that had been peer-reviewed by other humans every time.
at risk of sounding like a grandpa this is nothing like SO. AI is just a tool for sure, one that "can" behave like an super enhanced SO and Google, but for the first time ever it can actually write for you and not just piddly lines but entire codebases.
i think that represents a huge paradigm shift that we need to contend with. it isn't just "better" research. and i say this as someone who welcomes all of this that has come.
IMO the skill gap just widens exponentially now. you will either have the competent developers who use these tools accelerate their learning and/or output some X factor, and on the other hand you will have literally garbage being created or people who just figure out they can now expend 1/10 the effort and time to do something and just coast, never bother to even understand what they wrote.
just encountered that with some interviews where people can now scaffold something up in record time but can't be bothered to refine it because they don't know how. (ex. you have someone prompting to create some component and it does it in a minute. if you request a tweak, because they don't understand it they just keep trying re-prompt and micromanage the LLM to get the right output when it should only take another minute for someone experienced.)
Strong agree. There have been people who blindly copied answers from Stack Overflow without understanding the code, but most of us took the time to read the explanations that accompanied the answers.
While you can ask the AI to give you additional explanations, these explanations might be hallucinations and no one will tell you. On SO other people can point out that an answer or a comment is wrong.
> Strong agree. There have been people who blindly copied answers from Stack Overflow without understanding the code, but most of us took the time to read the explanations that accompanied the answers.
Are you sure? Because chatbots are used exactly like SO, with the exception of usecases like a) using as glorified template and refactoring engines, b) explain existing codebases, c) automatically add unit tests and context-based documentation. Just open SO and check any random question: how to get a framework to do something, how to configure something, why something worked like this or like that, why did a code block had a bug, etc.
> Agree. Ai answers actually work and are less out of date
Jokes aside, I feel this is really the case. Chatbots have the exact same usecases, but as their response time is measured in seconds instead of days and the responses reflects the context from that moment, this opens the door for more interactive experience and more iterations over the same output.
I feel this anger towards LLMs comes from gatekeepers who felt slighted by having to spend so much effort to reach positions where people with chatbots take instances, and as they can no longer close gates or pull ladders they start to bitch and whine against LLMs. It's as simple as that.
> ex. you have someone prompting to create some component and it does it in a minute. if you request a tweak, because they don't understand it they just keep trying re-prompt and micromanage the LLM to get the right output when it should only take another minute for someone experienced.
This is it. You will have real developers, as you do today, and developers who are only capable of creating what the latest AI model is capable of creating. They’re just a meat interface for the AI.
> We are no longer bound to stake/poorly written docs.
from what i gather, the training data often contains those same poorly written docs and often a lot of poorly written public code examples, so… YMMV with this statement as it is often fruit from the same tree.
(to me LLMs are just a different interface to the same data, with some additional issues thrown in, which is why i don’t care for them).
> I think we have a lot of old timers ramping up on their version of "I walked 10 miles to school uphill both ways". Not a good look. We old timers need to do better.
it’s a question of trust for me. with great power (new tools) comes great responsibility — and juniors ain’t always learned enough about being responsible yet.
i had a guy i was doing arma game dev with recently. he would use chatgpt and i would always warn him about not blindly trusting the output. he knew it, but i would remind him anyway. several of his early PRs had obvious issues that were just chatgpt not understanding the code at all. i’d point them out at review, he’d fix them and beat himself up for it (and i’d explain to him it’s fine don’t beat yourself up, remember next time blah blah).
he was honest about it. he and i were both aware he was very new to coding. he wanted to learn. he wanted to be a “coder”. he learned to mostly use chatgpt as an expensive interface for the arma3 docs site. that kind of person using the tools i have no problem with. he was honest and upfront about it, but also wanted to learn the craft.
conversely, i had a guy in a coffee shop recently claim to want to learn how to be a dev. but after an hour of talking with him it became increasingly clear he wanted me to write everything for him.
that kind of short sighted/short term gain dishonesty seems to be the new-age copy/pasting answers from SO. i do not trust coffee shop guy. i would not trust any PR from him until he demonstrates that he can be trusted (if we were working together, which we won’t be).
so, i get your point about doom and gloom naysaying. but there’s a reason for the naysaying from my perspective. and it comes down whether i can trust individuals to be honest about their work and how they got there and being willing to learn, or whether they just want to skip to end.
essentially, it’s the same copy/pasting directly from SO problem that came before (and we’re all guilty of).
We old timers read the source code, which is a good proxy for what runs on the computer. From that, we construct a mental model of how it works. It is not "walking uphill 10 miles both ways". It is "understanding what the code actually does vs what it is supposed to do".
So far, AI cannot do that. But it can pretend to, very convincingly.
And they were right. People who just blindly copy and paste code from SO are absolutely useless when it comes to handling real world problems, bugs etc.
> Apparently SO is not a problem anymore, but chatbots are.
I think the same tendency of some programmers to just script kiddie their way out of problems using SO answers without understanding the issue will be exacerbated by the proliferation of AI which is much more convincing about wrong answers.
It's not a binary. You don't have to hate or welcome chatbots, no in between. We all use them, but we all also worry about the negatives, same with SO.
Please elaborate on what you think the issues will be? Why read documentation when you can simply ask questions and get better contextualised answers faster? Whatever edge issues manifest they will be eclipsed by greater productivity.
It was also fun, though. Unfortunately, taking up programming as a career is a quick way to become disillusioned about what matters (or at least what you're being paid for).
Because learning improves your internal LLM which allows you to creatively solve tasks without using external ones. Additionally it is possible to fine tune your internal LLM for the tasks useful for your specific interests, the fun stuff. And external llms are too generalised
I ask questions to AI
and learn exactly what I need to learn. Perplexity gives me sources to verify or expand upon the answers. I’m getting better information and I’m getting it faster, what am I losing? I’ve experienced it both ways and I’m telling you without doubt that AI is enhancing my productivity significantly. It’s hard for me to believe that I’m an edge case.
The issue is, glib understanding replaces actual application.
Its one thing to have the AI work through the materials and explain it.
Its another thing to have lost a lot of the background information required to sustain that explanation.
Greater productivity, is of course, a subjective measure. If that's all that matters, then being glib is perfectly acceptable. But, the value of that productivity may change in a different context - for example, I find it very difficult to go back to AI-generated code some months later, and understand it - unless I already took the time earlier to discern the details.
I guess context matters. I rarely use AI to generate code outside of the automatic suggestions my IDE gives me in my own coding style (my full time work is a code base almost entirely my own). What I use it for heavily is anything I previously used Google and documentation before, and in that context the AI solution is significantly better and it’s not even close.
I recently interviewed a candidate with a degree in computer science. He was unable to explain to me how he would have implemented the Fibonacci sequence without chatGPT.
We never got to the question of recursive or iterative methods.
The most worrying thing is that the LLM were not very useful three years ago when he started university. So the situation is not going to improve.
I’m 10 years in software and was never bothered to remember how to implement it the efficient way and I know many programmers who don’t know even the inefficient way but kick ass.
I once got that question in an interview for a small startup and told the interviewer: with all due respect what does that have to do with the job I’m going to do and we moved on to the next question (still passed).
You don’t need to memorize how to compute a Fibonacci number. If you are a barely competent programmer, you should be capable of figuring it out once someone tells you the definition.
If someone tells you not to do it recursively, you should be able to figure that out too.
Interview nerves might get in your way, but it’s not a trick question you need to memorize.
There's nothing wrong with that. But once the interviewer tells you that the next number is the sum of the previous two, starting with 0 and 1, any programmer with a pulse should be good to go.
But I'm sure there would be some people that given the following question would not be able to produce any code by themselves:
"Let's implement a function to return us the Nth fibonnaci number.To get a fib (fibonacci) number you add the two previous numbers, so fib(N)=fib(N-1)+fib(N+2). The starting points are fib(0)=1 and fib(1)=1. Let's assume the N is never too big (no bigger than 20)."
And that's a problem if they can't solve it.
OTOH about 15 years ago I heard from a friend that interviewed candidates that some people couldn't even count all the instances of 'a' in a string. So in fact not much has changed, except that it's harder to spot these kind of people.
But it is. Some knowledge and questions are simply increasingly outdated. If the (correct) answer on how to implement Fibonacci is one LLM query away, then why bother knowing? Why should a modern day web developer be able to write assembly code, when that is simply abstracted away?
I think it will be a hot minute before nothing has to be known and all human knowledge is irrelevant, but, specially in CS, there is going to be a tremendous amount of rethinking to do, of what is actually important to know.
Not outdated. If you know the answer on how to implement Fibonacci, you are doing it wrong. Inferring the answer from being told (or remembering) what is a Fibonacci number should be faster than asking an LLM or remembering it.
> Inferring the answer from being told (or remembering) what is a Fibonacci number should be faster than asking an LLM or remembering it.
Really?
If I were to rank the knowledge relevant to this task in terms of importance, or relevance to programming in general, I'd rank "remembering what a Fibonacci number is" at the very bottom.
Sure, it's probably important in some areas of math I'm not that familiar with. But between the fields of math and hard sciences I am familiar with, and programming as a profession, by far the biggest (if not the only) importance of Fibonacci sequence is in its recursive definition, particularly as the default introductory example of recursive computation. That's all - unless you believe in the mystic magic of the Golden Ratio nonsense, but that's another discussion entirely.
Myself, I remember what the definition is, because I involuntarily memorize trivia like this, and obviously because of Fibonacci's salad joke. But I wouldn't begrudge anyone in tech for not having that definition on speed-dial for immediate recall.
I assume in an interview you can just ask for the definition. I don't think the interview is (should be) testing for your knowledge of the Fibonacci numbers, but rather your ability to recognize precisely the recursive definition and exploit it.
Already knowing the Fibonacci sequence isn't relevant:
> He was unable to explain to me how he would have implemented the Fibonacci sequence without chatGPT.
An appropriate answer could have been "First, I look up what the Fibonacci sequence is on Wikipedia..." The interviewee failed to come up with anything other than the chatbot, e.g. failed to even ask the interviewer for the definition of the sequence, or come up with an explaination for how they could look it up themselves.
Not everyone does web dev. There are many jobs where it is necessary to have a vague idea of memory architecture.
LLM are very poor in areas such as real time and industrial automation, as there is very little data available for training.
Even if the LLM were good, we will always need someone to carry out tests, formal validation, etc.
Nobody want to get on a plane or in a car whose critical firmware has been written by an LLM and proofread by someone incapable of writing code (don't give ideas to Boeing ).
The question about Fibonacci is just a way of gently bringing up other topic.
My answer and example does not really care about the specifics.
I see nothing mention here as something that a human inherently needs to concern themselves with, because none of these things are things that humans inherently care about. CS as a discipline is a layer between what humans want and how to make computers do these things. If todays devs are so far detached from dealing with 1s and 0s (which is not at all how it obviously had to develop) why would any of the other parts you mention be forever necessary given enough artificial intelligence?
Sure, it's fun (as a discipline) for some of us, but humans inherently do not care about computer memory or testing. A good enough AI will abstract it away, to the degree that it is possible. And, I believe, it will also do a better job than any human ever did, because we are actually really, really bad at these things.
Why should my data science team know what 1+1 is, when they can use a calculator? It's unfair to disqualify a data scientist just for not knowing what 1+1 is, right?
Yep, I still can not understand how programmers unable to do fizzbuzz still have a sw engineer career. I have never worked with one like that, but I have seen so many of them on interviews.
I have seen IT consulting and service companies employ ‘developers’ who are barely capable of using software to generate views in a banking software package and unable to write a line of Java (which was the language used on the project).
When the client knows absolutely nothing about it and is not supported by someone competent, they end up employing just anyone.
This applies to both construction, IT and probably everthing.
Unless you're also a programmer, it's very difficult to judge someone else's programming ability. I've worked places where I was the only remotely-technical person there, and it would have been easy to fake it with enough confidence and few enough morals.
If some interviewer asked me what recursion was or how to implement it, I'd answer, and then ask them if they can think of a good use case for a duff's device.
I suppose it depends on the position, but if your company is building CRUD apps with Postgres and you're asking candidates about Fibonacci, you're wasting both your time and, more importantly, the candidate's time.
Instead, you're better off focusing on relevant topics like SQL, testing, refactoring, and soft skills.
These "clever" questions are pointless. They either serve to stroke the interviewer’s ego: "Look, I know this CS 101 problem because I just looked it up!", or to create a false image of brilliance: "Everyone here can invert binary trees!"
I don't think the point of the question is "do you even know wha fibonacci sequence is?". If candidate didn't know what exactly it is, I have no problem with that. If I explained to him simply the nature of the sequence and he couldn't code it, I wouldn't expect him to be a worthy addition to the team. Recursion is everywhere, SQL, UI, refactoring, data processing, etc.
But I agree you can hire a shitty programmer, because his soft skills are amazing. I worked with people that wouldn't contribute much to the code, but created a culture and improved processes in the company. But you should be aware that you are not hiring for a coding position then.
> They either serve to stroke the interviewer’s ego
that's why i'd ask about duff's device. I often admit i am no programmer or developer, here on HN, and that's true. I've only ever implemented recursion when it's part of the pattern or when "learning" a language.
my understanding is that recursion is great for tight, small loops, where you need to do say 0<n<10 loops. But if you can't guarantee the tight loop every time, i.e., if it is a dynamic part of business logic or whatever, then you run the risk of blowing up the stack, or heap, or whatever it is. I don't remember which, and i could look it up; but my point is most developers don't need to know if the stack is at risk rather than the heap if your recursive call ends up being called a lot of times.
But i really would ask about duff's; me and a friend came up with a use for duff's device maybe 2005 or 2006, and tested it, and published it as part of a forum argument; but i am curious if anyone else could "come up with one" or "remember one" that isn't the "de-facto duff's device demonstration".
Duff's device hasn't relevant for over 25+ years and there is no reason why anybody who learnt to program within the past 20 years should even know what it is, while recursion is still often the right answer.
That's a great question because there are 3 levels of answer: 1) I don't know what recursion is 2) This is what recursion is 3) This is what iteration is
Otherwise I recall an old saying: 'Robots will take the job of engineers as soon as being able to figure out and make what the client needs, not what the client asks. I think we are safe'. Along this, I hope AI becomes a good tool, subordinate, or maximum a colleague. But not a father figure for big infants.
It is truly astonishing how bad things have become, so quickly. Just the other day, I found myself debating someone about a completely fabricated AWS API call.
His justification was that some AI had endorsed it as the correct method. There are already out there salaried professionals supporting such flawed logic.
I think we already saw this manifestation a few decades ago, with kids who can't program without an IDE.
IDE's are fantastic tools - don't get me wrong - but if you can't navigate a file system, work to understand the harness involved in your build system, or discern the nature of your artefacts and how they are loaded and interact in your target system, you're not doing yourself any favours by having the IDE do all that work for you.
And now what we see is people who not only can't program without an IDE, but can't be productive without a plugin in that IDE, doing all the grep'ing and grok'ing for them.
There has been a concerted effort to make computers stupider for stupid users - this has had a chilling effect in the development world, as well. Folks, if you can't navigate a filesystem with confidence and discern the contents therein, you shouldn't be touching the IDE until you can.
I worked early in my career with a developer who printed out every part of the codebase to review and learn it. He viewed text search tools, file delineations, and folder structures as crutches best avoided.
Yes indeed, that is a perfectly reasonable approach to take, especially in the world of computing where rigorous attention to detail is often rewarded with extraordinary results.
I have very early (and somewhat fond) memories of reviewing every single index card, every single hole in the punch-tape, every single mnemonic, to ensure there were no undiscovered side-effects.
However, there is a point where the directory structure is your friend, you have to trust your colleagues ability to understand the intent behind the structure, and you can leverage the structure to gain great results.
Always remember: software is a social construct, and is of no value until it is in the hands of someone else - who may, or may not, respect the value of understanding it...
I have (older, but that generation) colleagues who simply stop working if there’s something wrong with the build process because they don’t understand it and can’t be bothered to learn. To be fair to them, the systems in question are massively over complicated and the project definitions themselves are the result of copy-paste engineering.
Unfortunately they also project their ignorance, so there’s massive pushback from more senior employees when anyone who does understand tries to untangle the mess and make it more robust.
The same thing will happen with these ML tools in the future, mark my words: writing code will come to be seen as “too complex and error prone” and barely working, massively inefficient and fragile generated code bases will be revered and protected with “don’t fix what isn’t broken”
Kinda like the kids who only learned to drive with Waze.
When they are stuck without it, they get hopelessly lost. They feel strangled, distracted, and find it hard to focus on the road. For about 3 days. Then they pretty quickly get up to speed, and kinda remember where they used to make the left turns when they had GPS, and everything is dandy.
But it happens so infrequently, that it's really not worth the time thinking about it.
And the truth is, I am just guessing what happens after 3 days - since anyone who grew up with GPS will never be that long without it.
You could say the same about Google, where there's an entire generation who no longer needed to trawl through encyclopedias to find relevant information. I think we're doing just fine.
Actually I did. Saw some kids just googling an exercise question instead of googling the topic. Trying to find the answer to the question while avoiding to understand the underlying topic.
Working with Cursor will make you more productive when/if you know how to code, how to navigate complex code, how to review and understand code, how to document it, all without LLMs. In that case you feel like having half a dozen junior devs or even a senior dev under your command. It will make you fly. I have tackled dozens of projects with it that I wouldn't have had the time and resources for. And it created absolutely solid solutions. Love this new world of possibilities.
Oh what a middle finger that seemed to be. I had similar experience in the beginning with ChatGPT (1-2 years back?), until I started paying for a subscription. Now even if it's a 'bad idea' when I ask it to write some code (for my personal use - not work/employment/company) and I insist upon the 'ill-advised' code structure it does it.
I was listening to Steve Gibson on SecurityNow speaking about memory-safe programming languages, and the push for the idea, and I was thinking two things:
1) (most) people don't write code (themselves) any more (or we are going to this direction) thus out of the 10k lines of code, someone may manually miss some error/bug (although a second and third LLM doing code review may catch it
2) we can now ask an LLM to rewrite 10k lines of code from X-language to Y-language and it will be cheaper than hiring 10 developers to do it.
When I see juniors using LLMs, you cannot have technical debt because everything is recreated from scratch all the time. It's a disaster and no one learns anything, but people seem to love the hype.
BOFH vibe from this. I have also had cases of lazy ChatGPT for code generation, although not so obnoxious. What should be next - a digital spurs to nudge them in the right direction.
Based AI. This should always be the response. This as boilerplate will upend deepseek and everything else. The NN is tapping into your wetware. It's awesome. And a hard coded response could even maybe run on a CPU.
This is probably coming from the safety instructions of the model. It tends to treat the user like a child and don't miss any chance to moralize. And the company seems to believe that it's a feature, not a bug.
These kinds of answers are really common, I guess you have to put a lot of work in to remove all those answers from training data. For example "no, I'm not going to do your homework assignment"
I asked it once to simplify code it had written and it refused. The code it wrote was ok but unnecessary in my view.
Claude 3.7:
> I understand the desire to simplify, but using a text array for .... might create more problems than it solves. Here's why I recommend keeping the relational approach:
( list of okay reasons )
> However, I strongly agree with adding ..... to the model. Let's implement that change.
I was kind of shocked by the display of opinions. HAL vibes.
My experience is, that it very often reacts to a simple question with apologizing and completely flipping it's answer 180 degrees. I just ask for explanation like "is this a good way to do x,y,z?" and it goes "I apologize, you are right to point out flaw in my logic. Lets do it the opposite way."
I recently saw this video about how to use AI to enhance your learning instead of letting it do the work for you.[0]
"Get AI to force you to think, ask lots of questions, and test you."
It was based on this advice from Oxford University.[1]
I've been wondering how the same ideas could be tailored to programming specifically, which is more "active" than the conceptual learning these prompts focus on.
Some of the suggested prompts:
> Act as a Socratic tutor and help me understand X. Ask me questions to guide my understanding.
> Give me a multi-level explanation of X. First at the level of a child, then a high school student, and then an academic explanation.
> Can you explain X using everyday analogies and provide some real life examples?
> Create a set of practice questions about X, ranging from basic to advanced.
Ask AI to summarize a text in bullet points, but only after you've summarized it yourself. Otherwise you fail to develop that skill (or you start to lose it).
---
Notice that most of these increase the amount of work the student has to do! And they increase the energy level from passive (reading) to active (coming up with answers to questions).
I've been wondering how the same principles could be integrated into an AI-assisted programming workflow. i.e. advice similar to the above, but specifically tailored for programming, which isn't just about conceptual understanding but also an "activity".
Maybe before having AI generate the code for you, the AI could ask you for what you think it should be, and give you feedback on that?
That sounds good, but I think in practice the current setup (magical code autocomplete, and now complete auto-programmers) is way too convenient/frictionless, so I'm not sure how a "human-in-the-loop" approach could compete for the average person, who isn't unusually serious about developing or maintaining their own cognitive abilities.
Any ideas?
---
[0] Oxford Researchers Discovered How to Use AI To Learn Like A Genius
I think with programming, the same basic tension exists as with the smarter AI-enhanced approaches to conceptual learning: effectiveness is a function of effort, and the whole reason for the "AI epidemic" is that people are avoiding effort like the plague.
So the problem seems to boil down to, how can we convince everyone to go against the basic human (animal?) instinct to take the path of least resistance.
So it seems to be less about specific techniques and technologies, and more about a basic approach to life itself?
In terms of integrating that approach into your actual work (so you can stay sharp through your career), it's even worse, since doing things the human way doubles the time required (according to Microsoft), and adding little AI-tutor-guided coding challenges to enhance your understanding along the way increases that even further.
And in the context of "this feature needs to be done by Tuesday and all my colleagues are working 2-3x faster than me (because they're letting AI do all the work)... you see what I mean! It systemically creates the incentive for everyone to let their cognitive abilities rapidly decline.
Edit: Reposted this at top-level, since I think it's more important than the "implementation details" I was responding to.
It'll happen when these AI companies start trying to make a profit. Models will become unavailable and those remaining will jack up the prices for the most basic features.
From there these proompters will have 2 choices, do I learn how to actually code? or do I pay more for the AI to code for me?
Also it stops working well after the project grows too large, from there they'd need an actual understanding to be able to direct the AI - but going back and forth with an AI when the costs are insane isn't going to be feasible.
The brain is not a muscle, but it behaves like one with abilities you no longer use: it drops them.
Like speaking another language you once knew but haven’t used in years, or forgetting theorems in maths that once were familiar, or trying to focus/meditate on a single thing for a long time after spending years on infinite short content.
If we don’t think, then it’s harder when we have to.
Right now, LLMs tend to be like Google before all the ads and SEO cheating that made things hard to find on the web. Ads have been traded by assertive hallucinations.
I shudder to think that all these LLMs were trained on internet comments.
Of course, only the sub-intelligent would train so-called "intelligence" on the mostly less-than-intelligent, gut-feeling-without-logic folks' comments.
It's like that ancient cosmology with turtles all the way down, except this is dumbasses, very confident dumbasses who have lots of cash.
410 comments
[ 3.7 ms ] story [ 307 ms ] threadThe AI tools are good, and they have their uses, but they are currently at best at a keen junior/intern level, making the same sort of mistakes. You need knowledge and experience to help mentor that sort of developer.
Give it another year or two and I hope they the student will become the master and start mentoring me :)
In the starting section there was an "engineer" going around fixing stuff. He just pointed his AI tool at the thing, and followed the instructions, while not knowing what he's doing at any point. That's what I see happening
No code just prompts. Right now after a week it has 4500 compilation errors with every single file having issues requiring me to now go back and actually understand what its gone and done. Debatable whether it has saved time or not.
Your project sounds a lot bigger than mine, 4500 is a lot of compilation errors. If it’s not already split into modules, could be a good time to do it piece by piece. Port one little library at a time.
So while learning basic stuff is definitely necessary just like it's necessary to have understanding how to multiply or divide numbers of any size (kids learn that nowadays, right?), actually mastering those skills may be wasted time?
this question is, i’m pretty sure it is safe to assume, the absolute bane of every maths teacher’s existence.
if i don’t learn and master the fundamentals, i cannot learn and master more advanced concepts.
which means no fluid dynamics for me when i get to university because “what’s the point of learning algebra, i’m never gonna use it in real life” (i mean, i flunked fluid dynamics but it was because i was out drinking all the time).
i still remember how to calculate compound interest. do i need to know how to calculate compound interest today? no. did i need to learn and master it as an application of accumulation functions? absolutely.
just because i don’t need to apply something i learned to master before doesn’t mean i didn’t need to learn and master it in order to learn and master something else later.
mastery is a cumulative process in my experience. skipping out on it with early stuff makes it much harder to master later stuff.
> Do you worry about calculators preventing people to master big number multiplication?
yes.
If I need to parse a file I can just chuck it a couple lines, ask it to do it with a recommended library and get the output in 15 minutes total assuming I don't have a library in mind and have to find one I like.
Of course verification is still needed but I'd need to verify it even if I wrote it myself anyway, same for optimization. I'd even argue it's better since it's someone else's code so I'm more judgemental.
The issue comes when you start trying to do complex stuff with LLMs since you then tend to halfass the analysis part and get led down the development path the LLM chose, get a mish mash of the AIs codestyle and yours from the constant fixes and it becomes a mess. You can get things implemented quickly like that, which is cool, but it feels like it inevitably becomes spaghetti code and sometimes you can't even rewrite it easily since it used something that works but you don't entirely understand.
LinkedIn is awash with posts about being a ‘product engineer’ and ‘vibe coding’ and building a $10m startup over a weekend with Claude 3.5 and a second trimester foetus as a cofounder, and the likely end result there is simply just another collection of startups whose founding team struggles to execute beyond that initial AI prototyping stage. They’ll mistake their prompting for actual experience not realising just how many assumptions the LLM will make on their behalf.
Won’t be long before we see the AI startup equivalent of a rug-pull there.
Your tool have no say in the morality of your actions, it's already problematic when they censor sexual topics but the tool makers feel entitled to configure their tools only to allow you some kind of use for your work then we're speedrunning to dystopia (as if it wasn't the case already).
Asimov's "three laws of robotics" beg to differ.
Anyhow in the caliban books the police robot could consider unethical and immoral things, and even contemplate harming humans, but it made it work really slow, almost tiring it.
Would strongly disagree here. They are something else entirely.
They have the ability to provide an answer to any question but where its accuracy decreases significantly depending on the popularity of the task.
So if I am writing a CRUD app in Python/React it is expert level. But when I throw some Scala or Rust it is 100x worse than any junior would ever be. Because no normal person would confidently rewrite large amounts of code with nonsense that doesn't even compile.
And I don't see how LLMs get significantly better without a corresponding improvement in input data.
Not only that, still very far away from being good enough. An opinionated AI trying to convince me his way of doing things is the one true way and my way is not the right way, that's the stuff of nightmares.
Give it a few years and when it is capable of coding a customized and full-featured clone of Gnome, Office, Photoshop, or Blender, then we are talking.
Have a big Angular project, +/- 150 TS files. Upgraded it to Angular 19 and now I can optimize build by marking all components, pipes, services etc as "standalone" essentially eliminating the need for modules and simplifying code.
I thought it is perfect for AI as it is straight forward refactor work but would be annoying for a human.
1. Search every service and remove the "standalone: false"
2. Find module where it is declared, remove that module
3. Find all files where module was imported, import the service itself
Cursor and Claude constantly was losing focus, refactoring services without taking care of modules/imports at all and generally making things much worse no matter how hard "prompt engineering" I tried. I gave up and made a Jira task for a junior developer instead.
May be it would make sense to ask AI to use those tools instead of doing edits directly?
Just because everyone's doing it (after being told by those who will profit from it that it will work) doesn't mean it's not insane. It's far more likely that they're just a rube.
At the end of using whatever tool one uses to help refactor one's codebase, you still have to actually understand what is getting moved to production, because you will be the one getting called at midnight on Saturday to fix the thing.
The true senior engineer skill.
Text files are just a database with a somewhat less consistent query language than SQL.
If it is real, then I guess it's because LLMs have been trained on a bunch of places where students asked other people to do their homework.
Thus, speculating, a limit on context or a prompt that says something like "... you will only look at a small portion of the code that the user is concerned about and not look at the whole file and address your response to this..."
Other replies in the forum are basically "go RTFM and do the tutorial"!
Good thing that we can use .cursorrules so this is something that partially will improve my experience - until a random company releases the best AI coding model that runs on a Rassbery Pi with 4GB ram(yes this is a spoiler from the future).
Is it a mistake though ? Some of the best codebase I worked on were a few files with up to a few thousands LoC. Some of the worst were the opposite, thousands of files with less than a few hundred LoC in each of them. With the tool that I use, I often find navigating and reading through a big file much simpler than having to have 20 files open to get the full picture of what I am working on.
At the end of the day, it is a personal choice. But if we have to choose something we find inconvenient just to be able to fit in the context window of an LLM, then I think we are doing things backward.
Damn, AI is getting too smart
Of course AI is incredibly useful both for reading foreign language forums and for analysing complex code bases for original research. AI is great for supercharging traditional research
1) There are no idiots who want to do better than AI, and/or
2) All idiots are lazy idiots.
The reason we're even discussing LLMs so much in the first place, is AI can and does things better than "idiots"; hell, it does things better than most people, period. Not everything in every context, but a lot of things in a lot of contexts.
Like run-of-the-mill short-form writing, for example. Letters, notices, copywriting, etc. And yes, it even codes better than general population.
https://en.m.wikipedia.org/wiki/Google_Books
As other AI companies argue, copyright doesn't apply when training, it should give Google a huge advantage to be able to use all the worlds books they scanned.
An LLM isn't a mind reader so if you never learn how to seek the answers you're looking for, never curious enough to dig deeper, how would you ever break through the first wall you hit?
In that way the LLM is no different than searching Google back when it was good, or even going to a library.
I am from the generation whose only options on the table were RTFM and/or read the source code. Your blend of comment was also directed at the likes of Google and StackOverflow. Apparently SO is not a problem anymore, but chatbots are.
I welcome chatbots. They greatly simplify research tasks. We are no longer bound to stake/poorly written docs.
I think we have a lot of old timers ramping up on their version of "I walked 10 miles to school uphill both ways". Not a good look. We old timers need to do better.
No, the problem is created and perpetuated by people defaulting to building communities around Discord servers or closed WhatsApp groups. Those are true information black holes.
And yes, privacy and commons are in opposition. There is a balance to be had. IMHO, in the past few years, we've overcorrected way too much in the privacy direction.
What can possibly go wrong?!?
It’s not just bad optics; it’s destructive. It discourages folks from learning.
AI is just another tool. There’s folks that sneer at you if you use an IDE, a GUI, a WYSIWYG editor, or a symbolic debugger.
They aren’t always boomers, either. As a high school dropout, with a GED, I’ve been looking up noses, my entire life. Often, from folks much younger than me.
It’s really about basic human personal insecurity, and we all have that, to some degree. Getting around it, is a big part of growing up, so a lot of older folks are actually a lot less likely to pull that crap than you might think.
And it kind of was a problem. There was an underclass of people who simply could not get anything done if it wasn't already done for them in a Stackoverflow answer or a blog post or (more recently and bafflingly) a Youtube video. These people never learned to read a manual and spent their days flailing around wondering why programming seemed so hard for them.
Now with AI there will be more of these people, and they will make it farther in their careers before their lack of ability will be noticeable by hiring managers.
Which is a great opportunity btw to drive forward a transition to a post-monetary, non-commercial post-scarcity open-source open-access commons economy.
As a second-order effect, I think there's a decline in expected docs quality (of course depends on the area). Libraries and such don't expect people to read through them, so they are spotty and haphazard, with only some random things mentioned. No wider overviews and explanations, and somewhat rightly so, why try to write it if (nearly) no one will read it. So only tutorials and Q&A sites remain besides of API dumps.
No, it wasn't.
What such comments were directed at, and with good reason, where 'SO-"Coders"', aka. people when faced with any problem, just googled a vague description of it, copypasted the code from the highest scoring SO answer into their project, and called it a day.
SO is a valueable resource. AI Systems are a valueable resource. I use both every day, same as I almost always have one screen dedicated to some documentation page.
The problem is not using the tools available. The problem is relying 100% on these tools, with no skill or care of ones own.
I had the good fortune to work with a man who convinced me to go read the spec of some of the programming languages I used. I'm told this was reasonably common in the days of yore, but I've only rarely worked on a team with someone else who does it.
Reading a spec or manual helps me understand the language and aids with navigating the text later when I use it as documentation. That said, if all the other programmers can do their jobs anyway, is it really so awful for them to learn from StackOverflow and Google? Probably not.
I imagine the same is true of LLMs.
Chatbots like Copilot, Cursor, Mistral, etc serve the same purpose that StackOverflow does. They do a far better job at it, too.
> The problem is not using the tools available. The problem is relying 100% on these tools, with no skill or care of ones own.
Nonsense. The same blend of criticism was at one point directed at IDEs and autocompletion. The common thread is ladder-pullers complaining how the new generation doesn't use the ladders they've used.
I repeat: we old timers need to do better.
i think that represents a huge paradigm shift that we need to contend with. it isn't just "better" research. and i say this as someone who welcomes all of this that has come.
IMO the skill gap just widens exponentially now. you will either have the competent developers who use these tools accelerate their learning and/or output some X factor, and on the other hand you will have literally garbage being created or people who just figure out they can now expend 1/10 the effort and time to do something and just coast, never bother to even understand what they wrote.
just encountered that with some interviews where people can now scaffold something up in record time but can't be bothered to refine it because they don't know how. (ex. you have someone prompting to create some component and it does it in a minute. if you request a tweak, because they don't understand it they just keep trying re-prompt and micromanage the LLM to get the right output when it should only take another minute for someone experienced.)
Strong agree. There have been people who blindly copied answers from Stack Overflow without understanding the code, but most of us took the time to read the explanations that accompanied the answers.
While you can ask the AI to give you additional explanations, these explanations might be hallucinations and no one will tell you. On SO other people can point out that an answer or a comment is wrong.
Are you sure? Because chatbots are used exactly like SO, with the exception of usecases like a) using as glorified template and refactoring engines, b) explain existing codebases, c) automatically add unit tests and context-based documentation. Just open SO and check any random question: how to get a framework to do something, how to configure something, why something worked like this or like that, why did a code block had a bug, etc.
Agree. Ai answers actually work and are less out of date
Jokes aside, I feel this is really the case. Chatbots have the exact same usecases, but as their response time is measured in seconds instead of days and the responses reflects the context from that moment, this opens the door for more interactive experience and more iterations over the same output.
I feel this anger towards LLMs comes from gatekeepers who felt slighted by having to spend so much effort to reach positions where people with chatbots take instances, and as they can no longer close gates or pull ladders they start to bitch and whine against LLMs. It's as simple as that.
This is it. You will have real developers, as you do today, and developers who are only capable of creating what the latest AI model is capable of creating. They’re just a meat interface for the AI.
from what i gather, the training data often contains those same poorly written docs and often a lot of poorly written public code examples, so… YMMV with this statement as it is often fruit from the same tree.
(to me LLMs are just a different interface to the same data, with some additional issues thrown in, which is why i don’t care for them).
> I think we have a lot of old timers ramping up on their version of "I walked 10 miles to school uphill both ways". Not a good look. We old timers need to do better.
it’s a question of trust for me. with great power (new tools) comes great responsibility — and juniors ain’t always learned enough about being responsible yet.
i had a guy i was doing arma game dev with recently. he would use chatgpt and i would always warn him about not blindly trusting the output. he knew it, but i would remind him anyway. several of his early PRs had obvious issues that were just chatgpt not understanding the code at all. i’d point them out at review, he’d fix them and beat himself up for it (and i’d explain to him it’s fine don’t beat yourself up, remember next time blah blah).
he was honest about it. he and i were both aware he was very new to coding. he wanted to learn. he wanted to be a “coder”. he learned to mostly use chatgpt as an expensive interface for the arma3 docs site. that kind of person using the tools i have no problem with. he was honest and upfront about it, but also wanted to learn the craft.
conversely, i had a guy in a coffee shop recently claim to want to learn how to be a dev. but after an hour of talking with him it became increasingly clear he wanted me to write everything for him.
that kind of short sighted/short term gain dishonesty seems to be the new-age copy/pasting answers from SO. i do not trust coffee shop guy. i would not trust any PR from him until he demonstrates that he can be trusted (if we were working together, which we won’t be).
so, i get your point about doom and gloom naysaying. but there’s a reason for the naysaying from my perspective. and it comes down whether i can trust individuals to be honest about their work and how they got there and being willing to learn, or whether they just want to skip to end.
essentially, it’s the same copy/pasting directly from SO problem that came before (and we’re all guilty of).
So far, AI cannot do that. But it can pretend to, very convincingly.
I think the same tendency of some programmers to just script kiddie their way out of problems using SO answers without understanding the issue will be exacerbated by the proliferation of AI which is much more convincing about wrong answers.
It's not a binary. You don't have to hate or welcome chatbots, no in between. We all use them, but we all also worry about the negatives, same with SO.
So now we can get wrong code but written in a more confident language.
If you are lucky it’s a hallucination and the error is obvious.
The lesson to learn is rather that also in "real life", you shouldn't trust confident people.
Its one thing to have the AI work through the materials and explain it.
Its another thing to have lost a lot of the background information required to sustain that explanation.
Greater productivity, is of course, a subjective measure. If that's all that matters, then being glib is perfectly acceptable. But, the value of that productivity may change in a different context - for example, I find it very difficult to go back to AI-generated code some months later, and understand it - unless I already took the time earlier to discern the details.
We never got to the question of recursive or iterative methods.
The most worrying thing is that the LLM were not very useful three years ago when he started university. So the situation is not going to improve.
I once got that question in an interview for a small startup and told the interviewer: with all due respect what does that have to do with the job I’m going to do and we moved on to the next question (still passed).
If someone tells you not to do it recursively, you should be able to figure that out too.
Interview nerves might get in your way, but it’s not a trick question you need to memorize.
"Let's implement a function to return us the Nth fibonnaci number.To get a fib (fibonacci) number you add the two previous numbers, so fib(N)=fib(N-1)+fib(N+2). The starting points are fib(0)=1 and fib(1)=1. Let's assume the N is never too big (no bigger than 20)."
And that's a problem if they can't solve it.
OTOH about 15 years ago I heard from a friend that interviewed candidates that some people couldn't even count all the instances of 'a' in a string. So in fact not much has changed, except that it's harder to spot these kind of people.
I think it will be a hot minute before nothing has to be known and all human knowledge is irrelevant, but, specially in CS, there is going to be a tremendous amount of rethinking to do, of what is actually important to know.
Really?
If I were to rank the knowledge relevant to this task in terms of importance, or relevance to programming in general, I'd rank "remembering what a Fibonacci number is" at the very bottom.
Sure, it's probably important in some areas of math I'm not that familiar with. But between the fields of math and hard sciences I am familiar with, and programming as a profession, by far the biggest (if not the only) importance of Fibonacci sequence is in its recursive definition, particularly as the default introductory example of recursive computation. That's all - unless you believe in the mystic magic of the Golden Ratio nonsense, but that's another discussion entirely.
Myself, I remember what the definition is, because I involuntarily memorize trivia like this, and obviously because of Fibonacci's salad joke. But I wouldn't begrudge anyone in tech for not having that definition on speed-dial for immediate recall.
> He was unable to explain to me how he would have implemented the Fibonacci sequence without chatGPT.
An appropriate answer could have been "First, I look up what the Fibonacci sequence is on Wikipedia..." The interviewee failed to come up with anything other than the chatbot, e.g. failed to even ask the interviewer for the definition of the sequence, or come up with an explaination for how they could look it up themselves.
Any difficult problem will take the focus out of coding and into the problem itself.
See also fizz-buzz, which it is even simpler, and people still fail those interview questions.
LLM are very poor in areas such as real time and industrial automation, as there is very little data available for training.
Even if the LLM were good, we will always need someone to carry out tests, formal validation, etc.
Nobody want to get on a plane or in a car whose critical firmware has been written by an LLM and proofread by someone incapable of writing code (don't give ideas to Boeing ).
The question about Fibonacci is just a way of gently bringing up other topic.
I see nothing mention here as something that a human inherently needs to concern themselves with, because none of these things are things that humans inherently care about. CS as a discipline is a layer between what humans want and how to make computers do these things. If todays devs are so far detached from dealing with 1s and 0s (which is not at all how it obviously had to develop) why would any of the other parts you mention be forever necessary given enough artificial intelligence?
Sure, it's fun (as a discipline) for some of us, but humans inherently do not care about computer memory or testing. A good enough AI will abstract it away, to the degree that it is possible. And, I believe, it will also do a better job than any human ever did, because we are actually really, really bad at these things.
The reason we ask people to do fizzbuzz is often just to weed out the shocking number of people who cannot code at all.
When the client knows absolutely nothing about it and is not supported by someone competent, they end up employing just anyone.
This applies to both construction, IT and probably everthing.
Instead, you're better off focusing on relevant topics like SQL, testing, refactoring, and soft skills.
These "clever" questions are pointless. They either serve to stroke the interviewer’s ego: "Look, I know this CS 101 problem because I just looked it up!", or to create a false image of brilliance: "Everyone here can invert binary trees!"
But I agree you can hire a shitty programmer, because his soft skills are amazing. I worked with people that wouldn't contribute much to the code, but created a culture and improved processes in the company. But you should be aware that you are not hiring for a coding position then.
that's why i'd ask about duff's device. I often admit i am no programmer or developer, here on HN, and that's true. I've only ever implemented recursion when it's part of the pattern or when "learning" a language.
my understanding is that recursion is great for tight, small loops, where you need to do say 0<n<10 loops. But if you can't guarantee the tight loop every time, i.e., if it is a dynamic part of business logic or whatever, then you run the risk of blowing up the stack, or heap, or whatever it is. I don't remember which, and i could look it up; but my point is most developers don't need to know if the stack is at risk rather than the heap if your recursive call ends up being called a lot of times.
But i really would ask about duff's; me and a friend came up with a use for duff's device maybe 2005 or 2006, and tested it, and published it as part of a forum argument; but i am curious if anyone else could "come up with one" or "remember one" that isn't the "de-facto duff's device demonstration".
Otherwise I recall an old saying: 'Robots will take the job of engineers as soon as being able to figure out and make what the client needs, not what the client asks. I think we are safe'. Along this, I hope AI becomes a good tool, subordinate, or maximum a colleague. But not a father figure for big infants.
His justification was that some AI had endorsed it as the correct method. There are already out there salaried professionals supporting such flawed logic.
IDE's are fantastic tools - don't get me wrong - but if you can't navigate a file system, work to understand the harness involved in your build system, or discern the nature of your artefacts and how they are loaded and interact in your target system, you're not doing yourself any favours by having the IDE do all that work for you.
And now what we see is people who not only can't program without an IDE, but can't be productive without a plugin in that IDE, doing all the grep'ing and grok'ing for them.
There has been a concerted effort to make computers stupider for stupid users - this has had a chilling effect in the development world, as well. Folks, if you can't navigate a filesystem with confidence and discern the contents therein, you shouldn't be touching the IDE until you can.
I have very early (and somewhat fond) memories of reviewing every single index card, every single hole in the punch-tape, every single mnemonic, to ensure there were no undiscovered side-effects.
However, there is a point where the directory structure is your friend, you have to trust your colleagues ability to understand the intent behind the structure, and you can leverage the structure to gain great results.
Always remember: software is a social construct, and is of no value until it is in the hands of someone else - who may, or may not, respect the value of understanding it...
Unfortunately they also project their ignorance, so there’s massive pushback from more senior employees when anyone who does understand tries to untangle the mess and make it more robust.
The same thing will happen with these ML tools in the future, mark my words: writing code will come to be seen as “too complex and error prone” and barely working, massively inefficient and fragile generated code bases will be revered and protected with “don’t fix what isn’t broken”
When they are stuck without it, they get hopelessly lost. They feel strangled, distracted, and find it hard to focus on the road. For about 3 days. Then they pretty quickly get up to speed, and kinda remember where they used to make the left turns when they had GPS, and everything is dandy.
But it happens so infrequently, that it's really not worth the time thinking about it.
And the truth is, I am just guessing what happens after 3 days - since anyone who grew up with GPS will never be that long without it.
I was listening to Steve Gibson on SecurityNow speaking about memory-safe programming languages, and the push for the idea, and I was thinking two things: 1) (most) people don't write code (themselves) any more (or we are going to this direction) thus out of the 10k lines of code, someone may manually miss some error/bug (although a second and third LLM doing code review may catch it 2) we can now ask an LLM to rewrite 10k lines of code from X-language to Y-language and it will be cheaper than hiring 10 developers to do it.
One of the many hysterical scenes I didn’t truly appreciate as a kid.
https://youtu.be/tMZ2j9yK_NY?si=5tFQum75pepFUS8-
Claude 3.7: > I understand the desire to simplify, but using a text array for .... might create more problems than it solves. Here's why I recommend keeping the relational approach: ( list of okay reasons ) > However, I strongly agree with adding ..... to the model. Let's implement that change.
I was kind of shocked by the display of opinions. HAL vibes.
"Get AI to force you to think, ask lots of questions, and test you."
It was based on this advice from Oxford University.[1]
I've been wondering how the same ideas could be tailored to programming specifically, which is more "active" than the conceptual learning these prompts focus on.
Some of the suggested prompts:
> Act as a Socratic tutor and help me understand X. Ask me questions to guide my understanding.
> Give me a multi-level explanation of X. First at the level of a child, then a high school student, and then an academic explanation.
> Can you explain X using everyday analogies and provide some real life examples?
> Create a set of practice questions about X, ranging from basic to advanced.
Ask AI to summarize a text in bullet points, but only after you've summarized it yourself. Otherwise you fail to develop that skill (or you start to lose it).
---
Notice that most of these increase the amount of work the student has to do! And they increase the energy level from passive (reading) to active (coming up with answers to questions).
I've been wondering how the same principles could be integrated into an AI-assisted programming workflow. i.e. advice similar to the above, but specifically tailored for programming, which isn't just about conceptual understanding but also an "activity".
Maybe before having AI generate the code for you, the AI could ask you for what you think it should be, and give you feedback on that?
That sounds good, but I think in practice the current setup (magical code autocomplete, and now complete auto-programmers) is way too convenient/frictionless, so I'm not sure how a "human-in-the-loop" approach could compete for the average person, who isn't unusually serious about developing or maintaining their own cognitive abilities.
Any ideas?
---
[0] Oxford Researchers Discovered How to Use AI To Learn Like A Genius
https://www.youtube.com/watch?v=TPLPpz6dD3A
[1] Use of generative AI tools to support learning - Oxford University
https://www.ox.ac.uk/students/academic/guidance/skills/ai-st...
So the problem seems to boil down to, how can we convince everyone to go against the basic human (animal?) instinct to take the path of least resistance.
So it seems to be less about specific techniques and technologies, and more about a basic approach to life itself?
In terms of integrating that approach into your actual work (so you can stay sharp through your career), it's even worse, since doing things the human way doubles the time required (according to Microsoft), and adding little AI-tutor-guided coding challenges to enhance your understanding along the way increases that even further.
And in the context of "this feature needs to be done by Tuesday and all my colleagues are working 2-3x faster than me (because they're letting AI do all the work)... you see what I mean! It systemically creates the incentive for everyone to let their cognitive abilities rapidly decline.
Edit: Reposted this at top-level, since I think it's more important than the "implementation details" I was responding to.
From there these proompters will have 2 choices, do I learn how to actually code? or do I pay more for the AI to code for me?
Also it stops working well after the project grows too large, from there they'd need an actual understanding to be able to direct the AI - but going back and forth with an AI when the costs are insane isn't going to be feasible.
The brain is not a muscle, but it behaves like one with abilities you no longer use: it drops them.
Like speaking another language you once knew but haven’t used in years, or forgetting theorems in maths that once were familiar, or trying to focus/meditate on a single thing for a long time after spending years on infinite short content.
If we don’t think, then it’s harder when we have to.
Right now, LLMs tend to be like Google before all the ads and SEO cheating that made things hard to find on the web. Ads have been traded by assertive hallucinations.
"Give me the code for"
"Do it yourself, this is homework for you to learn".
Prompt engineering is learning enough about a project to sound like an expert, them you will he closer to useful answers.
Alternatively - maybe if trying to get it to solve a homework like question, thus type of answer is more likely.
Of course, only the sub-intelligent would train so-called "intelligence" on the mostly less-than-intelligent, gut-feeling-without-logic folks' comments.
It's like that ancient cosmology with turtles all the way down, except this is dumbasses, very confident dumbasses who have lots of cash.