This originally began as one lengthy post but I’ve broken it into multiple posts that are more digestible. This is part 8.
This eponymous post applies to developers of all skill levels, but especially to newer developers.
The metaphor I keep coming back to is to imagine your journey as a developer as similar to one as a mountain climber, or perhaps more on-brand for this blog: the Sisyphean task of pushing a boulder up a mountain.
Pushing a Boulder
If we can imagine getting the boulder to the top of the mountain as “solving a problem with technology”, then the act of pushing the boulder up is “identifying the problem, charting a path towards a solution, and writing the code to solve the problem”.
Using an LLM would, in its most ideal case, be something like using a cable-pulley system to pull the boulder up, or using a tractor to push it, etc. In reality maybe the LLM takes you up to the peak of the wrong mountain, or to a sub-summit peak, or pulls only part of the boulder, etc.
In this metaphor, the benefit of pushing the boulder yourself is that it builds your leg and arm strength. It builds your determination. It builds your self-confidence (noted in the CMU study, above). It hones your ability to identify the smoothest path up the mountain.
Utilizing external forces – the cable pulley, the tractor – to do this work for you, that’s not going to build those traits that you need to do it on your own. Worse yet, the underutilization of those traits will likely weaken them.
Every mountain is different, even if they all have a summit. Some mountains are not going to be able to utilize the cable-pulley or tractor for some or all of the ascent. In those scenarios, you will be forced to push it yourself, relying on your bodily strength, situational path awareness, and force of will to continue that challenging ascent.
Becoming & Staying Strong
You aren’t going to forget everything you know because you had the boulder dragged up the mountain once, or even twice. But be vigilant about your habits: are you finding yourself consistently taking the easy way out?
For newer devs, my advice is to completely eschew all LLMs while you are still learning. “Treat them as a junior, not a senior” means that while you are a junior yourself, you don’t use them because there aren’t any tasks you can delegate that you’ve yourself mastered.
You are probably going to see your peers that are doing things with generative LLMs appear to be advancing more quickly. These will be the same peers that inevitably post on reddit
- “Got Hired for my Potential, now struggling to keep up without AI”
- “Help! I can not code without AI!”
- “Programmers, have you ever had a coworker that had no clue what he/she was doing and always had to use AI to get the work done?”
- “I can’t code anything without ChatGPT or a tutorial - how do I break this”
Start strong. Stay strong.