编码即思考:为何我仍坚持手写代码
摘要
作者认为手写代码对于培养批判性思维和解决问题的能力至关重要,并警告不要过度依赖AI编程工具。
<p><a href="https://lobste.rs/s/ojvhq9/coding_is_thinking_why_i_still_write_code">评论</a></p>
查看缓存全文
缓存时间: 2026/05/14 14:31
# 编码即思考:为何我仍坚持手写代码
来源:https://dev.to/diamantino_almeida/coding-is-thinking-why-i-still-write-code-by-hand-4nf2
封面图片:编码即思考:为何我仍坚持手写代码 (https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffblsx5og07xxj9au7sx7.png)DIAMANTINO ALMEIDA (https://dev.to/diamantino_almeida)
访问:diamantinoalmeida\.com (https://diamantinoalmeida.com/)
*我每周为科技领袖撰写一份通讯,地址在newsletter\.diamantinoalmeida\.com (https://newsletter.diamantinoalmeida.com/)。*
我从事软件开发多年,长到足以见证一波波创新浪潮的起落——新框架、新语言、新范式,都声称能颠覆游戏规则。有些确实做到了,很多则不然。但每一次都让我学到新东西,塑造了我思考、解决问题和构建系统的方式。正因如此,我带着既充满好奇又保持谨慎的心态,观察着当前这波AI工具——尤其是生成式AI。
我在日常工作中使用AI吗?偶尔会。像GitHub Copilot这样的工具可以加快编码的某些部分,帮助搭建函数框架或提醒我遗忘的语法细节。它们就像自动补全或Stack Overflow一样有用:作为一种参考、一种辅助、一种便利。但我不会让这些工具替我做思考。我更喜欢保持自己的认知能力活跃而敏锐。
这不是为了当纯粹主义者,而是关于有意识地思考如何思维和解决问题。编写软件不仅仅是敲出代码,它是一个深层的心理过程,涉及逻辑、耐心、理解、迭代,有时甚至包括挫败感。你不能用工具完全替代这个过程——否则就会失去一些重要的东西。
因此,当我听到一些知名科技领袖建议我们应该彻底停止编程——或者说编程很快将过时——我忍不住感到不安。这引发了很多问题:我们到底在优化什么?便利性?速度?为自动化而自动化?
编程,正如我所理解的,不仅仅是给机器下指令。它关乎深入理解问题,将其分解为更小的部分,并推理系统在不同条件下的行为。这需要数学技能、批判性思维、创造性的问题解决能力,以及极大的耐心。这些品质并不是靠点击按钮或向聊天机器人输入提示就能培养出来的。它们是通过实际工作——编写代码、调试、构建会失败的东西并重试——来磨练的。
别误会:AI确实令人印象深刻。我们生活在一个可以用自然语言“编程”机器的时代,这无疑是一个里程碑。能够请AI总结日志、解释代码或快速生成概念验证,确实非常有帮助。我自己也会用AI来完成这些任务。它能节省时间,辅助模式识别,有时甚至能建议更好的方法来处理问题。
但过度依赖它让我担忧。因为我们越是依赖AI来写代码,就越少练习背后的思考。而如果我们停止批判性地思考我们构建的系统,就可能失去对系统实际运作方式的洞察。这不仅是哲学上的担忧,更是实践上的问题。Bug、安全问题、可扩展性难题……并不会因为代码由AI编写就消失。事实上,如果我们不完全理解AI在做什么,这些问题可能变得更难察觉。
我还经常想到另一个角度:责任。当你自己编写代码时,你要为它的行为负责。你要调试、测试、维护它。当机器为你写代码时,出了问题该谁负责?谁来确保逻辑正确、伦理问题得到考虑、边界情况都被覆盖?这些问题目前还没有明确答案,我认为假装它们不重要是很危险的。
与此同时,我不会否认这个新时代的某些方面确实让我着迷。能够在家运行Mistral或Llama这样的开源模型,将它们接入CrewAI这样的框架,并训练它们协助我的部分工作——这非常强大。我自己也做过实验。这不是要取代我的思考,而是增强它。让本地AI代理帮助进行代码分析、系统设计甚至文档编写——这真的很令人兴奋。它给了我新工具,让我更好地完成工作。
但即使在探索这些可能性时,我依然保持脚踏实地。我知道成为一名开发者需要付出什么。我知道那些学习、失败、再重试的漫漫长夜。我经历过因技术债务而崩溃的项目,也见过精心设计的系统如何在多年变化中幸存下来。这种知识不是你能下载或通过提示就能生成的。它需要时间来积累。
我担心我们开始把软件开发当成一种商品而非手艺来对待。我们追求速度胜过理解,追求自动化胜过清晰。我担心新开发者可能在被鼓励依赖AI之前,还没有建立起自己的思维模型来理解事物如何运作。这是一条危险的道路,因为它会制造依赖——不仅依赖工具,而且依赖我们无法完全控制或理解的结果。
还有更大的社会影响。如果我们开始告诉人们不要学习编程,那我们实际上是在封锁数字时代最强大的技能之一。我们等于在说"让机器来干",却没有问机器出错、存在偏见或不可用时会发生什么。教人们编程不仅仅是为了构建应用——更是为了教他们如何思考、如何组织想法、如何在一个日益由软件驱动的世界中解决问题。
所以,不,我不打算很快停止编程。我会继续手写代码,深入思考我构建的系统,并在合理的地方使用AI工具——但不会将它当成拐杖。我会像运动员训练身体一样继续训练我的思维,因为这项工作对我很重要。不仅仅是为了代码本身,更是为了它培养的纪律性以及它所要求的思考。
这并非抵制变化或畏惧进步。而是要审慎地适应变化。我欢迎AI带来的进步,尤其是当它能帮我们自动化枯燥的任务、解析大量数据或快速测试想法时。但我也相信我们需要保持与手艺核心的连接。我们需要保持好奇心、分析力,以及——最重要的——责任感。
在这个新世界里,人类程序员依然有一席之地。事实上,我认为我们比以往任何时候都更重要。因为随着工具的发展,需要有人提出棘手的问题,做出道德决策,并理解权衡取舍。需要有人确保我们不仅构建得快,而且构建得好。
如果你是一名开发者,正在思考自己在这场变革中的位置,我想说:不要急于追逐每一个趋势。保持好奇,保持敏锐。不要把你的思考交给那些尚未赢得你信任的工具。学习系统如何工作,建立你的直觉。当你使用AI时,就像使用一个聪明的助手——而不是你大脑的替代品。
我们正处于一个独特的历史时刻。这里有机遇,也有责任。不要忘记用心、有意、并全神贯注地构建软件意味着什么。
相似文章
我决定回归手写代码
作者在重构一个 Kubernetes 仪表盘工具时反思道,虽然借助 AI 进行“氛围编程”(vibe-coding)能加速功能开发,但在缺乏人工监督的情况下,往往会导致架构臃肿和技术债务。
@garrytan: 重点不在于 AI 让你写代码更快。很多人已经注意到了这一点。真正在于的是,AI 让你能够在以前因成本过高而无法持续的层级上进行验证……
该帖认为,AI 在编程中的核心价值不仅在于更快地编写代码,更在于实现可持续的高层级验证和测试,而这在过去需要耗费过高的人力成本。
规格驱动的智能体编程正在悄然削弱我们监督智能体的能力
作者认为,过度依赖 AI 编程智能体会导致人类开发者逐渐丧失关键的技术直觉和代码审查技能,并提出了诸如强制手动编码日等措施,以维持监督能力。
不要把学习外包出去
一篇文章指出,过度依赖AI编程助手而不主动学习会逐渐削弱技能,引用了Anthropic、MIT和CHI 2026的研究。
AI正在让我变笨
作者反思了在写作和编程中依赖AI工具如何削弱了自己的能力,导致自我怀疑,并决定重新训练。