> Instead it took a few hours, and I finished a project.
Did you?
If you wanted to expand on it, or debug it when it fails, do you really understand the solution completely? (Perhaps you do.)
Don't get me wrong, I've done the same in the last few years and I've completed several fun projects this way.
But I only use AI on things I know I don't care about personally. If I use too much AI on things I actually want to know, I feel my abilities deteriorating.
> do you really understand the solution completely?
Yes; fully. I'd describe what I delegated to the AI as "busy work". I still spent time thinking through the overall design before asking the AI for output.
> But I only use AI on things I know I don't care about personally.
Roughly speaking, I'd put my personal projects in two different categories:
1. Things that try to solve some problem in my life
2. Projects for the sake of intellectual stimulation and learning
The primary goal of this scanner project was/is to de-clutter my apartment and get rid of paper. For something like this, I prioritize getting it done over intellectual pursuits. Another option I considered was just buying a newer scanner with built-in scan-to-SMB functionality.
Using AI allowed me to split the difference. I got it done quickly, but I still learned about some things along the way that are already forming into future unrelated project ideas.
> If I use too much AI on things I actually want to know, I feel my abilities deteriorating.
I think this likely comes down to how it's used. For this particular project, I came away knowing quite a bit more about everything involved, and the AI assistance was a learning multiplier.
But to be clear, I also fully took over the code after the initial few iterations of LLM output. My goal wasn't to make the LLM build everything for me, but to bootstrap things to a point I could easily build from.
I could see using AI for category #2 projects in a more limited fashion, but likely more as a tutor/advisor.
For category #2 it’s very useful as well and ties in with the theme of the article in that it reduces the activation energy required to almost zero. I’ve been using AI relentlessly to pursue all kinds of ideas that I would otherwise simply write down and file for later. When they involve some technology or theory I know little about I can get to a working demo in less than an hour and once I have that in hand I begin exploring the concepts I’m unfamiliar with by simply asking about them: what is this part of the code doing? Why is this needed? What other options are there? What are some existing projects that do something similar? What is the theory behind this? And then also making modifications or asking for changes or features. It allows for much wider and faster exploration and let’s you build things from scratch instead of reaching for another library so you end up learning how things work at a lower level. The code does get messy but AI is also a great tool for refactoring and debugging, you just have to adjust to the faster pace of development and remember to take more frequent pauses to clean up or rebuild from a better starting point and understanding of the problem.
I think this effect of losing your abilities is somewhat overblown.
Especially when AI has saved me on actually explaining specific lines of code that would have been difficult to look up with a search engine or reference documentation and know what I was looking for.
At some point understanding is understanding, and there is no intellectual "reward" for banging your head against the wall.
Regex is the perfect example. Yes, I understand it, but it takes me a long time to parse through it manually and I use it infrequently enough that it turns into a big timewaster. It's very helpful for me to just ask AI to come up with the string and for me to verify it.
And if I were the type of person who didn't understand the result of what I was looking at, I could literally ask that very same AI to break it down and explain it.
This summarizes my feelings pretty well. I've been writing code in a dozen languages for 25+ years at this point. Not only do I not gain anything from writing certain boilerplate for the nth time, I'm also less likely to actually do the work unless it reaches some threshold of importance because it's just not interesting.
With all of this said, I can see how this could be problematic with less experience. For this scanner project, it was like having the ability to hand off some tasks to a junior engineer. But having juniors around doesn't mean senior devs will atrophy.
It will ultimately come down to how people use these tools, and the mindset they bring to their work.
Did you?
If you wanted to expand on it, or debug it when it fails, do you really understand the solution completely? (Perhaps you do.)
Don't get me wrong, I've done the same in the last few years and I've completed several fun projects this way.
But I only use AI on things I know I don't care about personally. If I use too much AI on things I actually want to know, I feel my abilities deteriorating.