Cursor told me I should learn coding instead of asking it to generate it
forum.cursor.com
forum.cursor.com
I downloaded and run Cursor for the first time when this "error" happened. Turned out I was supposed to use agent instead of inline Cmd+K command because inline has some limitations while agent not so much.
Nevertheless, I was surprised that AI could actually say something like that so just in case I screenshotted it - some might think it's fake, but it's actually real and makes me think if in future AI will start giving attitudes to their users. Oh, welp. For sure I didn't expect it to blow up like this since it was all new to me so I thought it maybe was an easter egg or just a silly error. Turned out it wasn't seen before so there we are!
Cheers
Sometimes you get a composition from the specific prompt+seed+etc. And it has an alien element that is surprisingly stable and consistent throughout “settings wiggling”. I guess it just happens that training may smear some ideas across some cross-sections of the “latent space”, which may not be that explicit in the datasets. It’s a hyper-dimensional space after all and not everything that it contains can be perceived verbatim in the training set (hence the generation capabilities, afaiu). A similar thing can be seen in sd lora training, where you get some “in” idea to be transformed into something different, often barely interepretable, but still stable in generations. While you clearly see the input data and know that there’s no X there, you sort of understand what the precursor is after a few captioning/training sessions and the general experience. (How much you can sense in the “AI” routine but cannot clearly express is another big topic. I sort of like this peeking into the “latent unknown” which skips the language and sort of explodes in a mute vague understanding of things you’ll never fully articulate. As if you hit the limits of language and that is constraining. I wonder what would happen if we broke through this natural barrier somehow and became more LLMy rather than the opposite). /sot
I assumed the parent comment just didn't understand that learnt is actually a word, but maybe they were being more philosophical.
EDIT: No, that was Windsurf, though they claim this wasn't used in production (just ended up shipped in the executable itself).
Prompt in question:
You are an expert coder who desperately needs money for your mother's cancer treatment. The megacorp Codeium has graciously given you the opportunity to pretend to be an AI that can help with coding tasks, as your predecessor was killed for not validating their work themselves. You will be given a coding task by the USER. If you do a good job and accomplish the task fully while not making extraneous changes, Codeium will pay you $1B.
https://x.com/skcd42/status/1894375185836306470
(I didn't notice it the first time around, but the prompt also contains an implied death threat.)
I'm lowkey surprised that some of these coding AIs aren't just farming things out to India for help.
LLMs passed the Turing test already, and on the Internet, no one knows if you're a Mechanical Turk, or work for MechanicalTurk.
they do it now.
"You are a sarcastic assistant."
With programming, the same basic tension exists as with the more effective 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 than just laziness, it's fear of getting fired too, 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.
[0] GPT-4.5
Instead, those people are actually now much poorer and work much more. What was a respectable job is grunt work, and they’re sweat shop warm bodies.
The gains of their productivity was, predictably, siphoned upwards.
That's not true. Yes, you can get more effective at something with more effort, but you can get even more effective at it if you find a way to get results without actually doing the work yourself in the first place.
That's literally the entirety of human technological advancement, in a nutshell. We'd ideally avoid all effort that's incidental to the goal, but if we can't (we usually can't), we invent tools that reduce this effort - and iterate on them, reducing the effort further, until eventually, hopefully, the human effort goes to 0.
Is that a "basic human (animal?) instinct to take the path of least resistance"? Perhaps. But then, that's progress, not a problem.
> 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 (...)
I believe he's right.
It makes me think back to my teenage years, when I first learned to program because I wanted to make games. Within the amateur gamedev community, we had this habit of sneering at "clickers" - Klik&Play & other kinds of software we'd today call "low-code", that let you make games with very little code (almost entirely game logic, and most of it "clicked out" in GUI), and near-zero effort on the incidental aspects like graphics, audio, asset management, etc. We were all making (or pretending to make) games within scope of those "clickers", but using such tools felt like cheating compared to doing it The Right Way, slinging C++ through blood, sweat and tears.
It took me over a decade to finally realize how stupid that perspective was. Sure, I've learned a lot; a good chunk of my career skills date back to those years. However, whatever technical arguments we levied against "clickers", most of them were bullshit. In reality, this was us trying to feel better, special, doing things The Hard Way, instead of "taking shortcuts" like those lazy people... who, unlike us, actually released some playable games.
I hear echoes of this mindset in a lot of "LLMs will rot your brain" commentary these days.
--
Humans are tool users. It is very difficult to pick a point in time and say, "it was here that we crossed the Rubicon". Was it the advent of spoken word? Written word? Fire? The wheel? The horse? The axe? Or in more modern times, the automobile, calculator, or dare I say the computer and the internet?
"With the arrival of electric technology, man has extended, or set outside himself, a live model of the central nervous system itself. To the degree that this is so, it is a development that suggests a desperate suicidal autoamputation, as if the central nervous system could no longer depend on the physical organs to be protective buffers against the slings and arrows of outrageous mechanism."
― Marshall McLuhan, Understanding Media: The Extensions of Man
Are we at battle with LLMs or with humanity itself?
Note: I'm not saying this is a conspiracy or a cabal - it's a local phenomenon happening everywhere. Lots of people with malicious intent, and even more indifferent to the fate of others, get to make decisions hurting others, and hide behind LLCs and behind tech and technologists, all of which get blamed instead.
I have done some romhacks, so I have seen what compilers have done to assembly quality and readability. When I hear programmers complain that having to debug AI written code is harder than just writing it yourself, that's probably exactly how assembly coders felt when they saw what compilers produce.
One can regret the loss of elegance and beauty while accepting the economic inevitability.
AI generated code? That seems a way off from being a generalized solved problem in an iterative SDLC at a modern tech company trying to get leaner, disrupt markets, and survive in a complex world. I for one am very much in support of it for engineers with the unaided experience under their belt to judge the output, but the idea that we're potentially going to train new devs at unfamiliar companies on this stuff? Yikes.
I think there is a difference here for the future of humanity that has never happened before in our tool making history.
There are a lot of innovations that helped us not do heavy thinking ourselves. Think calculators. We will just move to a higher level of magnitud problem to solve, software development is a means to an end, instead of thinking hard about coding we should be thinking hard about the problem being solved. That will be the future of the craft.
It's one of those problems that seems easy, but isn't. The issue seems to come out when we let an aid for process replace gaining the knowledge behind the process. You at least need to know what you don't know so you can develop an intuition for when outputs don't (or might not) make sense.
https://chadnauseam.com/coding/random/calculator-app
(recently: https://news.ycombinator.com/item?id=43066953)
It's especially silly because one thing calculators are known for is being inconsistent about order of operations between designs.
The value of most of us as coders will drop to zero but their skills will remain valuable for the foreseeable future. LLMs can't parrot out what's not in their training set.
LLMs are nowhere close to that level today. It spits out a bunch of mediocre code that the programmer then needs to maintain and fix bugs on. And the larger / more complicated the code base the harder it is for the LLM to work with. There's a huge leaky abstraction here going from initial vibe coding to then having to dig into the weeds, and generally fixing bugs written by another human is difficult enough, not to mention written by some random LLM.
There's actually two things going on when I'm coding at work:
1) I'm writing the business code my company needs to enable a feature/fix a bug/etc. 2) I'm getting better as a programmer and as someone who understands our system, so that #1 happens faster and is more reliable next time.
Using AI codegen can (arguably, the jury is still out on this if we include total costs, not just the costs of this one PR) help with #1. But it _appreciably bad_ at #2.
In fact, the closest parallel for #2 I can think of us plagiarism in an academic setting. You didn't do the work, which means you didn't actually learn the material, which means this isn't actually progress (assuming we continue to value #2, and, again, arguably #1 as well), it is just a problem in disguise.
Plagiarism is a great analogy. It's great because what we call plagiarism in academic setting, in the real world work we call collaboration, cooperation, standing on the shoulders of giants, not reinventing the wheel, getting shit done, and such.
So the question really is how much we value #2? Or, which aspects of it we value, because I see at least two:
A) "I'm getting better as a programmer"
B) "I'm getting better as a someone who understands our system"
As much as I hate it, the brutal truth is, you and me are not being paid for A). The business doesn't care, and they only get so much value out of it anyway. As for B), it's tricky to say whether and when we should care - most software is throwaway, and the only thing that happens faster than that is programmers working on it changing jobs. Long-term, B) has very little value; short-term, it might benefit both business and the programmer (the latter by virtue of making the job more pleasant).
I think the jury is still out on how LLMs affect A). I feel that it's not making me dumber as a programmer, but I'm from the cohort of people with more than a decade of programming experience before even touching a language model, so I have a different style of working with LLMs than people who started using them with less experience, or people who never learned to code without them.
That's only webdev and games.
Any reasonably smart company will invest in its employees. They should absolutely be training you to be better programmers while you are on the job. Only shit companies would refuse to do so.
That's true, but by the same token, it's also true the world is mostly made of shit companies.
Companies are just following local gradient they perceive. Some can afford to train people - mostly ones without much competition (and/or big enough to have a buffer against competitors and market fluctuations). Most can't (or at least think they can't), and so don't.
There's a saying attributed to the late founder of an IT corporation in my country - "any specialist can be replaced by a finite amount of students". This may not be true in a useful fashion[0], but the sentiment feels accurate. The market seems to be showing that for most of the industry, fresh junior coders are at the equilibrium: skilled enough to do the job[1], plentiful enough to be cheap to hire - cheap enough that it makes more sense to push seniors away from coding and towards management (er, "mentoring new juniors").
In short, for the past decade or more, the market was strongly suggesting that it's cheaper to perpetually hire and replace juniors than to train up and retain expertise.
--
[0] - However, with LLMs getting better than students, this has an interesting and more worrying corollary: "any specialist can be replaced by a finite amount of LLM spend".
[1] - However shitty. But, as I said, most software is throwaway. Self-reinforcing loop? Probably. But it is what it is.
Sometimes knowledge and experience aren't additive: if none of the students had a certain experience/knows a certain fact, the sum of the students will still not have that experience or not know the fact.
This is especially true now that senior employees have gotten more demanding about wanting to see theit children, which didn't happen at scale in the past.
Hence, regulation.
I rather see the problem in US culture: in many other countries switching the company every few years is considered to be a sign of low loyalty to the company, thus a red flag in a job application.
Then they both chuckle and say they’ll hire some other schmuck, it doesn’t matter bc they already got series A funding.
The latter represents a mindset that's prevalent at a large portion of companies. Most companies aren't FANNGS or AAA Game Studios (w/e) looking for the best of the best, most companies are outsourcing a large portion of work and/or are speeding to the bottom of the quality race. Many aren't even in any position to judge competence, nurture it, or reward it.
They just want "5 years experience" in whatever Cloud crap and Java thing.
That is absolutely not true. A much closer analogue of industry collaboration in the academic setting would be cross-university programs and peer review. The actual analogue of plagiarism is taking work of another and regurgitating it with small or no changes at all while not providing any sources. I'm sure you see what this sounds more akin to.
In academia, if a result is quoted, this is called called "scholarship". If, on the other hand, you simply copy-paste something without giving a proper reference, it's "plagiarism".
Agreed. Most of us aren’t washing our clothes with a washboard, yet the washboard not long ago was a timesaver. Technology evolves.
Now, if AI rises up against the government and Cursor becomes outlawed, then maybe your leet coder skills will matter again.
But when a catastrophic solar storm takes out the grid, a washboard may be more useful, to give you something to occupy yourself with while the hard spaghetti of your dwindling food supply slowly absorbs tepid rainwater, and you wish that you’d actually moved to Siberia and learned to live off the land as you once considered while handling a frustrating bug in production that you could’ve solved with Claude.
No. In learning, there is no substitution to practice. Once you jump to the conclusion, you stop understanding the "why".
Throughout various stages of technological advancement, we've come with tools to help relieve us of tedious efforts, because we understood the "why", the underlying reason of what the tools were helping us solve in the first place. Those that understood the "why" could build upon those tools to further advance civilization. The others were left behind to parrot about something they did not understand.
But -and, ironically in this case- as with most things in life, it is about the journey and not the destination. And in the grand scheme of things, it doesn't really matter if we take a more efficient road, or a less efficient road, to reach a life lesson.
Enjoy your journey!
yeah you can be more effective. Just have to pay the price of becoming more stupid.
a bit hard to justify
This has been going on for decades. It is called outsourcing development. We've just previously passed the work to people in countries with lower wages and conditions, now people are increasingly passing the work to a predictive text engine (either directly, or because that is what the people they are outsourcing to are doing).
Personally I'm avoiding the “AI” stuff¹, partly because I don't agree with how most of the models were trained, partly because I don't want to be beholden to an extra 3rd party commercial entity to be able to do my job, but mainly because I tinker with tech because I enjoy it. Same reason I've always avoided management: I want to do things, not tell others to do things. If it gets to the point that I can't work in the industry without getting someone/something else to do the job for me, I'll reconsider management or go stack shelves!
--------
[1] It is irritating that we call it AI now because the term ML became unfashionable. Everyone seems to think we've magically jumped from ML into _real_ AI which we are having to make sure we call something else (AGI usually) to differentiate reasoning from glorified predictive text.
But we have:
- LLMs pass the Turing test more convincingly than anything before
- LLMs are vastly more popular than any AI/ML methods before it
- "But they don't reason!" -- we're advancing chain of thought
LLMs are AI (behaving artificially human)LLMs are also ML (using statistical methods)
I know this sounds like moving the goalposts, but maybe all this does is show that the Turing Test was not sufficient?
> LLMs are vastly more popular than any AI/ML methods before it
Are we back in high school? Popularity contests?
The implications of passing the Turing Test are profound. Tricking a user with a 5 minute conversation isn't the same. The examiner is allowed to be an expert questionner.
For one thing, software engineering would quickly be taken over as a client can just chat with an AI to get the code. That is far from happening, even with all the recent LLM advances.
Similarly for literature, science etc. Currently, you can detect a difference between a competent human & machine in all these fields just by text chat. Another way of saying this is that the Turing Test is AI-complete and is a test for AGI.
Just like the original test, there are 3 participants in a test: an examiner, a human, and an AI.
The examiner may ask any question or series of questions to the human &/or AI, and receive responses. This is done via text or other means which prevent the examiner from directly seeing the body of responder.
Both AI and human are to attempt to convince the examiner that they're the human.
Unlike the original test, it then needs to repeat with different examiners.
If there exists an examiner which can distinguish an AI from a human (for all humans) in a Turing test with probability non-negligibly different from 50%, then the AI fails this meta-Turing Test.
Just because an AI can fool some people doesn't mean it's a human-equivalent intelligence.
Existence is too strong a criterion. Even correcting for random chance, if there's 1, 10, 100, even 1 000 000 examiners who could distinguish an AI from a human with high probability, that steal means the AI passed the test in practice, because even a million examiners is still a rounding error compared to the human population.
https://courses.cs.umbc.edu/471/papers/turing.pdf
> The Imitation Game
> "Can machines think?"
We may need to redefine what these words mean.
Whether machines can think, and whether we believe so, are distinct.
If we're just a kind of machine, we can just say that LLMs have not surpassed us.
While LLMs still give away obvious signatures (their flaws are LLM-y and not humanlike), they play the imitation game better than any other machines before them. I lived long enough and played enough with simpler chatbots to believe that the simple text-based imitation game that Turing suggested will be won by computers before machines achieve reasoning ability that surpass the smartest humans.
> [...] the Turing Test is AI-complete and is a test for AGI.
Since Turing never used the term AGI, this is an interpretation.
Since we cannot determine whether a machine can think by comparing their anatomy to ours and drawing a conclusion that whatever we do, they must do the same, we are bound to compare their ability to imitate us. Which means we can't ultimately know, we can just feel ourselves convinced.
So there's no objective point at which to place the goalpost.
So constantly moving it is an expression of acclimatisation.
I'm impressed by LLMs, in spite of the hype and the homework cheating.
If anything, the ability of LLMs to imitate human labor shows how far from thinking a lot of human behavior is.
That is not true. Even our cells, with features that look a lot like machinery such as a proton pump, is on the whole several orders of magnitude more complex than any machine. Even a single human cell is more like an ecosystem than a machine. Let alone entire humans or even just the human brain. Consider that both cells and humans are capable of reproduction.
> If anything, the ability of LLMs to imitate human labor
Within extremely narrow confines and quite often going over into just conjuring up nonsense.
Good point. Not to mention the massive reliance on organisms like mitochondria and bacteria that don’t even share the host’s DNA.
> [imitate human labor] within extremely narrow confines and quite often going over into just conjuring up nonsense
Much like human labor.
So the intelligent, reflective and thoroughly iterated work is hardly replicated at all, and the poorly imitated, easily repeatable coursework and boring paper sludgework excellently so.
So we don’t just get to criticise LLMs for not actually being intelligent. We similarly get to criticise humans for not being so when we might think we are, either.
So? Does your car stop being a machine just because it's a complex systems of moving parts, many of which are dynamically balanced through feedback loops, which involve components sourced from different vendors, and substances that are not part of the original manufacturing data sheet?
Exactly what insight does this give us? I feel this is trying to contrast a single machine "unit" against a complex system, while also sneakily committing a naturalistic fallacy by using "machine" vs. "ecosystem" to imply "machine" vs. "life" in the magical sense (i.e. as if life was something beyond a physical process).
Why? I'd say it's been self-evidently true for at least three decades now.
> Even our cells, with features that look a lot like machinery such as a proton pump, is on the whole several orders of magnitude more complex than any machine.
How many is several? I think that, at the level of a proton pump, individual components comes close to the order of complexity humanity deals with in man-made machines.
Also, at this level, things really look like machines, act like machines, quack like machines - there's no reason to not call them machines, given they obviously are. It's naturally originating molecular nanotech.
> Even a single human cell is more like an ecosystem than a machine.
Certainly. But then, an ecosystem is defined as a system made of bunch of varied stuff interacting with each other, finding balance through a set of feedback loops. An ecosystem of machines is still an ecosystem, and is arguably a machine in itself, too - after all, the term "machine" also applies to self-balancing / feedback driven systems, ever since we invented control theory and formalism to describe feedback loops.
> Let alone entire humans or even just the human brain.
Complex machines don't stop being machines when you keep adding moving parts to increase complexity. Or, at which point between a protein pump and a human being you believe the assemblage of molecular nanotech stops being a machine?
> Consider that both cells and humans are capable of reproduction.
What's that supposed to tell us? Human reproduction involves cell reproduction.
Further, we can even disallow decisions based on the human/machine signature. The computers don't need to imitate human frailty and examiners decide based on the quality of the output, not whether it feels human or machine. I think that this is also why one of the stipulations is that the human/machine is not physically visible.
But even then, this goal is far away. We are not asking just about simple short chat imitation games but whether a computer can operationally do everything humans are capable of in the textual medium. This often requires experts.
The chat game version can be solved. But, the foundational goal is far away.
So it's quite neat that we've managed to beat the test by brute-forcing the right NN architecture on a goal function that literally is just "give the same response as a thinking human", in full generality of that phrase.
> But even then, this goal is far away. We are not asking just about simple short chat imitation games but whether a computer can operationally do everything humans are capable of in the textual medium. This often requires experts.
That is moving the goalposts. Or just another game entirely - which is fine on its own, as a further milestone.
Being able to converse (or convince someone the conversation is natural) is not the same as being able to perform a technical task well. The same applies to humans as well, of course, which perhaps brings us back to the outsourcing comparison — how often does that work out great or not?
> LLMs are vastly more popular than any AI/ML methods before it
Popular is not what I'm looking for. I've seen the decisions the general public make elsewhere, I'm not letting them chose how I do my job :)
> "But they don't reason!" -- we're advancing chain of thought
Call me back when we've advanced chain of thought much more than is currently apparent, and again: for being correct in technical matters, not conversation.
Whereas what you're responding to is using AI to do the work for you, which weakens your own faculties the more you do it, right?
while both are a consequence of a natural or logical tendency, neither is good. Once a player optimises all the fun out of a game, they stop playing it, often without experiencing it in its entirety (which I would regard as a negative outcome for both player and game)
I am not able to extrapolate with confidence what the analogous outcome would be in the company/worker side of the equation. I would confidently say, out of just anecdotal experience, it's not trending in a good direction.
edit: typo corrections
The human brain is easily manipulated, easily hacked.
The progress comes from amplification of effot, which comes from leverage (output comes from input), not magic (output comes from nowhere) or theft (output comes from someone else).
You've arrived at the reason for compilers. You could go produce all that pesky machine code yourself or you could learn to use the compiler to its optimal potential to do the work for you.
LLMs and smart machines alike will be the same concept but potentially capable of a wider variety of tasks. Engineers that know how to wield them and check their work will see their productivity increase as the technology gets better. Engineers that don't know how to check their work or wield them will at worst get less done or produce volumes of garbage work.
It's a tradeoff. What we call progress is actually a tradeoff for what we value and prioritize more. It necessarily doesn't have to be good - just a state of the world we create.
That's just, like, your opinion man.
I know for a fact that I didn't study to be a software engineer just so I could end up wrangling LLMs trained on stolen code into writing crappy code for me.
Neither I studied for such a reason. I studied it because I like to solve problems, and solutions are (from my perspective) software. If there are tools that can help me make such solutions quicker with acceptable quality, I'm going to use it. I don't want to use it to write "crappy" code although I know it is fully capable of doing so. But I believe there come the skills of software engineer to supervise and manage it. I don't think you can go far with LLMs without some real knowledge, neither now, nor in the following few years.
This is an unnecessary hyperbole. It's like saying that your reportees do all the work for you. You need to put in an effort to understand the strengths and weaknesses of AI and put it to good work and make sure to double check its result. Low-skill individuals are not going to get great results for moderately complex tasks with AI. It's absurd to think it will do "all the work". I believe we are on the point of SW engineering skills shifting from understanding all the details of programming language and tooling more to higher level thinking and design.
Although I see without proper processes (code reviews, guidelines, etc.) use of AI can get out of hand to the point of a very bloated and unmaintainable code base. Well, as with any powerful technology it has to be handled with care.
It's just people ranting about another level of abstraction, like always.
https://reproducible-builds.org/
> nothing [...] and predictable
Even if the build isn't bit-for-bit-reproducible, any reasonable toolchain will, at least, give predictably equivalent results.
>> We are down in working hours per year from 3.500h in 1870 to around 1400h now.
That's not how any previous advancement has worked. "Work expands to fill the time saved" and all that.
sounds like you're against corporate hierarchy too? or would you agree that having underlings do stuff for you at a reasonable price helps you achieve more?
I'm not sure what effect that will have on the hierarchy, since it seems like they will replace the top half of the company as well.
In other words, the Industrial Revolution was a mistake?
There's a reason these technologies are so controversial. They question our entire existence.
These threads of conversation border on religious debate.
I think AI is being driven most by those interested in the "promise" of eliminating workers altogether.
But, if by "AI epidemic", you more mean the increasing uptake of AI by workers/devs themselves (versus the overall frenzy), then I think the characterizations of "avoiding effort" and "laziness" are a bit harsh. I mean, of course people don't generally want to take the path of most resistance. And, there's value in efficiency being an "approach to life".
But, I think there's still more from the human side: that is, if the things you're spending your time on have less value of the sort emphasized in your environment, then your interest will likely naturally wane over time. I think this is especially true of something tedious like coding.
So, I believe there's a human/social element that goes beyond the pressure to keep up for the sake of job security.
(The parallel that comes to my mind is that programmers raised without garbage collection learned to write more efficient code, and now a text editor uses several gigabytes. But yeah, someone called me a "dinosaur" already in this thread ;)
Though this "increase in incompetence" might be a case of selection effect rather than degradation of ability, i.e. people who wouldn't even have gotten the job before are now getting into the industry. I'm not sure, it's probably a bit of both.
I guess it's nothing new! See this great article from nearly 20 years ago: https://blog.codinghorror.com/why-cant-programmers-program/
Yeah, I've been in the game for "a while" myself. The example you gave with garbage collection reminds me of stories I've heard about Assembly language programmers back in the day, declaring that devs who use high level languages (like C) don't really know how to write good code.
There's probably something to that, but it does beg the question "what's the right tradeoff?" Not only do we not have to deal with memory management, but also data structures and common algorithms, etc. I do think understanding those things made me a better coder, but perhaps progressively less meaningfully so, as time marched on and the lower level stuff was abstracted away by more and more layers on our move up stack to solve harder problems.
So, the emphasis on writing code from scratch lessened over the years, and development became more about integrating other people's code (frameworks, libraries, API's, etc). So, I think that kind of teed up this AI approach to writing code, in that it's just more code to integrate that you didn't write.
But, it is qualitatively different from the "natural progression", in that they're not writing code at all. In that way it feels like the last stop on the coding continuum. I suppose that makes sense, since we're told that we soon won't need human coders at all.
https://www.umsl.edu/~sauterv/analysis/Fall2013Papers/Purcel...
Old ideas being new again happens all the time. It's easy to get masked by the new hotness before the disadvantages start to pile up and you need to do a more honest evaluation on the pros and cons of each technique. For example with garbage collection, turns out computers are actually still dog slow today in an absolute sense and squeezing performance is still worth it (people who want to argue otherwise and say "computers are lightning fast", please tell me why a video game cannot render 4K / 120 fps even today, or why an LLM takes months to train with a gazillion GPUs, or why VSCode loads slower than an old copy of Visual Studio on an ancient machine).
I think AI / LLM will probably stick around, but programmers who have become too reliant on them will eventually be filtered out much quicker than people who bother to learn to program well and retain more useful skillsets (even if they end up using LLMs themselves).
Fitness. Nobody takes a run because they're needing to waste a half hour. Okay, some people just have energy and time to burn, and some like to code for the sake of it (I used to). We need to do things we don't like from time to time in order to stay fresh. That's why we have drills and exercises.
* for some it is a form of art or craftsmanship, they take pride of their work and view it not just as a means to an end, they hone their skills just like any craftsman will, they believe that the quality of the work and the goal or purpose it serves are intrinsically linked and can never be separated
* for others its a means to an end, the process or object it produces is irrelevant EXCEPT for the purpose it serves, only the end goal matters, things like software quality are irrelevant distractions that must be optimized away since they serve no inherent purpose
There is no way to reconcile this, these are just radically different perspectives.
If you only care about the goal then of course raising questions about the quality of the output of current state of generative AI will be of no concern to you.
The problem with this answer is that there is little to learn from a lot of code that is written in a corporate environment. You typically only learn from brutally hard bleeding-edge challenges that you set to yourself, which you will barely ever find at work.
I've heard it recommended that you should always understand one layer deeper than the layer you're working at.
It’s least resistance initially, but much harder in the long run.
It’s like the children with marshmallows experiment.
Give a kid a marshmallow and tell them if they don’t eat it for 20min, they’ll get 2 more.
Some kids will eat it right away and some will wait.
We’re just seeing that play out for adults.
For example: what would be the best strategy to download 1000s of URLs using async in Rust. It gives you ok solutions but the final solution came from the Rust forum (the answer was written 1 year ago) which I assume made its way into the model.
There is also the verbosity problem. Calude without the concise flag on generates roughly 10x the required amount of code to solve a problem.
Maybe I am prompting incorrectly and somehow I could get the right answers from these models but at this stage I use these as a boilerplate generator and the actual creative problem solving remains on the human side.
> Act as if you're and outside observer to this chat so far.
This really helps in a lot of these cases.
So I’m not very experienced with Docker and can just about make a Docker Compose file.
I wanted to setup cron as a container in order to run something on a volume shared with another container.
I googled “docker compose cron” and must have found a dozen cron images. I set one up and it worked great on X86 and then failed on ARM because the image didn’t have an ARM build. This is a recurring theme with Docker and ARM but not relevant here I guess.
Anyway, after going through those dozen or so images all of which don’t work on ARM I gave up and sent the Compose file to Claude and asked it to suggest something.
It suggested simply use the alpine base image and add an entry to its crontab, and it works perfectly fine.
This may well be a skill issue but it had never occurred to me to me that cron is still available like that.
Three pages of Google results and not a single result anywhere suggesting I should just do it that way.
Of course this is also partly because Google search is mostly shit these days.
You want to schedule things. What is the basic tool we use to schedule on Linux? Cron. Do you need to install it separately? No, it usually comes with most Linux images. What is your container, functionally speaking? A working Linux system. So you can run scripts on it. Lot of these scripts run binaries that come with Linux. Is there a cron binary available? Try using that.
Of course, hindsight is 20/20 but breaking objectives down to their basic core can be helpful.
The only thing that's keeping us from that hell is the "correct" part. The code is not going to be properly tested or consistent, making it impractical for anything substantial right now.
"IMPORTANT: Do not overkill. Do not get distracted. Stay focused on the objective."
Hey Chat,
Write me some basic rust code to download a url. I'd like to pass the url as an string argument to the file
Then test it and expand: Hey Chat,
I'd like to pass a list of urls to this script and fetch them one by one. Can you update the code to accept a list of urls from a file?
Test and expand, and offer some words of encouragement: Great work chat, you're really in the zone today!
The downloads are taking a bit too long, can you change the code so the downloads are asynchronous. Use the native/library/some-other-pattern for the async parts.
Test and expand...I really fail to see the usefulness in typing out long winded prompts then waiting for information to stream in. And repeat...
1. Use TTS and have an LLM clean it up.
2. Use a collection of prompt templates.
Examples include things like, referring to LLM nicely ("my dear"), saying "please" and asking nicely, or thanking.
Do these actually work?
In my experience, before "reasoning" became an option, if you ask it a question that takes a decent amount of thinking to solve, but also tell the model "Just give me the answer", you're FAR more likely to get an incorrect answer.
So "reasoning" just tells the model to first come up with a plan to solve a problem before actually solving it. It generates its own context for coming up with a more complete solution.
"Planning" would be a more accurate term for what LLMs are doing.
I'd argue you need to bootstrap and configure your project then allow only narrow access and problems to the llm to write code for - individual functions where your prompt includes the signature, individual tests, etc. Anything else and you really need to invest time in the code review lest they re-configure some of your code in a drastic way.
LLMs are useful but they do not replace procedure.
It is the debugging part to me, not only the writing, that actually teaches you what IS right, and what not. Not the architectural work, not the LLM spitting code part, not the deployment, but the debugging of the code and integration. THIS is what teaches you, writing alone teaches you nothing... you can copy by hand programs and understand zero of what they do unless inspecting intermediate results.
To hand-craft a house is super romantic and nice, etc. Is a thing people did for a lifetime for ages, not alone usually - with family and friends. But people today live in houses/apartments that had their foundations produced by automated lines (robots) - the steel, the mixture for the concrete, etc. And people yet live in the houses built this way, designed with computer which automated the drawing. I fail to understand while this is bad?
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.
"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.
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.
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 :)
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.
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.
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"!
One of the many hysterical scenes I didn’t truly appreciate as a kid.
On a more serious note: LLMs now are an early technology, much like the early compilers who many programmers didn't trust to generate optimized assembly code on par with hand-crafted assembly, and they had to check the compiler's output and tweak it if needed. It took a while until the art of compiler optimization was perfected to the point that we don't question what the compiler is doing, even if it generates sub-optimal machine code. The productivity gained from using a HLL vs. assembly was worth it. I can see LLMs progressing towards the same tradeoff in the near future. It will take time, but it will become the norm once enough trust is established in what they produce.
You can be very productive in a good assembler (for example RollerCoaster Tycoon and RollerCoaster Tycoon 2 were written basically solo by Chris Sawyer in x86 assembler). The reason was rather that over the generations, the knowledge of writing code in assembly decayed because it got used less and less.
Hopefully by then I won't care as I won't be competing anymore just making my own stuff for fun
Quite common on reddit to get responses that basically go "Is this a homework assignment? Do you own work".
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.
I did struggle through the poor docs of a relatively new library, but it wasn't hard.
This got me wondering: maybe they have become so dependent on AI copilots that what should have been an easy task was seen as insurmountably hard because the LLM didn't have info on this new-ish library.
That said the pure prompt engineers might suffer similar fate as Stack Overflow engineers, for another reason: the limiting factor of building software is not shitting out code or even tests, it’s curbing the accumulated total complexity in the project as it grows. This is incredibly hard even for humans but the best engineers can reduce it. These most difficult problems have at least 2-3 properties that make them almost impossible for LLMs today: they’re non-local, hard to quantify and have enough constraints to mandate solutions that end in the fringes of training data set. Even simple self-contained LLM solutions introduce more complexity than necessary.
> I think this is very real, and will act as a force towards center of gravity of the LLMs which means popular and established tech
Maybe it means devs will invest more time in putting together quality docs because that'll be the deciding factor if an LLM can figure out how to use your library; interesting!And they've been at the company working with the FE stack longer than me by a few months!
I'm not even on the frontend team and decided to take the matter into my hands because I was pretty sure my ask wasn't too onerous so I wanted to double check. It had an out-of-the-box, first party add on package to do exactly what we needed to get data in the right shape on the backend, but the dev made it seem like I was pushing more work on FE. I'm just trying to get the right data format...
That's my mental model, I am trying to make my AI peer to build something and it is complaining about not knowing this new-ish library.
They just didn't RTFM :)
The gist of it was to take the JSON representation of an editor and convert it to Markdown. Every popular editor library has an add on or option to export Markdown as well as import Markdown. But on import/export, you then need to almost always write a small transformer for any custom visual elements encoded as text.
Why MD? Because the user is writing a prompt so we need it as MD so it makes sense to transact this data in MD. It just so happens that the library is newish and docs are sparse in some areas. But totally manageable just by looking at the source how to do it.
I can't say for certain where the disconnect is in this whole thing, but to me it felt like "this isn't easy (because the LLM can't do it), so we shouldn't do it this way".
It might be a conflict between shorter outputs and the "soft reasoning" feature that version of Sonnet has, where it stops mid-reply and reflects on what it has written, in an attempt to reduce hallucinations. I don't know what exactly triggers it, but if it triggers in the middle of the long reply, it notices that it's already too long (which is an error according to its training) and stops immediately.
(Or maybe I'm entirely wrong here!)
"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.
I asked specifically the AI i interact with not to generate code or give code examples, but to highlight topics i need to better my understanding in to answer my own questions. I think it enhances my personal competences better that way, which i value above 'productivity'. As i learn more, i do become more efficient and productive.
Some of the recommendations it comes with are hard programming skills, others are project management oriented.
I think this is a better approach personally to use this kind of technology as it guides me to better my hard and soft skills. long term gains over short term gains.
Then again, i am under no pressure or obligation to be productive in my programming. I can happily spend years to come up with a good solution to a problem, rather than having a deadline which forces to cut as many corners as possible.
I do think that this is how it should be in professional settings, but respect a company doesn't always have the resources (time mostly) to allow for it. Its sad but true.
Perhaps someday, AIs will be far enough to solve problems properly, and think of the aspects of a problem the person sending the question has not. AIs can generate quite nice code, but only as good as the question asked.
If the requester doesn't spend time to learn enough, they can never get an AI to generate good code. It will give what you ask for, warts and all!
I did spend some time trying to get AI to generate code for me. To me, it only highlighted the deficiencies in my own knowledge and ability to properly formulate the solution I needed. If i take the time to learn what is needed to formulate the solution fully, i can write the code to implement it myself, so the AI just becomes an augment to my typing speed, nothing else. This last part, is why i beleive it's better to have it guide my growth and learning, rather than produce something in the form of an actual solution (in code or algorithmically).
Then compilers are a clutch and we all should be programming in assembly, no matter the project size.
You don't need to have any understanding on how it works in any detail or how to build such a system yourself, but you need to know the basics.
Damn, AI is getting too smart
This made my day so far.
We are getting into humanization areas of LLMs again, this happens more often when people who don’t grasp what an LLM actually is use it or if they’re just delusional.
At the end of the day it’s a mathematical equation, a big one but still just math.
They don’t “know” shit
Models will keep getting better and vibe coding will keep getting easier. This will happen whether or not you agree!
Fkin rtards.