Thomas Frank @TomFrankly 2024-10-11
A few people saw me coding while I was in LA last weekend and asked,
āHey, do you use Cursor or Copilot?ā
I do not, and I think itās important to share the reason why.
I tested Copilot in VS Code for a few months earlier this year. Yes, it feels like magic.
But then I noticed a change in my behavior. Iād type up the name of a function I wanted to createā¦
ā¦and then Iād just wait.
I was waiting for the robot to do my thinking for me.
Iāve heard @ThePrimeagen call this the āCopilot Pauseā and that was 100% my experience.
I remember initially having this defensive thought pattern:
āWell, code auto-complete isnāt going away, and Iām still getting good at the higher-level architecture! I shall be the conductor of machines, all shall love me and despairā
But that wasnāt true at all. In reality, I was just unconsciously outsourcing my ability to solve problems in addition to outsourcing knowledge of the syntax.
So I uninstalled it (and saved myself the $10/mo in the process).
I do use LLMs in the browser, but in a conscious way. I make a point of seeking out official docs, and of trying to interpret error messages myself instead of mindlessly pasting them.
I do think these tools are extremely useful.
But it also seems that, just as extremely, they entice me to change my habits around problem-solving and mental effort ā for the worse.
I think itās very important to be careful how much we rely on them.
Sever @SeverMM 2024-10-12
You could soon post your repos to Etsy - āhand crafted code with tiny imperfections that only humans can makeā
Thomas Frank @TomFrankly 2024-10-12
Iāll embroider my code on quilts
kitze @thekitze 2024-10-11
bad take. writing repetitive code manually belongs in the past. writing some complex and architecture code manually is still fine
try supermaven. treat it as a fancier autocomplete. there is no āwaiting for copilotā thereās just tab driven development
Thomas Frank @TomFrankly 2024-10-11
Do you believe new developers simply donāt need a working understanding of programming concepts, or the tooling theyāre working with?
Matt Kuda @MattKuda 2024-10-11
I think youāre undervaluing the āoutsourcingā aspect.
I become a better developer by shipping more frequently and getting reps seeing a project through from start to finishānot by meticulously centering every div on my landing page.
Hours spent building and iterating > hours spent rehearsing beginner code.
Thomas Frank @TomFrankly 2024-10-11
How long have you been coding?
I can only communicate from my experience, and I wouldnāt even classify myself as being at junior level.
My worry is over-use of these tools will prevent me from ever even getting to that level.
For example, I used a ton of Node functions in my code for long time without understanding any of them. Only recently did I force myself to write stuff from scratch, and in the process learned the difference between exec and spawn (and realized I had been using the wrong one for a very long time).
LLMs never taught me that difference because I didnāt know to ask. I had just accepted the modelās suggestion and moved on, unwittingly making my code very inefficient in its use of memory.
I want to become a better developer, and I believe that means truly having to work with, and understand, my tools.
Manosai @manosaie 2024-10-11
I appreciate the thoughtfulness, and also share some of the underlying concern you felt in the near-term.
I wouldnāt articulate your defensive thought in the same way. But I do think thereās something about both these skill sets having their respective place. If you assume progress and the evolution of technology are constants, then isnāt it our human nature to evolve alongside these constants? We didnāt stop exercising when we invented cars, we didnāt stop reading paper books when we invented the Internet.
There will be a place for the deeper understanding and problem-solving skills of coding, but it will also evolve based on the needs of efficient software building.
Thomas Frank @TomFrankly 2024-10-11
I should say my post is coming from a beginner/intermediate perspective. And since I made a video on learning to code last year that did well, I have to assume that many folks who follow me are also beginners as well.
Thereās some great discussion on this thread around using these tools at the senior dev level, and at that level they do seem quite useful. There might still be a bit of atrophy risk, but the damage potential there is probably minimal.
Still, for folks at my level, I think thereās a very real risk that over-reliance on these tools leads to over-confidence in oneās own skills, and either a significant delay in becoming a true expert or it never happening altogether.
Your examples are interesting, too:
āWe didnāt stop exercising when we invented carsā
I strongly disagree with this one. Car dependent infrastrucure correlates strongly with obesity and prevelance of metabolic syndrome.
In these places, folks now have to fit dedicated exercise time into their days (especially if their job isnāt blue-collar). Most donāt.
āWe didnāt stop reading paper books when we invented the Internetā
Iāve seen a lot of comments from teachers lamenting how their students donāt have the attention span to read a full book āĀ and theyāll note that this trend seems to worsen each year.
Folks definitely still read books, but it does seem that internet use has had an effect on attention span and how likely a person is to read more challenging books.
Nicholas Carrās book The Shallows is a good read on this (and on how tool use always changes the brain).
Arthur @artorius_drake 2024-10-11
They are completely inferior at writing code. What they are very good at is assisting with the enumeration of knowledge spaces that I am unfamiliar with. A good LLM is very useful to figure out the stuff that I didnāt know that I had to know. It is normal learning from there.
Thomas Frank @TomFrankly 2024-10-11
Totally agree with this. For me the biggest strenght of an LLM is that I can ask it questions that will expose me to new concepts I wouldnāt have come across using other tools.
I can ask something like āWhat would a senior JS dev consider given this function and its intended use?ā
For me, thatās intentional use of the tool and itās genuinely useful. Itās the reason I know as much as I do about error handling, concurrency, and a bunch of other concepts I wouldnāt have known to look up otherwise.
DeFish @TygerrFish 2024-10-11
autocomplete definitely develops some bad pavlovās dog type habits. although Iāve had a lot of success with having dialogs with the AI where iāll say hey iām trying to build this and was planning on doing it āthis wayā do you have any better approaches? if yes why?
Thomas Frank @TomFrankly 2024-10-11
I do the same dialogue thing and itās very helpful. I do still think thereās a risk of over-reliance, but itās far lower. I feel the bar is low enough that I donāt fall into a habit of avoiding docs
Brandon Kindred @brandonkindred 2024-10-11
You should try Cursor. Itās not like copilot. It has that auto feature, but I mostly use Cursor to chat with the AI. I have to think through exactly what I want it to do and how I want it done. Writing it out gives me clarity and it suggests code. I still review it and approve it
Thomas Frank @TomFrankly 2024-10-11
Can the auto-insert feature be turned off?
Iām happy with chat features; I just didnāt like how my habits changed once code was being injected into my projects automatically.
It feels like I have a much greater ability to be intentional about my use when Iām limited to a chat interface ā almost like I just have a peer to help me
Amado | Product Marketing @Amados_Emporium 2024-10-11
This was a great take to consider. Im loving all the comments and everyones different ideas as to how much AI should code for you.
Im just in the beginning stages, and I rely on AI to break down each section of the program for me. Their usually only about 30 lines or less right
Thomas Frank @TomFrankly 2024-10-11
I definitely donāt have all the answers! But I do believe that exercising your problem-solving muscles in any domain helps to keep them strong, which benefits your primary/job domain.
You mentioned āfor the sake of timeā, and thatās been the real slippery slope for me.
Iāve had
Sean Joyce @sean_joyce 2024-10-11
Thank you, @TomFrankly . I teach college computer science, and Iām worried that students will rely on these tools to their detriment. AI has its place, but I donāt believe that to be critical thinking and problem solving skills. I wonder where the āhappy mediumā is.
Thomas Frank @TomFrankly 2024-10-11
I wonder about the same thing. I think these tools are far from useless, and they likely wonāt go away or even remain stagnant. I think becoming adept with them is likely important.
At the same time, Iāve experienced how easy it is to become mentally lazy while using them.
TimeKing @PalmquistCaleb 2024-10-11
I relate a bit but Iām not stopping. I canāt afford to be replaced.
Thomas Frank @TomFrankly 2024-10-11
What level do you feel youāre at?
My sense is that non-senior devs who rely too much on these tools are at a greater risk of being replaced.
These tools will get good at allowing 1 senior dev to replace several junior team members before they get good at actually replacing
Surge @super_surge6 2024-10-11
Wait, you used to pay $10? š®