不用人工智能的一个月
One Month Without AI

原始链接: https://blog.bustikiller.com/2026/09/25/one-month-without-ai.html

作者分享了自己成为“AI 牧羊人”的工作经历——即利用编程智能体来生成、提交和解释代码,以及这种方式对其技术能力的负面影响。起初,AI 似乎是提高生产力的捷径,但很快就导致了自满、对技术掌控力的丧失,以及深重而疲惫的“语境切换”负担。 作者发现,AI 非但没有节省时间,反而迫使他们陷入了“照看”代码、审查平庸代码以及管理复杂智能体工作流的循环,最终阻碍了真正的进展。他们最终意识到,自己变成了一个更差劲、更生疏的开发者,甚至无法完全理解自己交付的代码。 在一次因同事指出 AI 生成的合并请求(PR)中存在基础错误而感到羞愧后,作者彻底停止了使用 AI。回归手动测试驱动开发(TDD)和直接编程的过程,不仅恢复了他们的信心,加深了其对架构的理解,还重新点燃了他们对编程的热爱。作者警告称,过度依赖 AI 会导致关键工程技能退化,并敦促开发者重拾自主权,认为真正的价值来自于亲手解决问题,而非自动化编码过程。

这段 Hacker News 上的讨论反映了资深软件工程师群体对于使用 AI 编程工具所持的对立观点。 **批评意见:** 许多开发者认为 AI 工具如同“随机药物”。他们指出,虽然 AI 承诺能提高生产力,但往往会导致: * **失去控制:** 开发者不再理解自己的代码库,导致系统变得臃肿、过度工程化且难以维护,形成“靠感觉编程”的局面。 * **技能退化:** 对 AI 的持续依赖使工程师无法保持高质量架构设计和故障排查所需的深层底层专业知识。 * **审查疲劳:** AI 代码生成的速度造成了瓶颈,开发者花费在“照看”和纠正 AI 幻觉上的时间,往往比手动编写代码所需的时间更多。 **辩护意见:** 支持者认为,如果使用得当,AI 是强大的效率倍增器。他们建议: * **正确使用:** AI 在处理样板代码、单元测试或作为交互式研究助手时表现出色,而不是作为盲目的代码生成器。 * **任务管理:** 成功的关键在于将任务分解为细小、可验证的模块,并保持严格的防护措施。 * **演进趋势:** 许多人认为“手动编码”正在成为一种遗留技能,类似于汇编语言,而未来属于那些精通高阶系统设计和 AI 编排的人。
相关文章

原文

Several months ago, I decided that AI contributions were no longer welcome in a FOSS project I am building and maintaining - LibreWeddingPlanner. It’s not that it got a lot of contributions with AI — actually all contributions I’ve had are translations and feature requests — but I wanted to avoid future drama and have a position against AI.

However, although I was not using AI for my FOSS contributions, I kept using it at work. In my workplace, as well as in many of my developer friends’, using AI to work is very, very common. Not without a degree of shame, let me tell you about this experience, and how it was turning me dumber, lazy, and a worse developer.

The sweet start

A friend told me hey, you should try it, you feel so powerful. Once you start using it, you cannot stop. The tasks that took you days, you can have them in hours. No, we’re not talking about cocaine, although to some degree I consider the use of AI, an addiction. I started enabling the enhanced autocomplete in vscode (or was it enabled automatically?), and downloading and using other code generation models just followed. When I was a child, I remember my parents saying be careful with the bad guys who offer candies at the school gate, those are not candies, those are drugs. When I was in my twenties, I’d pull their leg saying yeah, it’s like they give away the drugs now hum? Well, in my thirties I think they may very well do.

Once you start using AI coding agents, things spiral out of control very quickly. At the start, you ask AI to implement a function for you, or to write tests for a certain piece of code. If you’ve been a TDD guy for a long time, you’re inclined to ask it to do the tests for you first, so that you can later write the code. Except you don’t write the code anymore, you just ask AI to do it, and half of the purpose of TDD (not biasing the tests by how you’ve implemented the code) is gone. But you feel you go so fast that you start not caring.

