AI Writes the First Draft; I Do the Review
中EN![]()
When did AI become part of my daily work? Probably when I opened a side project, saw an empty directory, and immediately thought: let it build the scaffold first.
I used to reach for a scaffold, fill in the configuration, and dig through documentation. Half an evening could disappear before I touched the part I actually cared about. Now the order is reversed: I explain the idea, let AI stand up the first version, and start taking it apart once it runs.
Someone else writes the boilerplate, helps chase errors, and remembers the API I forgot. At work, tests, repetitive pages, and the things I know how to do but do not want to do again can go to AI first as well.
I got used to that quickly. A few months ago I complained that the code was unreliable. Now, when the model thinks for a little too long, my first reaction is that it is slow.
The faster the first pass, the less I trust “done”
One day I watched it produce a working page in almost no time. At first I was pleased. A few seconds later, I felt oddly uncomfortable. Work that used to mean reading, trying a layout, and making several passes had turned into text streaming across a screen. The page was there, but I did not get the old certainty of having built it piece by piece.
I still know React, Vue, CSS, and APIs. But if a presentable first pass takes minutes, “I can implement the page” is no longer as scarce a skill as it used to be.
A faster first pass does not necessarily mean a faster finish. AI is good at producing a version you can screenshot: the buttons exist, the animation works, and the data follows the happiest path. Disconnect the network, click twice, or refresh, and the unfinished parts appear.
When I built X, my bookkeeping app, reading an amount from a screenshot was not the hard part. The work sat around the recognition step: let a person confirm it, make wrong values editable, and keep dirty data out of the database.
So when I get a first pass now, I try to break the page. If it survives network failures, double-clicks, and strange input, the work has probably started.
![]()
I am the easiest part of the system to make lazy
AI always has another answer, and I am becoming less willing to stop and think. When the code fails, I ask it to revise. When the revision creates a new error, I paste that error back. After a few rounds the thing may run, while I have become reluctant to read the code in the middle.
That is the easiest moment to fool myself: the result works, so perhaps the route does not matter. Then it breaks the next day and I still have to clean it up, often with more difficulty than if I had written it myself. Every piece looks familiar, but together they have no obvious reason to exist in that shape.
Do not generate before the problem is clear. Do not accept code I cannot explain just because it runs. Delete what should be deleted. When the result breaks, blaming the prompt does not help. I am still the person who has to take it over.
I am not going back to writing every configuration file by hand just to prove I am useful. If AI helps, I will use it. It can keep writing the first pass.
I do not know whether AI will replace programmers. The practical questions are closer: do I know what I am building, which parts cannot be hand-waved, and can I take over when it breaks?
Whenever it confidently tells me “done,” I automatically add the rest of the sentence: good, my shift starts here.