超越70%:如何用好AI时代编程中“人类独有的30%”

作者:Addy Osmani

为什么在AI辅助编程时代,人类的独特技能依旧至关重要?

本文是我之前文章《70%的困境:AI辅助编程的真实挑战》的后续探讨。

像 Cursor、Cline、Copilot 和 WindSurf 这样的 AI 编程助手,彻底改变了软件开发方式,帮我们解决了大量重复枯燥的基础工作。然而,就像许多资深开发者和行业领袖指出的那样,目前依然存在一个关键的问题:大约还有30%的工作,是AI无法很好地完成的。正是这30%的差距,决定了一段代码究竟是简单的演示,还是真正能落地的产品级系统。这部分工作包含了最棘手的挑战,比如深入理解复杂需求、设计出易于维护的系统架构、处理各种边缘情况以及确保代码的正确性。简单来说,AI可以生成“代码”,但它往往在“软件工程”本身上做得并不好。

科技界的传奇人物蒂姆·奥莱利(Tim O'Reilly),在回顾数十年来的技术变迁时,强调了这样一个观点:每一次自动化的跃进,都只是改变了我们编程的方式,而不是我们为什么需要优秀程序员的理由。我们面对的不是编程的终结,而是“我们今天所认识的编程方式的终结”。也就是说,开发者的角色并不是在消失,而是在转变。

因此,当下软件工程师们真正的挑战在于:一方面充分利用AI擅长完成的那“70%”,另一方面更要专注强化人类独有的、能够胜任剩余“30%”工作的技能和洞察力。这篇文章将深入探讨专家们的见解,帮你明确在AI时代,到底哪些人类技能仍然至关重要。我们也将探讨资深开发者应该继续发挥哪些优势,以及初级开发者又该在哪些方面持续投入,才能在AI辅助编程的时代里脱颖而出。

我们的目标非常明确:提供实用的建议,帮助工程师们充分发挥人类不可替代的那“30%”,无论你是新手还是专家,都能从中获得切实可行的启发和指导。

AI 编程中的“70%现象”:AI擅长什么,又卡在哪儿?

AI编程工具在某些方面表现得惊人地好。尤其在编写模板代码、常规函数,以及快速推动项目完成大约70%的任务时,AI表现出色。很多程序员发现,使用AI辅助编程,能迅速获得一个初步的解决方案,满足大致70%的开发需求。

这70%通常是比较简单、有规律可循的部分,也就是代码中那些已经被充分探索过的路径或通用的框架。正如一位Hacker News评论者所说,AI特别擅长处理软件开发中的 “偶然复杂性”(accidental complexity) ——也就是那些重复的、机械的繁琐工作;而真正的 “本质复杂性”(essential complexity) ,也就是理解并解决问题本身的复杂性,仍然得靠 人类的智慧 来驾驭。用经典的“人月神话”作者Fred Brooks的话来说,AI能解决的是软件开发中次要的麻烦,而非本质上的难题。

那这些AI工具究竟卡在哪儿了呢?经验丰富的工程师经常提到一个明显的 “最后一公里”瓶颈 。AI可能会给出一个看起来很靠谱的解决方案,但剩下的那关键的30%——例如处理特殊的边界条件、完善架构设计,以及确保代码长期易于维护——还得依靠真正有经验的程序员。

举个简单的例子,AI可能给你一个基本能跑的函数,但如果你不明确提醒它,它就不会自动考虑异常输入、竞态条件、性能瓶颈,或者为未来需求预留扩展空间。这些重要的部分,AI通常是想不到的。它能帮你完成大部分任务,但最关键的那30%(边界问题、维护性和稳固的架构),还需要程序员自己动脑筋。

另外,AI也经常会犯一个众所周知的错误:它可能生成看似合理却不正确的代码。它可能引入一些隐蔽的小bug,甚至会“幻觉式”地调用根本不存在的函数和库。程序员Steve Yegge幽默地将如今的AI模型比作“效率惊人的初级开发者”,他们干活极其快,又无比热情,但也像是“嗑了兴奋剂”一样,时不时就提出一些天马行空或根本不可行的方案。

Yegge还进一步提到,有时AI吐出来的代码表面上非常精致,如果一个经验不足的开发者盲目地相信,直接说一句:“看起来不错,就用这个吧!”那么接下来几周就可能上演一出啼笑皆非甚至灾难性的局面。因为AI并不真正理解问题,它只是将过去的模式拼接起来。这种看起来不错的方案里可能藏着长期的“地雷”,只有人类的眼光才能发现。技术专家Simon Willison就讲过,他曾目睹AI提出过一个看似非常巧妙的设计方案,但只有对问题有深入理解的资深工程师才知道这个设计根本行不通。这告诉我们一个重要道理:AI的自信程度远远超过了它的可靠程度。

更重要的是,目前的AI无法创造出超越自身训练数据之外的全新抽象或策略。AI不会替你发明一种前所未有的算法,也不会创造一种全新的架构。它们只是在“混搭”已有的知识。而且,它们也不会为自己的决定负责。一位程序员曾经指出:“AI提出的方案绝不会超过它见过的训练数据里的好主意。它也不会为自己输出的结果承担责任。”

综合以上这些,这意味着创造性的思考和分析能力——也就是决定做什么、如何做、为什么要这样做——仍然牢牢掌握在人类手里。总之,AI对程序员来说是个强大的“倍增器”,能帮你搞定那些重复的70%的工作,给你的生产力来一次“涡轮增压”。但它绝不是能取代人类判断力的万能方案。软件工程里剩下的30%——也就是那些真正困难的环节,依然需要经过专业训练、有深度思考的程序员来解决。而这些,就是我们程序员真正该关注的长期有效的技能。就像一个讨论中有人所说:“AI是强大的工具,但不是魔法子弹……人类的判断力和扎实的软件工程实践依旧是必不可少的。”

AI时代下,工程师必备的持久技能

在这个AI加持的软件开发时代,工程师需要更加专注那些人工智能(目前)无法轻易替代的技能与方法。无论工具进步到什么程度,这些能力都将持续重要。具体来说,以下几项能力值得你加倍用心培养:

  • 系统设计与架构思维:
    设计一个出色的系统,不仅仅是写几段代码那么简单,它需要你全面理解整体架构、权衡利弊、考虑限制条件,真正看到整个系统的“大局”。AI可以帮你写代码,却无法自动给出复杂问题的最佳架构。整体设计——比如各个组件如何互动、数据如何流转、如何保障扩展性与安全性——属于那30%只有人类才能做好的领域。资深开发者长期训练出这样的能力,初级工程师也应该有意识地培养自己,学会用设计模式与原则(比如关注点分离、模块化)去指导AI生成的代码,确保软件能够长期维护。记住,好的架构绝不是偶然形成的,而需要富有经验的工程师来主导。

  • 处理极端情况与模糊需求:
    真实的软件项目中,总是充满奇怪的边缘场景和不断变化的需求,而AI默认情况下通常只解决“常规”的问题。这时候,工程师就需要主动提出“如果出现这种情况会怎样?”并深入挖掘潜在问题。这种持续有效的能力就是“批判性思考与前瞻力”,你要能够想清楚可能的极端场景,预料到各种可能失败的情况,并提前在代码或设计中做好准备。这可能包括空值输入、网络故障、用户的异常操作,或是系统间的整合问题。领域知识在此也非常重要:深入理解业务背景与用户场景,能帮你找到AI想不到的边缘案例。有经验的工程师会本能地关注这些问题,而新手则应该系统性地训练自己,多进行边界测试,不断挑战假设。

  • 代码审查与质量保障:
    当越来越多的代码是由AI生成时,严谨的代码审查和测试能力变得更加关键。知名开发者Steve Yegge强调:“未来每个人都必须更加认真地对待代码的测试与审查。”你应当像审查新手工程师的代码一样审视AI生成的代码,确保捕捉到错误、安全漏洞或不规范的实现。这意味着你要拥有扎实的单元测试、集成测试以及调试能力。编写良好的测试代码是一种经久不衰的技能,能迫使你深入理解需求,并确认代码正确性。一个基本的态度是:“在证明它真正有效之前,假设一切都是坏的”。正如一位开发者所言,AI生成的代码通常“能用,但性能糟糕”,你必须指导AI逐步优化改善。养成“测试思维”,认真检查每条关键逻辑路径,善用静态分析工具和代码检查工具,绝不要因为AI给的代码“能跑就算了”。质量保障绝不是能交给AI的任务,恰恰是你彰显人类细致和耐心的领域。

  • 调试与解决问题的能力:
    当软件出问题时,你需要真正的解决问题的本领,才能定位并修复故障。AI虽然可以辅助调试,比如提供可能的原因分析,但它缺乏对你具体软件上下文的真正理解。真正优秀的开发者能够一步一步理清复杂bug,重现问题、定位根本原因,并深入理解底层系统(操作系统、数据库、依赖库等)的运行逻辑。这需要你掌握计算机科学的基本原理(比如内存管理、状态变化、并发问题),这些技能初级开发者必须通过实践逐步获得。你可以让AI成为你的帮手(比如帮你解释错误信息或提出修复建议),但绝不要盲目依赖它。“系统化地排查问题”,并且能从基本原理出发调试代码,这种技能才是顶尖开发者与普通工程师的分水岭。而且,调试AI生成的代码也能反过来教会你如何更好地向AI提问,以及规避AI经常犯错的地方。

  • 掌握项目背景与整体视野:
    软件开发从来不是孤立的编程任务,它总处在用户需求、项目进度、历史遗留代码以及团队流程等更大的背景之中。AI并不会天然理解你项目的历史,也不会了解某个技术决策背后的原因(除非你主动把所有这些信息输入到提示词里,而这种做法通常并不现实)。因此,理解和保持项目背景的责任,依然落在人类身上。一种经久耐用的能力就是“系统化思维”——理解一个改动如何影响系统其他部分、软件如何实现业务目标、所有组件如何互相连接。有了这种全局视野,你才能正确判断如何有效利用AI生成的建议。比如AI可能推荐一些聪明的捷径,但你知道这些捷径可能与法规要求或公司内部约定不符,你就能迅速识别出来。初级工程师应该积极主动地了解项目背景,多看设计文档,培养出一种判断力,知道什么合适,什么不合适。

  • 沟通与协作能力:
    软件开发本质上是团队协作的活动。AI不会参加你的会议(幸好),人类仍需与其他人交流,明确需求,讨论方案,协调任务。强大的沟通能力始终不可或缺。资深开发者可以利用自身能力,清晰表达复杂想法、指导他人并阐述愿景;初级工程师则应该锻炼自己善于提出问题、清晰描述问题的技能(无论是对同事还是AI)。值得注意的是,向AI提出好的问题本身就是一种沟通能力,要求你明确且精准地表达需求。这也与工程师核心技能“需求分析”密切相关。如果你能很好地表达需求或撰写清晰的规格说明,意味着你已经深刻理解了问题。此外,知识共享、撰写文档和代码审阅这些协作技能,也都是AI无法替代的。未来,当开发者与AI协同工作时,人与人之间的沟通协作(确保团队解决真正正确的问题)将变得更加重要。一种趋势是,工程师将更多参与高层次的设计讨论(可能有AI辅助),以及协调任务,逐渐变成一个“指挥家”的角色。沟通与领导能力,将帮助你很好地胜任这个角色。

  • 适应变化与持续学习:
    最后一种“元能力”,是持续学习新工具并适应变化的能力。AI辅助开发领域正在快速演化。Tim O’Reilly指出,最愿意学习新技能的开发者,将获得AI带来的最大生产力提升。资深工程师需要保持开放的心态,积极学习如何高效使用新的AI工具,始终站在趋势前沿。而初级工程师则应该认真掌握基础技能,同时对新技术保持强烈的好奇心。这种能力组合,让你能高效使用AI工具,同时又不会过于依赖它。这就像走钢丝:你可以用AI加速成长,但也应当偶尔脱离AI,进行纯手工的训练,以确保你没有跳过必要的学习环节(一些开发者甚至定期进行“AI排毒”,让自己的基础编程技能保持敏锐)。简而言之,做一个终身学习的工程师,是任何时代都能保障你职业生涯的重要技能。

这些技能构成了软件工程领域人类的优势。这种优势非常持久,因为它不会随着下一个框架或工具的更新而过时;相反,AI的崛起甚至让这些技能更加凸显。正如 Simon Willison 所说:AI 辅助工具的出现实际上让优秀程序员的技能变得更值钱,而不是贬值,因为有经验的人能更有效地利用这些工具。

一个强大的机器,如果交给技术不足的人,可能会产生危险,或者被浪费掉;但如果落到熟练的专家手中,就能带来巨大的转变。在AI时代,一名经验丰富的工程师就像经验丰富的飞行员,配备了一名先进的副驾驶:旅程可以走得更快、更远,但飞行员依然需要掌控方向,应对风暴,确保飞机安全降落。

高级开发者的优势:用AI放大你的经验价值

对于资深的程序员来说,AI工具的出现意味着一个提升自身影响力的绝佳机会——前提是你要充分发挥自己的经验优势。高级开发者通常拥有深厚的领域知识,能直觉地预测潜在风险,也更擅长做高层次的技术决策。

这些优势正是AI无法独立完成的那30%。那么,经验丰富的开发者该如何最大化自身价值呢?

  • 做架构师和主编:
    让AI写代码的初稿,而你则专注于设计整体架构,并且精炼AI给出的成果。很多公司可能逐渐倾向于只聘请经验丰富的人来(a)描述清楚任务(即编写提示词);(b)对AI生成的成果进行审阅,确保准确无误。
    身为高级开发者,你的优势在于能把复杂需求转化为清晰有效的AI指令,再用挑剔的眼光逐行审查AI生成的代码。这种模式相当于你在和AI“结对编程”:AI的优势是敲字快,而真正的智慧由你掌控。在代码审阅中要坚持高标准,确保生成的代码符合公司的质量、安全和性能要求。通过扮演架构师和主编的角色,你避免了因审查负担过重而被淹没的风险。
    (但也要注意一点:如果初级工程师直接把未经检查的AI代码丢给你,必须坚决反对这种做法,建立明确的流程,要求他们先对AI代码进行基本验证,你不能成为唯一的安全网。)

  • 用AI推动更大的项目:
    资深开发者经常需要主导大项目,或处理复杂的重构任务,这些任务初级工程师难以单独完成。这时,AI的协助可以极大地提高效率,处理大量机械重复的修改,甚至帮你探索不同的方案。Steve Yegge 将这种工作方式称为“聊天导向编程(Chat-Oriented Programming, CHOP)”,也就是通过不断优化指令、与AI合作完成代码编写。
    借助这种方式,你可以更大胆地尝试那些以前想做却又望而却步的项目。正如 Simon Willison 所指出的:“有了AI的帮助,那些本来需要几天的任务,现在可能只需几小时,值得尝试的项目数量也就增加了。”
    不过关键仍然是你要掌握方向,决定采用哪些工具或方法,并将AI生成的代码整合成一个有序、有效的整体。你的经验可以帮助你筛选AI给出的建议,留下合适的部分,淘汰不合适的部分。

  • 在AI时代,指导并树立标准:
    高级开发者的另一个重要角色,就是指导年轻开发人员正确、高效地使用AI,同时坚持传统的最佳实践。你很可能拥有许多经过血泪教训才掌握的知识,比如内存泄漏、数组越界、多线程问题等等风险点。
    当初级程序员开始使用AI生成代码时,你要教他们如何自己检查、测试AI代码,给他们树立一个榜样:每次提交AI生成代码时,要经过严格的测试和审查,避免盲目相信AI的结果。有些公司(甚至律所)已经开始规定,使用AI的人必须公开AI的使用情况并自行验证结果,而不能默认指望高级开发者帮他们擦屁股。
    资深程序员要积极推行这种规范:可以使用AI,但要坚持严谨负责的工作态度。通过这样的指导,你不仅降低了自己的审查压力,也帮助初级工程师更快成长,逐步培养出AI无法替代的30%关键技能。

  • 持续积累领域知识和预判能力:
    你的丰富经验和宽广视野,在AI时代反而更具价值。高级开发者往往知道软件为什么以某种方式设计,或了解行业内部运作的细节。这种领域知识使你能够迅速识别AI产生的错误,而新人很可能看不出来。
    要持续深入理解所在领域,这意味着你要不断跟进业务需求、用户反馈、行业新规等变化,因为AI本身并不会自动考虑这些因素,除非明确告诉它。当你的领域洞察力与AI的速度相结合时,能产生最好的效果。
    另外,你还可以凭借经验的直觉去引导AI:例如,当你感觉到一个短期方案可能未来会带来维护麻烦时,你可以指导AI生成更可持续的解决方案。资深开发者要充分信任自己多年经验积累出的直觉,当代码看起来“不对劲”或“太美好了”的时候,果断深入排查。十有八九,你的直觉发现了AI忽略的风险。能够提前预判代码可能引发的二级、三级效应,是高级开发者的显著标志。千万别因为AI的方便而削弱了这种预判习惯,相反,要用你的预判能力不断校准AI生成的代码。

  • 发挥软技能与领导力:
    当AI承担了一部分编码工作后,资深开发者可以把更多精力用在软件工程中的“人”的方面。这包括与利益相关方沟通,主持设计会议,做出关键判断,让技术更好地与业务战略保持一致。Tim O’Reilly 等人曾指出,随着简单重复的代码工作变得更容易,开发人员的核心价值将逐渐转移到决定“做什么”和“如何组织复杂系统”上。
    高级开发者正是能站在更高位置,看清全局,扮演这个“协调者”角色的人。主动承担起绘制技术路线图的任务,评估选择哪些工具(AI或其他工具),或为组织制定AI使用规范。这些任务AI都做不到,因为它们需要人的经验、判断,以及跨团队的协调与共识。
    增强你的领导影响力,意味着你不会只是一个随时可以被工具替代的“代码生成器”,而是团队中不可或缺的技术领导者,在新的时代引领团队向前。

简而言之,继续做好资深程序员最擅长的事:透过树木看到整片森林

AI帮你更快地砍伐大量树木,但最终还是得由你来决定该砍哪些树,以及如何用这些木头建造稳固的房子。你的判断力、战略思维和对他人的指导作用,在AI时代变得更加重要。善用AI工具的资深程序员,生产力会远超那些拒绝或无法充分利用AI的人。但真正脱颖而出的人,一定是那些能用自身的人类优势放大AI输出价值的专家,而不是任由AI自由发挥的人。

正如一位网友幽默地说:“AI是程序员能力的倍增器”,它确实“极大提升了高级程序员的生产力”。这种倍增效应是真实存在的,但真正被放大的,始终是你的经验和智慧。

在AI时代,如何成长为一名优秀的初级开发者?

如果你是一个刚入门或者经验尚浅的开发者,面对AI,你可能既兴奋又焦虑。一方面,AI助手能写出你自己可能都不会的代码,帮助你快速学习成长;另一方面,“初级程序员要失业了!”之类的新闻标题,又让你担心自己刚起步的职业前途。

但真实情况并没那么夸张:AI的确改变了初级开发者的成长路径,但并不意味着你会被取代。不过,你确实需要主动培养一些特殊的技能,以确保你的工作价值超过AI自动生成的代码。以下就是你该如何利用AI时代,主动投资自己、填补那30%的关键差距:

  • 扎实学好基础,千万别忽略“为什么”:
    你可能会忍不住想凡事问AI(比如“Python如何实现X功能?”),但如果你过度依赖AI的答案,而忽略了背后的原理,那就错失了宝贵的学习机会。把AI当成你的老师,而非单纯的“答案机器”。例如,当AI生成了一段代码时,你不妨追问一下它为什么这么写,或者请它逐行解释代码含义。你应该确保自己真正理解数据结构、算法、内存管理、并发这些基础概念,而不是完全交给AI解决。道理很简单:如果AI的答案有误或不全面,你自己心中必须有一个清晰的知识框架,才能及时发现并修正。有工程师曾经指出:“如果你只是被动接受AI的代码,而不理解它的原理,那你的实际学习效果可能会更差。”
    因此,花点时间主动阅读官方文档、亲手写一些小程序,巩固基本功。这些基础知识经得起技术的变化,即便未来AI工具再强大,也永不过时。

  • 独立解决问题和Debug,别过度依赖AI安全网:
    想真正建立自信,你必须偶尔独立行动。不少开发者建议,可以每周设定一个“完全不使用AI辅助”的日子,或定期减少AI协助。这么做的意义在于防止你的独立解决问题能力退化。当你尝试靠自己去攻克难题时,你会强迫自己深入思考问题背后的逻辑,而这种深度思考又会反过来帮你更聪明地使用AI工具。另外,每当AI生成的代码出现Bug时,别急着让AI帮你修复,先自己尝试Debug一下:用调试工具逐步排查问题,或者自己加入一些输出语句观察程序行为。
    把AI的建议当做提示,而不是最终答案。久而久之,你处理那些最棘手问题的能力会逐渐增强,而这些难题往往正是AI目前很难独立解决的地方——这就是你的独特价值所在。

  • 养成测试和验证代码的好习惯:
    作为初级开发者,养成编写测试代码的习惯非常重要,尤其是在使用AI生成代码的时候。当你从大模型(LLM)获得代码片段时,别盲目相信它是正确的,你应该主动怀疑并测试它:写单元测试,或者通过人工测试验证它能否真正满足需求和处理特殊情况。
    这样做有两个好处:
    (1)帮助你及时发现AI代码里的缺陷;
    (2)培养你在实际开发前就能想清楚代码期望的行为和边界情况。
    你甚至可以用AI帮你编写测试用例,但测试的标准和方向一定要由你自己掌控。如果你逐渐养成严格验证代码质量的声誉(无论代码是否由AI辅助生成),你的资深同事会更信任你,也避免了他们认为你只是随手丢出“质量可疑”代码的尴尬局面。从实践层面讲,从一开始就把测试视为开发过程的一部分,而非事后补救。认真学习测试框架、手动探索测试以及系统性重现Bug的方法。这些技能不仅能帮助你完成AI力所不及的30%,更能让你深入理解代码真正的运作方式。记住:每次你发现了AI留下的错误,那你就完成了AI无法做到的任务——这正是你的独特价值体现。

  • 培养代码可维护性的眼光:
    初级开发者通常关注的是“让代码能运行”,但在AI时代,写出一段能工作的初版代码并不难,AI很轻松就能搞定。真正困难且有价值的是,让代码变得易读、易维护、结构清晰。你应该开始培养自己对高质量代码的鉴赏能力,多留意代码结构、风格以及可读性。当AI生成一段代码时,主动和你所了解的最佳实践做比较,如果AI的代码过于复杂或混乱,你要主动重构它。例如,当LLM给你一个超过50行、职责混乱的函数时,把它拆分成多个职责明确的小函数。如果变量名晦涩难懂,立即改成易懂的名字。
    你要假设自己是一名严格的代码评审员,不断提升AI输出代码的质量。久而久之,你还能主动用更好的方式去引导AI生成代码(例如明确指出你期望的代码风格)。后续的维护人员(也许几个月或几年后才会接手的人)会感谢你,而你也向团队展示了自己不仅仅是“让代码跑起来”,而是真正具备工程师的思维。这种追求可维护性的意识,正是那“由人类完成的30%”的核心内容之一,你需要从职业生涯的一开始就重视起来。

  • 合理培养你的Prompt和工具使用技巧:
    不得不承认,“提示工程”(Prompt Engineering),也就是如何有效地跟AI沟通交流,已经成为了AI时代的一种关键技能。作为初级开发者,你当然要掌握如何精准提问、给AI合适的上下文信息,以及如何不断优化提示以获得理想的结果。这些技能甚至能帮你脱颖而出(因为许多资深工程师也在摸索阶段)。但你必须记住,好的提示往往代表你对问题有深刻的理解。如果你发现自己始终无法从AI获得想要的答案,很可能是你自己还没彻底理解问题本身——要利用这点主动反思。你可以试着先用自己的语言描述解决方案,再让AI帮你实现它。多尝试不同的AI工具(如Copilot、Claude等),了解它们的优势和弱点。
    熟练使用这些工具能极大提升你的效率,但切记,AI不是绝对的权威,而是更强大的“超级Stack Overflow”。你甚至可以借助AI进行一些小型项目实践(比如“我能用AI帮忙快速搭建一个小网页吗?”),从而更深入地理解如何在实际工作中整合AI工具。这种能力会让你在团队里脱颖而出,但仍然要注意经常训练自己独立解决问题的能力。

  • 主动寻求反馈和导师指导:
    最后,一项能极大促进你成长的长期技能,就是主动寻求反馈和导师指导。AI不会因为你忽略它的建议而生气,但人类的同事和导师却能提供无价的智慧。别害怕问资深工程师为什么他们更喜欢某种解决方案,尤其是和AI的方案不同时。积极和有经验的同事讨论设计决策和权衡取舍,从他们的回答中,你能学到资深工程师真正的思维模式,这种智慧无比珍贵。在代码评审时,对前辈给你AI生成代码的反馈尤其保持开放,深入理解每个建议背后的原因。
    长此以往,你会建立起自己独特的经验库。此外,找机会和前辈做结对编程,看看他们如何巧妙利用AI,也会快速帮助你成长。

初级开发者心态转变:从“消费”到“创造”

在AI时代,作为初级开发者,你必须意识到一种重要的心态转变:从过去仅仅使用解决方案,转向主动创造理解。以前,一个新手可能要花很长时间啃文档、写代码才能完成一个功能;现在AI几乎直接就能给你现成的方案。如果你只是简单地复制粘贴,那么你几乎什么也没学到,成长也会停滞。

相反,每次AI给出的解决方案都应该被你当作一次宝贵的学习机会。拆解它,尝试不同的修改方式,思考自己是否能独立想出类似的方案。别把AI输出的东西看成“最终答案”,而应该把它看作互动式的学习素材,这样你才真正能提高技能。这样一来,AI不但不会取代你的成长,反而会加速你的成长。很多专家认为,尽管AI可能会减少公司中大量初级“码农”的需求,但同时也提升了初级开发者的要求。初级开发者这个角色正在变化,你需要学会如何高效地和AI协作,迅速提高你的工作价值。如果你能养成上述好习惯,你会脱颖而出,不仅仅是提供AI就能提供的东西(任何公司买个订阅就能做到),更能提供属于人类的洞察力、可靠性以及不断自我提升的精神,这才是未来高级开发者的真正特质。

结论:拥抱变化,聚焦“人”的优势

软件开发一直是一个不断变化的领域——从汇编语言到高级语言,从传统服务器到云计算,现在又从手写代码走向AI辅助开发。每一次变化都自动化了编程的一部分工作,但开发者每次都适应了,并且找到了更多的机会。正如技术专家Tim O'Reilly所说,过去的每次技术革新,“几乎总会带来更多的工作、更多的成长和更多的机会”,这次AI的崛起也不例外。AI并非让程序员变得多余,而是重新定义了我们取得成功所需的技能。日常70%的枯燥代码工作将变得更轻松,而剩下30%的挑战性工作将变得更加重要。

要想最大化发挥人类在那30%中的价值,就得关注那些永不过时的核心工程技能:深入理解问题、设计清晰的解决方案、严格检查代码质量,以及从用户和具体环境的角度出发思考问题。那些能将这些技能与AI工具结合起来的开发者,会远远胜过那些只具备其中一方技能的人。事实上,很多专家已形成共识:AI是给有技术的人准备的工具。有经验的程序员能从AI获得更多,因为他们知道如何引导AI,也知道AI出错时该怎么处理。正如有人所说:“大语言模型(LLMs)是给高级玩家准备的高级工具。”这意味着我们每个人都有责任成为那个“高级玩家”,培养足够的专业技能来高效地驾驭这些新工具。

归根结底,软件工程不仅仅是写出“能用”的代码,更重要的是写出真正优秀的代码——这种代码能在现实世界的环境中长期稳定运行,并且能适应持续变化的需求。今天的AI虽然能帮你写代码,但还无法确保代码在所有这些方面都达到优秀,这仍然是开发者的职责。

通过持续加强以上提到的技能,高级开发者能继续引领创新,而初级开发者能更快地成长为专家。AI将承担越来越多常规性的工作,但你的创造力、直觉和深入的工程思考,将让AI的原始输出变得真正有价值。AI的确是强大的工具,但关键在于你如何使用它。 良好的工程习惯、人类的判断力和持续的学习意愿,永远是不可替代的

具体来说,无论你是在与一个热情的“AI助手”配对编程,还是在审查AI生成的大量代码时,都不要忘了用你的“人类视角”去检验它们,问自己:它解决的是正确的问题吗?其他人能否理解和维护它?有哪些风险和边缘情况?这些问题永远都是你的责任。未来的编程也许不再需要你亲手输入每个分号,而更多是指导和审查代码——但这仍然需要由开发者来掌控,因为只有你才具备判断正确性的智慧。

行动建议:

  • 以成长的心态使用AI: 用AI提高生产力,但要坚持弄明白方案为什么有效。把AI当做伙伴,而不是依赖,每隔一段时间挑战自己不用AI也能解决问题,这样才能真正提高你的能力。

  • 投入核心技能的培养: 加强系统设计能力,思考边缘情况,编写测试,深层次调试。这些长期的职业技能,AI无法替代。每项任务都要以代码的质量和清晰度为个人使命。

  • 对于高级开发者: 利用你的经验,通过良好的提示词引导AI,并严格审查它的输出。负责任地引导团队如何有效地把AI整合到工作流中,建立使用标准,确保知识在团队内共享。将AI帮你节省的时间用于更有挑战的项目,并指导其他人。

  • 对于初级开发者: 着重成为那种真正理解并能改进AI生成代码的工程师。以严谨认真闻名——总是仔细测试并复查自己的工作。从每个bug和反馈中学习成长,这样你很快就会迈向那些AI无法独立完成的工作,从而提升你的价值。

  • 保持适应性: 工具会持续演进。你也需要不断更新自己的工具和技能。但只要你的基本功扎实,并拥有协作的态度,就能驾驭任何技术浪潮。

AI辅助开发的时代已经到来,让日常编程任务变得更加高效。这解放了我们,让开发者有更多精力投入到那些更有难度、更有意义的创造性任务上。只要我们能专注在“那30%”的关键领域——批判性思考、优雅设计、严格把控代码质量——就不仅能保证我们的价值,更能带来更优秀的软件。

归根结底,卓越的软件工程从来都是解决问题,而不仅仅是写代码。AI并没有改变这一点,它只是激励我们将自己的问题解决能力提升到更高层次。拥抱这个挑战,你会在行业的新篇章中脱颖而出。

原文:《Beyond the 70%: Maximizing the human 30% of AI-assisted coding》https://addyo.substack.com/p/beyond-the-70-maximizing-the-human