When I started to programme in 2022, a common (and correct) advice was to “get your hands dirty”. Start by making simple things happen (doesn’t matter what). The only way to “get” programming was to try to make simple things work, understand (viscerally) how the tiniest typos or logic errors can derail the project, and take things from there.
This is no doubt still true to some extent. Someone who hasn’t wrangled with the terminal and/or setting up an IDE arguably doesn’t “get” programming at all.
But in the age of Github co-pilot and large language models, I suggest the advice needs serious qualification.
Debugging used to be a very difficult process for beginners. For example, learning how to use a C debugger is almost an art in itself: pre-ChatGPT, many beginners (e.g. at School 42) are simply chose to take a break and step through the code in their minds instead.
But now, for small-scale beginner-level bugs, debugging has become almost trivial. Just copy and paste the code, and LLMs can (quite reliably) spot the errors quickly and explain what went wrong.
The pain points in debugging used to be the place where people learnt programming. This is now gone.
Instead, the current state of technology makes code reading arguably a more effective way of learning programming.
The problem of code reading in the past is that the activity was entirely passive. Just passing your eyes over some symbols on a page skips over the difficult points.
LLM-integrated IDEs (e.g. cursor) change this. One can start with running a programme, preferably short explanatory programmes purposely written to a certain point (e.g. https://github.com/lhartikk/naivechain). And then one can trace through the code, make small modification, and ask questions, either in the IDE itself or via voice (e.g. ChatGPT voice).
That way, one can absorb the concept behind a whole new technology (e.g. blockchains) directly, while at the same time constantly testing one’s understanding at a small scale. This is a much more direct appreciation of what is going on than either copying and pasting LLM generated code, or writing a lot and debugging a lot.
(Incomplete: to be developed into a wider, speculative argument about the dynamics between activity and contemplation as complimentary modes of learning as a lifestyle choice. Contemplation had the weaker hand from 2000-2020 because of lack of reliable feedback (which was newly enabled by web technologies and instant-feedback mechanisms). But with an clamour of discordant feedback from attention capitalism strengthened by LLMs, the pendulum has swung back in favour of the contemplative life again.)