One day, I saw the agent was co-signing the commits I was making, and I ran to opt-out from that setting. Like, I wanted to pretend the code was my own. Gosh.

Losing control

It would not be so bad if things had stopped there, but that’s not how most human brains work. If you like something and you can have 2x, you’ll have it. I started pasting the whole Jira description of a ticket, and let AI implement it for me. Yay!! So powerful!! Working on a codebase that was relatively new to me, I started losing control over which changes were really needed to fulfill the task. I thought if the AI, which has read every line of code in the project says it’s needed, so be it. Control is an illusion. Other folks I’ve discussed this with agree that they don’t know 100% of what the code they are pushing to production actually does. I bet we not even 20%. Fucking scary.

But it also didn’t stop there. When I had a small task, I gave it to the AI, and in ~30 minutes I had a PR. What was I doing during those 30 minutes? Changing focus. Soon I realized I could have not one, but multiple agents working on different tasks simultaneously, in multiple git worktrees. Full power! Tokenmaxxing! I connected the agents to Jira via ACLI (command-line interface) and just asked them “work on this jira ticket in a separate worktree”. And it would start working on it. I felt ecstatic.

When the task was not so small, you’d think I was working on it myself right? Hell, no. I would of course ask AI to decompose it into smaller tasks, and work on them. AI would then give me a super convincing PR with a bunch of changes I didn’t quite understand. How on Earth was I going to ask for a code review of those changes? What would my peers say? What was I going to say when they (more experienced, specially in that codebase) ask me why I did this or that? How was I going to admit it was all AI, and I was nothing but an AI shepherd? So I forced myself to understand the code. Not that I wanted to understand the architecture of the codebase, I wanted to avoid the humiliation of not knowing what the fuck I was doing.

At some point, I had so many AI agents working, that the focus change was too much for me. There were tasks I could have done in 20 minutes easily, that took 5 minutes of an AI agent, and then 2 days for me to review. Because there were so many other things. And maybe AI and computers are good at context switching, but not me. I was exhausted. Because if it was just about approving PRs that are perfectly written, it would be good. But for each PR I had to look at the code, the tests, the style, give feedback, switch to something else, go back again, push, see if I have any PR comments, if CI passed, wait, now the linter complains. And it takes you 2 days to deliver something that could have been literally 1 hour single-focused. In my personal experience, multiplied AI performance is just an illusion. Multiplied frustration and exhaustion is guaranteed, though.

I think there was not a single task I gave to the AI that I could merge as is. Of course, I didn’t write the commits or the PR descriptions myself (what is this, 2024??), AI was doing it for me, and it made sure there was a 7-paragraph description in the PR, explaining what it had done. I stopped reading those descriptions, like, I told it what to do, I assume it did what I said. The description is for others. Because there has to be a description, right? AI is so fucking good as sounding professional, that you relax and let it be. It’s not that I actually thought the code was good, but you get convinced over time, you get lazy, you become complacent. You stop questioning, and start accepting as good some code you would have never accepted, just because you cannot tell why it’s bad. You have lost control. Most AI developers will deny it, but deep inside, they know it’s true. Just don’t want to face it.

Months passed by, and one day I realized I had not written a single line of code myself in several months. I didn’t even commit myself. Countless times I’ve written in the AI agent chat “commit and push”. What. The. Hell. If that is not laziness, I don’t know what it is. AI was also not able to solve all the tasks that I gave it. Not even half of them. Once and again, I had to babysit the AI agent saying “now, apply this pattern” or “in the specs, separate the test setup in a before block, and add the assertions in a different block”. Like I was mentoring a junior. Don’t get me wrong, I love mentoring, I’ve done it for years, and I think it was good for the mentor and the mentee. But I’m not going to fucking babysit a machine, sorry.

