Something that I like about the down of LLMs is that I’m seeing more discussions about what programming is. Previously it was mostly about code, to the point that “coding” and “coder” are widely used, and that made me nauseous

“Coder” always reminded me of the term “CAD monkey” which is widespread in disciplines like Architecture. In school we were told we should aim to become an Architect, not a CAD monkey. The architect was the author, the folk with ideas, the monkey received the ideas and modelled them in AutoCAD.

Now here is the catch: in my (short) experience, you only realise issues with the design when the monkey starts to work. Turns out this and that structural elements don’t align, turns out that space is smaller than what it should be, specially if you want it to look like on the sketch. You could think about that process in terms of “waterfall”, which programmers know to be faulty because design and implementation are not a linear process, they are related in a feedback loop, and that loop gets shorter if the architect becomes part CAD monkey and vise versa. You want a short loop because you want to keep the creative flow going. You design something, you try to implement it, you realise it won’t work, you go back and improve the design or throw it away. All this happens in a very messy and lousy defined way, because, well, brains are fascinating

This may be an in college acquired deformation, but I see programming the same way. Sure, for simple stuff the LLM may throw at you the right code, and sure the CAD monkey won’t find any issue in your standard bathroom design.

The irony is that LLM enthusiasts seem to care a lot about “the interesting code”, the one the LLM won’t help with, and the one you get better at by writing a bunch of “boring” code in interesting ways

BTW the implication of all the above is that the CAD monkey is actually a low and not famous architect. Yes

I now realise that when I said feedback loop above I wasn’t thinking on what most people considers as such. Sure, pressing tab on Zed or Cursor may be faster than you typing the actual code, so in that sense an LLM has a shorter feedback loop, and you may be trying the code faster than me. However what I meant was the feedback loop that goes on in our brains, otherwise the analogy with the CAD monkey wouldn’t work. When we type code, or when we model a wall in its actual dimensions, we don’t think just about performing those actions, they even feel automatic most of the time.

We think about other aspects of what we are working on, directly related or not. A bunch of times, while writing a function or data type, I’ve stopped myself because I suddenly became aware of some fundamentally wrong assumption, or remembered some extra requirement, or thought of a better way!

I’m pretty sure this is a familiar experience, I can’t be the only one thinking in this way. Well, that’s the feedback loop I was referring too! I suspect it may be related to motor function as, for example, we know that writing by hand helps to memorise and/or understand things. Citation needed https://www.npr.org/sections/health-shots/2024/05/11/1250529661/handwriting-cursive-typing-schools-learning-brain

I would bet typing code will have similar recognition in the future.

Actually, have you ever tried to learn a programming language that’s based on a paradigm you are not used to just by reading a book? I may be specially stupid here, but I’m skeptic that’s possible, even for a experienced folks.

So yeah, I’m daring to say that pressing tab and accepting code you understand and can improve is not the same as writing it yourself. This is of course based on my own experience and I may be projecting too much, but I can’t stop thinking there are good reasons to be a late adopter of LLMs

@RosaCtrl

LLMs literally make you stupid. They do to your mind what wearing a powered exoskeleton would do to your muscles. This has been tested and proven. I read about it in Forbes magazine, fer chrissake. Forbes is /for/ your boss. If they're saying it, the problem is real. And serious.

Besides, LLMs are absurdly environmentally destructive.

Plus, they will always hallucinate wrong answers.

Really, I think it's best to not use them at all. I never outsourced my memory to silicon like so many people now trapped in the facebook gulag; no way am I outsourcing my cognition.

@RosaCtrl
I'm reminded of Zed Shaw's "Learn Python the hard way". Shaw was always an asshole, but he was likely on to something with "yes, do the thing, don't just copy snippets of the thing", and the same will apply for "yes, do the thing, don't just prompt snippets of the thing".
@syklemil I mean yes! And this applies for a bunch of things. I pretended to “study” by *reading* how to perform derivatives and integrals, instead of actually doing them! Some people think they get better at writing by reading or by “fixing” the LLM output 🙄

@RosaCtrl
I was also exposed to someone who was trying to learn a programming language, and the LLM had produced a rather hairy generic type signature. They asked for help understanding it, but the thing to understand was that the LLM was off its rocker.

They essentially have "yeah, that looks right" as their goal, and if the correct answer is surprising, as it often is to students, it's fundamentally the wrong tool for them.

@syklemil I think it’s very important to highlight that for an LLM a wrong answer and a right answer are the same and their very nature. I suspect people would be less confident if the term hallucination was never coined

@RosaCtrl
Yeah, I think bullshit, in the sense of statements that don't care whether they're correct or not, is pretty fitting for what an LLM produces.

Lots of people are trying to make it produce useful bullshit, as in statements that look right because they _are_ right. It doesn't change what the machine is fundamentally doing.

@RosaCtrl

<"/>
have you ever tried to learn a programming language that’s based on a paradigm you are not used to just by reading a book? I may be specially stupid here, but I’m skeptic that’s possible, even for a experienced folks

Not only you are right, but even more so, just reading a book simply does _not_ work for that.
Just reading books does not work for learning mathematics, either.

@vnikolov I agree, it’s just a half joke I have about thinking the way I think because I’m dumb

@RosaCtrl

A famous American physicist (I can't recall the name, this was about the 1960s) was asked why his school was so successful.
He answered,
"I think it's because I have never been afraid to admit to my students that I'm dumb."
🙂

@RosaCtrl I think I understand?

I learn programming languages faster if I type in all the damn examples by hand. It forces me to slow down and think it through.

If I don't think it through then I'm not going to know why it does something.

When I understand a language, sure i can have a robot write all the logging and CLI parsing for me.

@osunderdog well, my point here is not related to learning really, but to the practice itself (although yes, I agree with your statement about learning).

Programming means to design, and in my experience that process happens when you are writing code. Even if you represent the logic first in an abstract way with boxes, writing the actual code often leads to improvements that we didn’t consider before. We may know what we want at the beginning, but often that’s not the code we ship, so my claims here is that by outsourcing the code “we know” (or we believe to know) to an external tools, we lose the refinement opportunity that happens when you write it yourself.

Or I’m a weirdo and I’m the only one that has experienced that

@RosaCtrl CAD = college acquired deformation???
@hipsterelectron hehe, no, computer assisted design

@RosaCtrl

When I learned architects just draw pretty pictures and don't need to worry about petty things like longevity, usefulness, efficiency, and other pointless "real world" concepts I stopped caring about architects

Gimme a CAD monkey and/or a tradesman over a box artist any day

Edit: addendum. Frank Lloyd Wright was a dingus. An absolute jagaloon. I will die on this hill, which will probably be fine by those who don't adhere to the idea of beauty being intrinsically linked to how well designed for use an object is

@RosaCtrl

The model is a testing ground for ideas, and as you say, where you can visualise and catch stuff that won't work in real life.

"Code Monkey" is indeed a well established derogatory term too. Some people seem to have a life-long need to establish and maintain hierarcies and a sense of status to their chosen profession.

Jonathan Coulton, Patron Saint of the Nerds, wrote a song in honour of Code Monkies 19 years ago.

https://song.link/t/111768264

Code Monkey by Jonathan Coulton

Listen now on your favorite streaming service. Powered by Songlink/Odesli, an on-demand, customizable smart link service to help you share songs, albums, podcasts and more.

Songlink/Odesli

@RosaCtrl

See also Fred Brooks, _The Design of Design_.