Often times, I would see that the quality of the code written by AI had decreased significantly. Not that it was brilliant at the start, but I got the feeling of “dude, you’ve done this before, why are you uncapable of doing this again?”. So I had to prompt it again to re-explain how to do it. Or link it to a file with my preferences. Alright, I know what you mean now, sorry about the confusion. Let me redo it for you. And again it would do a fucking mess that is not what I was requesting. It started reminding me of the strategy where Google lowered the quality of the search results, forcing users to search several times, and see several times as many ads. And if that worked for Google, how is it not going to work for AI? Specially in the uncertain financial times the AI companies are going through, do you really think they would not do it? Come on. They will do this and more.

Other days, I would see that an agent had been stalled for 30 minutes without giving me an answer. What to do about it? Do you think I took the task and worked on it myself? Absolutely not. I took the verbal whip and, sounding authoritarian, demanded my actual code! The AI agent profusely apologized, and gave me in 20 seconds what it had not given me in 30 minutes. I looked at the token expenses, and it had spent $30 in tokens for absolutely nothing. If I was the one paying the bill, I would feel completely raged.

Regaining control

One month ago, in a code review of one of my PRs, a coworker said something like “this test you’ve written doesn’t actually test the scenario that you’re changing in the application code”. I reviewed it, and he was right. But… it was so convincing… And I felt shameful. Because for me, a developer who had been using TDD for 10+ years, failing on something so basic was a bit of a humiliation. I realized I had lost control, and it was not going to get any better. I think It’s worthless to just try harder, be more picky with the AI, demand the quality you’re paying for! Because despite your efforts, the AI ends up convincing you, and making you complacent again.

So I decided I would stop using AI. Even if that costs me my job.

When you take a draft PR written by AI and have to work on it yourself, you realize to what degree you didn’t know what it was doing. You start questioning if you need this and that, and ultimately discard everything and start over. I felt rusty, like I had not coded myself in ages. Fortunately, I had been programming here and there in my side project, so the effort was noticeable but not that bad.

I went back to TDD, to my PRs with just 5 files changed. To my 2-line PR descriptions that were straight to the point. I went back to understanding what I was doing, to deploying with confidence, to being ready for a detailed code review, because I knew what the changes were doing, and I could justify every line of code. I went back to enjoying human code reviews (not AI-ones, I still hate those. Even more humans that paste AI reviews pretending they are their own), to learning from them. I started asking about architectural decisions, why things were a certain way. I could have asked AI, but I preferred to ask my peers.

I recovered the joy of programming. And I didn’t look back. I won’t pretend that number of lines of code or PRs is a valid metric, especially when AI can be as verbose as it wants to win on every metric. But I can say that I am pushing significant changes every day, getting PRs merged, and at the end of the day, getting the work done. And for that reason, I’m not scared of being fired. Plus, I’m keeping my brain functions intact.

A piece of advice

Say no to drugs. Kind of a metaphor, but not quite. The first step is to realize how dependent we you are on AI. A piece of technology that you don’t control, and which costs your employer (if not you) a fortune. You’ll say but my manager expects a high performance from me, how am I going to underperform now? I cannot speak for you, but that didn’t happen to me. I don’t think I underperform compared to 2 months ago. If anything, I am now more aware of what I’m doing, more capable of responding to an incident if there is one (because hey, I wrote the code that fucked up), and the more I (literally, me) work on the codebase, the better developer I become. That is what your manager should want from you.

And you will save them some bucks when the AI budget cutoffs start - because they will, if they haven’t already.

If you’re a developer like me, it was your experience as a developer what got you that job. If you’ve been some years in the market, you know you are as good as difficult were the problems you had to face during your career. If you turn off your brain, and relax babysitting AIs, you’re not getting any better. You’re losing value, because what you can deliver, your actual value as an engineer (not an AI shepherd) decreases as your brain becomes complacent and yields control to the AI.

Wake up. Be brave. Regain control.

联系我们 contact @ memedata.com