超越70%:最大化AI辅助编程中人类30%的价值
摘要
为什么在AI辅助编程时代,持久的人类技能仍然至关重要
这是我文章"70%问题:关于AI辅助编程的残酷真相"的后续
像Cursor、Cline、Copilot和WindSurf这样的AI编程助手已经改变了软件的构建方式,承担了大量繁重的工作和样板代码。然而,正如经验丰富的开发者和行业领袖所指出的,软件工程中仍然存在一个关键部分是AI无法很好处理的——大约是工作中最后"30%"的部分,这部分将玩具解决方案与生产就绪系统区分开来。这个差距包括困难的部分:理解复杂需求、架构可维护的系统、处理边缘情况以及确保代码正确性。换句话说,虽然AI可以生成代码,但它往往难以胜任工程工作。
Tim O'Reilly在反思数十年的技术变革时提醒我们,每一次自动化的飞跃都改变了我们如何编程,但没有改变我们为什么需要熟练的程序员。我们面临的不是编程的终结,而是"我们今天所知的编程的终结",这意味着开发者的角色正在演变,而不是消失。
当今工程师面临的挑战是,在AI最擅长的领域(前70%)拥抱AI,同时加倍投入剩余30%所需的持久技能和洞察力。本文深入探讨专家见解,以确定哪些人类技能仍然至关重要。我们将探讨高级开发者应该继续利用什么,以及初级开发者必须投资什么才能与AI共同繁荣。
目标:为最大化那不可替代的30%的价值提供实用指导,并为各个级别的工程师提供可操作的要点。
70%问题:AI擅长什么(以及它在哪里挣扎)
基于AI的编码工具在某些任务上表现惊人。它们擅长生成样板代码、编写常规函数,并将项目完成到大部分程度。事实上,许多开发者发现AI助手可以实现一个涵盖大约70%需求的初始解决方案。
这通常是工作中直接、模式化的部分——遵循常见路径或通用框架的那种代码。正如一位Hacker News评论者所观察到的,AI在处理软件的**"偶然复杂性"(重复性、机械性的东西)方面表现出色,而"本质复杂性"**——理解和管理问题的固有复杂性——仍然落在人类肩上。用Fred Brooks的经典术语来说,AI处理的是附带的困难,而不是内在的困难。
这些工具在哪里挣扎?经验丰富的工程师一致报告存在"最后一公里"差距。AI可以生成一个看似合理的解决方案,但最后30%——涵盖边缘情况、完善架构和确保可维护性——"需要严肃的人类专业知识"。
例如,AI可能会给你一个在基本场景下技术上可行的函数,但除非明确告知,否则它不会自动考虑异常输入、竞态条件、性能约束或未来需求。AI可以让你完成大部分工作,但最后关键的30%(边缘情况、保持可维护性和稳固的架构)需要严肃的人类专业知识。
此外,AI有一个已知的倾向,即生成令人信服但不正确的输出。它可能会引入微妙的错误或"幻觉"出不存在的函数和库。Steve Yegge讽刺地将今天的大型语言模型(LLM)比作*"疯狂高产的初级开发者"——速度惊人且充满热情,但"可能被改变思维的药物影响"*,容易想出疯狂或不可行的方法。
用Yegge的话来说,LLM可以吐出乍一看很精致的代码,但如果一个经验不足的开发者天真地说"看起来不错!"并继续使用它,在接下来的几周里就会发生搞笑(或灾难性)的事情。AI并不真正理解问题;它拼接通常有意义的模式。只有人类才能辨别一个看似不错的解决方案是否隐藏着长期的地雷。Simon Willison在看到AI提出一个极其巧妙的设计后呼应了这一点,只有对问题有深刻理解的高级工程师才能认识到它是有缺陷的。教训是:AI的信心远远超过其可靠性。
至关重要的是,当前的AI不会创建超出其训练数据的根本性新抽象或策略。它们不会为你发明新颖的算法或创新的架构——它们重新混合已知的东西。它们也不会为决策负责。正如一位工程师所指出的,"AI没有比其训练数据包含的'更好的想法'。它们不为自己的工作负责。"
所有这些意味着创造性和分析性思维——决定构建什么、如何构建以及为什么——牢牢地保留在人类领域。总之,AI是开发者的力量倍增器,处理重复的70%并给我们"涡轮增压"的生产力。但它不是可以取代人类判断的银弹。软件工程剩余的30%——困难的部分——仍然需要只有训练有素、深思熟虑的开发者才能带来的技能。这些是要关注的持久技能。正如一次讨论所说:"简而言之:AI是一个强大的工具,但它不是魔法子弹……人类判断和良好的软件工程实践仍然至关重要。"
仍然至关重要的持久工程技能
要在AI增强的开发世界中茁壮成长,工程师应该加倍投入AI(尚)无法复制的持久技能和实践。无论我们的工具变得多么先进,这些能力都将保持至关重要。特别是,专注于加强以下方面:
系统设计和架构思维: 设计一个连贯的系统需要理解权衡、约束和超越编写几个函数的"大局"。AI可以生成代码,但不会自动为复杂问题选择最佳架构。整体设计——组件如何交互、数据如何流动、如何确保可扩展性和安全性——是需要人类洞察力的30%的一部分。高级开发者长期以来一直在磨练这项技能,初级开发者应该积极培养它。从模式和原则的角度思考(例如关注点分离、模块化)——这些指导AI生成的解决方案走向可维护性。记住,稳固的架构不会偶然出现;它需要一只经验丰富的人类之手掌舵。
处理边缘情况和模糊性: 现实世界的软件充满了古怪的场景和不断变化的需求。AI倾向于默认解决一般情况。开发者需要问"如果……会怎样?"并探查弱点。这里的持久技能是批判性思维和远见——列举边缘情况、预测失败并在代码或设计中解决它们。这可能意味着考虑空输入、网络中断、异常用户操作或与其他系统的集成**。领域知识**也起作用:了解业务背景或用户环境将揭示通用AI根本不知道的边缘情况。经验丰富的工程师习惯性地考虑这些场景;初级工程师应该练习系统地测试边界和质疑假设。
代码审查和质量保证: 随着AI编写大量代码,严格审查和测试该代码的能力变得更加关键。"每个人都需要更加认真地对待测试和审查代码," Steve Yegge强调。将AI生成的代码视为人类初级开发者的输出——你是负责捕获错误、安全漏洞或草率实现的代码审查者。这意味着在单元测试、集成测试和调试方面具有强大的技能。编写良好的测试是一项持久的技能,它迫使你理解规范并验证正确性。明智的做法是假设在证明之前什么都不起作用。正如一位开发者指出的,AI经常产生*"功能性但优化糟糕的代码"*,直到你通过迭代改进来指导它。培养测试思维:验证每个关键逻辑路径,使用静态分析或linter,如果AI给出的代码不符合你的质量标准,不要回避重写。质量保证不是外包给AI的领域——这是人类勤奋发光的地方。
调试和解决问题的技能: 当软件不按预期工作时,你需要真正的解决问题能力来诊断和修复它。AI可以协助调试(例如,通过建议可能的原因),但它缺乏对应用程序运行的特定上下文的真正理解。能够推理复杂的错误——重现它、隔离原因、理解底层系统(操作系统、数据库、库)——是一项永恒的工程技能。这通常需要对基础知识有深刻的掌握(内存和状态如何工作、并发等),初级开发者必须通过实践来学习。将AI用作助手(它可能解释错误消息或建议修复),但不要盲目依赖它。有条不紊地排除故障并在调试时应用第一原理的技能使伟大的开发者脱颖而出。这也是一个反馈循环:调试AI编写的代码将教会你下次更好地提示AI或避免某些模式。
维护上下文和大局理解: 软件项目不仅仅是孤立的编码任务;它们存在于用户需求、时间表、遗留代码和团队流程的更大背景中。AI对你项目的历史或某些决策背后的理由没有天生的感觉(除非你明确地将所有这些输入到提示中,这通常是不切实际的)。人类需要承载这种上下文。这里的持久技能是系统思维——理解系统一部分的变化如何影响另一部分、软件如何服务于业务目标以及所有活动部件如何连接。这种整体视角让你适当地使用AI输出。例如,如果AI建议一个巧妙的捷径,但与监管要求或公司惯例相矛盾,你会发现它,因为你知道上下文。初级工程师应该努力了解他们项目的背景并阅读设计文档,这样他们就可以培养关于什么合适、什么不合适的判断力。
沟通和协作: 构建软件是一项团队运动。AI不参加会议(谢天谢地)——人类仍然必须与其他人交谈以澄清需求、讨论权衡和协调工作。强大的沟通技能一如既往地有价值。高级开发者应该利用他们解释复杂想法、指导他人和阐明愿景的能力。初级开发者应该练习提出好问题并清楚地描述问题(对同事和AI都是如此)。有趣的是,提示AI本身就是一种沟通形式;它要求你精确表达你想要什么。这与核心工程技能重叠:需求分析。如果你能制定清晰的提示或规范,这意味着你已经思考过问题。此外,分享知识、编写文档和审查他人的代码是AI无法取代的协作技能。在未来,随着开发者"与"AI一起工作,团队中的人与人之间的协作——确保解决正确的问题——仍然至关重要。一个新兴趋势是,开发者可能会更多地关注高层设计讨论(通常AI作为参与者)和协调任务,本质上承担更多指挥者的角色。沟通和领导技能将在指挥者的位置上很好地为你服务。
适应性和持续学习: 最后,一项元技能:学习新工具和适应变化的能力。AI辅助开发领域正在快速发展。保持开放心态并学习如何有效使用新AI功能的高级工程师将保持领先——Tim O'Reilly建议*"渴望学习新技能"的开发者将从AI中看到最大的生产力提升。反过来,初级开发者应该投资于深入学习基础知识*并且对新技术保持好奇。这种组合使你能够将AI作为工具来利用,而不会变得依赖它。这是一种平衡行为:使用AI来加速你的成长,但也偶尔在没有它的情况下练习,以确保你不会跳过核心学习(一些开发者定期进行"AI排毒"以保持他们的原始编码技能敏锐)。简而言之,成为不断学习的工程师——这是任何时代都能保证职业生涯的技能。
这些技能构成了软件工程中的人类优势。它们是持久的,因为它们不会随着下一个框架或工具变化而过期;如果有的话,AI的崛起使它们更加突出。Simon Willison认为,AI辅助实际上使强大的编程技能更有价值,而不是更少,因为那些拥有专业知识的人可以更有效地利用这些工具。
一台强大的机器在不熟练的手中可能是危险的或浪费的,但在有能力的手中它是变革性的。在AI时代,经验丰富的工程师就像一位经验丰富的飞行员拥有新的先进副驾驶:旅程可以更快、更远,但飞行员仍然必须驾驭风暴并确保安全着陆。
高级开发者的优势:利用经验与AI
对于高级工程师来说,AI编码工具的出现应该被视为放大你影响力的机会——如果你以正确的方式利用你的经验。高级开发者通常拥有深厚的领域知识、对可能出错的直觉以及做出高层技术决策的能力。
这些优势是AI无法单独处理的30%的一部分。以下是经验丰富的开发者如何最大化他们的价值:
成为架构师和总编辑: 让AI处理代码的第一稿,而你专注于架构解决方案,然后完善AI的输出。在许多组织中,我们可能会看到一种转变,即团队只需要"高级员工",他们"(a)描述要完成的任务(即创建提示),以及(b)审查结果工作的准确性和正确性"。拥抱这种模式。作为高级开发者,你可以将复杂的需求转化为AI助手的有效提示或规范,然后用你的批判性眼光审查生成的每一行。你实际上是在与AI结对编程——它是快速打字员,但你是大脑。在审查期间保持高标准:确保代码符合你组织的质量、安全和性能基准。通过充当架构师和编辑,你可以防止"高审查负担"压倒你。(一个警告:如果初级员工只是将原始AI输出扔给你,要反击——建立一个流程,让他们必须首先验证AI生成的工作,这样你就不是唯一的安全网。)
将AI用作大型计划的力量倍增器: 高级工程师经常推动大型项目或处理初级工程师无法单独处理的棘手重构。AI可以通过在你的指导下处理大量机械变化或探索替代方案来增强这些努力。Steve Yegge引入了术语**面向聊天编程(CHOP)**来描述这种工作方式——"通过迭代提示细化进行编码",AI作为协作者。利用CHOP在你承担的事情上更加雄心勃勃。正如Simon Willison所指出的,拥有AI辅助"降低了一个项目值得投入时间的门槛",因为可能需要几天的事情可以在几小时内完成。因此,高级开发者可以尝试那些"如果……就好了"的项目,这些项目似乎总是略微遥不可及。关键是保持指导思想:你决定追求哪些工具或方法,你将各个部分整合成一个连贯的整体。你的经验使你能够筛选AI的建议——接受那些合适的,拒绝那些不合适的。
指导并在AI时代设定标准: 高级工程师的另一个关键角色是指导经验较少的团队成员有效使用AI以及永恒的最佳实践。你可能拥有初级工程师看不到的来之不易的陷阱知识(内存泄漏、差一错误、并发危险等)。随着初级工程师现在可能通过AI生成代码,教他们如何自我审查和测试该代码很重要。通过展示对AI贡献的彻底测试来树立榜样,并鼓励不盲目信任机器输出的文化。一些组织(甚至律师事务所)已经制定了规则,如果有人使用AI,他们必须披露并自己验证结果——而不仅仅是假设高级工程师会发现错误。高级工程师应该在他们的团队中倡导这样的规范:欢迎AI,但需要勤奋。通过这种方式指导初级工程师,你可以减轻一些监督负担,并帮助他们更快地成长为那30%的技能集。
继续培养领域精通和远见: 你广泛的经验和背景比以往任何时候都更重要。高级开发者通常拥有关于为什么以某种方式构建事物或行业如何运作的历史知识。这种领域精通让你能够发现AI的失误,而新手不会。继续投资于深入理解问题领域——这可能意味着跟上业务需求、用户反馈或影响软件的新法规。除非被告知,否则AI不会自动纳入这些考虑因素。当你将领域洞察力与AI的速度结合起来时,你会得到最好的结果。此外,使用你的远见来引导AI。例如,如果你知道快速修复会在未来造成维护痛苦,你可以指示AI实现更可持续的解决方案。高级工程师应该相信他们多年来磨练的直觉——如果一段代码"看起来不对"或好得令人难以置信,就深入研究。十次中有九次,你的直觉发现了AI没有考虑到的东西。能够预见代码的二阶和三阶效应是高级工程师的标志;不要让AI的便利性削弱这种习惯。相反,将其应用于AI产生的任何东西。
利用软技能和领导力: 随着AI承担一些编码工作,高级开发者可以将更多精力投入到工程的人性化方面。这包括与利益相关者沟通、领导设计会议以及做出使技术与业务战略保持一致的判断。Tim O'Reilly和其他人建议,随着常规编码变得更容易,价值转移到决定构建什么以及如何编排复杂系统。高级工程师通常是编排和看到大局的人。承担这个角色。自愿编写架构路线图,评估采用哪些工具(AI或其他),或为你的组织定义AI使用的编码指南。这些是AI无法完成的任务——它们需要经验、人类判断力,通常还需要跨团队的共识建设。通过放大你的领导力存在,你确保自己不仅仅是一个代码生成器(可以被另一个工具替代),而是一个不可或缺的技术领导者,在这个新时代指导团队。
简而言之**,继续做经验丰富的开发者最擅长的事情**:见树又见林。
AI将帮助你砍伐更多的树,但仍然需要有人决定砍哪些树以及如何用木材建造一座稳定的房子。你的判断力、战略思维和指导现在更加关键。有效利用AI的高级开发者可以比不这样做的人更有生产力——但真正出类拔萃的人将是那些应用他们的人类优势来放大AI输出的人,而不仅仅是让AI自由发挥。
正如一位Reddit用户所说,"AI是一个编程力量倍增器",它*"大大提高了高级程序员的生产力"*。倍增效应是真实的,但被倍增的是你的专业知识。保持这种专业知识的敏锐性,并将其置于开发过程的中心。
在AI时代作为初级开发者成长
如果你是初级或经验较少的开发者,你可能对AI感到既兴奋又焦虑。一方面,AI助手可以编写你自己可能不知道如何编写的代码,可能会加速你的学习。另一方面,有像"初级开发者之死"这样的标题暗示入门级编码工作面临风险。
真相介于两者之间:AI正在改变早期职业体验,但初级开发者并没有过时。然而,你确实需要积极主动地发展技能,以确保你贡献的价值超出AI所能产出的。以下是如何投资自己以有效处理那30%差距的方法:
学习基础知识——不要跳过"为什么": 很容易依赖AI来回答每个问题("我如何在Python中做X?")而从不真正吸收底层概念。抵制这种冲动。将AI用作导师,而不仅仅是答案自动售货机。例如,当AI给你一段代码时,问为什么它选择那种方法,或者让它逐行解释代码。确保你理解数据结构、算法、内存管理和并发等概念,而不总是依赖AI。原因很简单:当AI的输出错误或不完整时,你需要自己的心智模型来识别和修复它。正如一位工程师指出的,如果你"没有积极参与AI为什么生成某些代码,你可能实际上学得更少",阻碍你的成长。所以花时间阅读文档,从头开始编写小程序,并巩固你的核心知识。这些基础知识是持久的;即使你周围的工具发生变化,它们也会为你服务。
练习解决问题和调试,不要依赖AI安全网: 要建立真正的信心,有时你必须单飞。许多开发者提倡进行"无AI日"或以其他方式定期限制AI辅助。这确保你仍然可以仅凭自己的技能解决问题,这对于避免技能萎缩很重要。你会发现它迫使你真正思考问题的逻辑,这反过来使你更好地使用AI(因为你可以更智能地指导它)。此外,每当你在AI生成的代码中遇到错误或错误时,在要求AI修复之前,先自己跳进去调试它。通过逐步执行调试器或添加打印语句来查看出了什么问题,你会学到更多。将AI建议视为提示,而不是最终答案。随着时间的推移,处理任务的最后棘手部分将在AI挣扎的领域建立你的技能——这正是使你有价值的地方。
专注于测试和验证: 作为初级开发者,你可以养成的最佳习惯之一是为你的代码编写测试。如果你使用AI生成代码,这一点尤其重要。当你从LLM获得一大块代码时,不要假设它是正确的——挑战它。编写单元测试(或使用手动测试)来查看它是否真正处理需求和边缘情况。这完成了两件事:(1)它捕获AI输出中的问题,(2)它训练你在信任实现之前考虑预期行为。你甚至可以使用AI来帮助编写测试,但你定义要测试什么。Steve Yegge关于认真对待测试和代码审查的建议适用于所有级别。如果你培养了仔细验证工作(AI辅助或非AI辅助)的声誉,高级同事会更信任你,你将避免他们觉得你只是在"倾倒"可疑代码给他们的情况。实际上,开始将测试视为开发的组成部分,而不是事后想法。学习如何使用测试框架,如何进行探索性手动测试,以及如何系统地重现错误。这些技能不仅使你在30%的工作中更好,它们还加速了你对代码实际工作方式的理解。记住:如果你发现了AI引入的错误,你刚刚做了AI无法做的事情——这就是附加价值。
培养对可维护性的眼光: 初级开发者通常专注于"让它工作"。但在AI时代,获得一个基本的工作版本很容易——AI可以做到这一点。更难的部分(也是你应该关注的)是使代码可读、可维护和干净。开始培养对良好代码结构和风格的眼光。将AI的输出与你知道的最佳实践进行比较;如果AI代码混乱或过于复杂,主动重构它。例如,如果LLM给你一个做太多事情的50行函数,你可以将其拆分为更小的函数。如果变量名不清楚,重命名它们。本质上,假装你是一个人类代码审查者(即使你是初级的),并改进AI的代码,就像同事写的一样。这将帮助你内化良好的设计原则。随着时间的推移,你将开始以产生更干净代码的方式提示AI(因为你会指定你想要的风格)。软件的维护者(通常是几个月或几年后工作的团队)会感谢你,你将证明你的思考超越了"让它运行"——你像工程师一样思考。保持可维护性正是在人类驱动的30%中,所以从你职业生涯的开始就让它成为你的关注点。
发展你的提示和工具技能(明智地): 不可否认,"提示工程"——有效与AI工具交互的技能——是有用的。作为初级开发者,你绝对应该学习如何向AI提问,如何给它适当的上下文,以及如何迭代提示以改进输出。这些是可以让你脱颖而出的新技能(许多经验丰富的开发者也还在摸索!)。然而,请记住,良好的提示通常是充分理解问题的代理。如果你发现无法让AI做你想要的事情,可能是因为你需要首先澄清自己的理解。将此作为信号。一个策略是在要求AI实现之前,先用简单的英语自己概述一个解决方案。此外,尝试不同的AI工具(Copilot、Claude等)以了解它们的优势和劣势。你对这些助手越熟练,你就越有生产力——但永远不要将它们的输出视为绝对正确。将AI想象成超级充电的Stack Overflow:一个辅助工具,而不是权威。你甚至可以使用AI的帮助构建小型个人项目来突破你的极限(例如"我能用AI的帮助构建一个简单的Web应用吗?")。这样做将教会你如何将AI集成到开发工作流程中,这是带入团队的一项很好的技能。只需平衡它与前面提到的无网工作时期。
寻求反馈和指导: 最后,一项将加速你成长的持久技能是寻求反馈并向他人学习的能力。如果你忽略AI的建议,它不会生气,但你的人类队友和导师对你的发展是无价的。不要犹豫问高级开发者为什么他们更喜欢一个解决方案而不是另一个,特别是如果它与AI建议的不同。与更有经验的同事讨论设计决策和权衡——这些对话揭示了经验丰富的工程师如何思考,这对你来说是金子。在代码审查中,对关于你的AI编写代码的评论特别接受。如果审查者指出"这个函数不是线程安全的"或"这种方法会有扩展问题",花时间理解根本问题。这些正是AI可能错过的事情,你想学会捕捉。随着时间的推移,你将建立一个考虑因素的心理清单。此外,寻找结对编程的机会(即使是远程)。也许你可以与在工作流程中使用AI的高级工程师"结对"——你将观察他们如何提示AI以及如何纠正它。对反馈持开放态度并积极寻求指导将帮助你从做AI可以做的任务成熟到做只有人类才能做的高价值任务。从某种意义上说,你正在尝试尽可能高效地获得通常伴随经验而来的智慧。这使你不仅仅是房间里的另一个编码者——它使你成为团队渴望保留和提升的那种工程师。
初级心态:从消费到创造
值得注意的是,在AI时代,初级工程师的心态转变:从仅仅消费解决方案转向创造理解。过去,初级工程师可能会在文档中挣扎,最终编写一个功能;现在AI可以在盘子上给你一个解决方案。如果你只是消费它(复制粘贴然后继续),你就没有成长多少。
相反,将每个AI给出的解决方案用作学习案例。剖析它,实验它,并考虑你自己如何到达它。通过将AI输出视为交互式学习材料而不是结束所有问题的答案,你确保你——人类——在不断升级。这样,AI不是取代你的成长,而是加速它。许多专家认为,虽然AI可能会减少对大型"编码苦力"初级团队的需求,但它也提高了成为初级开发者的标准。这个角色正在转变为能够有效地与AI合作并快速攀升价值链的人。如果你采用上述习惯,你将作为一个初级开发者脱颖而出,他不仅带来AI可以带来的东西(任何公司都可以通过订阅获得),而且带来洞察力、可靠性和持续改进——未来高级开发者的特质。
结论:拥抱变化,专注于人类优势
软件工程一直是一个不断变化的领域——从汇编语言到高级编程,从本地服务器到云,现在从手动编码到AI辅助开发。每一次飞跃都自动化了编程的某些方面,但每次开发者都适应并找到了更多要做的事情。正如Tim O'Reilly所指出的,过去的创新"几乎总是为开发者带来更多的工作、更多的增长、更多的机会"。AI的崛起也不例外。它不是让开发者变得无关紧要,而是重塑成功所需的技能集。编码的平凡70%变得更容易;具有挑战性的30%成为我们价值的更大部分。
要最大化那人类30%,专注于永恒的工程技能:深入理解问题、设计干净的解决方案、仔细审查代码的质量,以及考虑用户和上下文。那些将这些技能与AI工具结合起来的人将超越只有其中一个的人。事实上,专家之间出现的共识是AI是熟练者的工具。经验丰富的程序员从AI中获得更多,因为他们知道如何引导它以及当它失败时该做什么。有人说*"LLM是为高级用户准备的电动工具。"*。这意味着我们每个人都有责任成为那个"高级用户"——培养让我们有效使用这些新工具的专业知识。
最终,软件工程的工艺不仅仅是编写有效的代码。它是关于编写运行良好的代码——在现实世界环境中、随着时间的推移以及在不断变化的需求下。今天的AI可以协助编写代码,但它还不能确保代码在所有这些维度上都运行良好。这是开发者的工作。
通过加倍投入上述技能,高级开发者可以继续领导和创新,初级开发者可以加速他们的精通之旅。AI将处理越来越多的常规工作,但你的创造力、直觉和深思熟虑的工程将把原始输出转化为真正有价值的东西。AI是一个强大的工具,但关键在于我们如何使用它。 良好的工程实践、人类判断和学习意愿将保持至关重要。
实际上,无论你是与"热切的初级"AI结对编程编写你的函数,还是审查充满AI生成代码的差异,永远不要忘记应用你独特的人类视角。问:这解决了正确的问题吗?其他人能够理解和维护这个吗?风险和边缘情况是什么?这些问题是你的责任。编程的未来确实将涉及更少的手动输入每个分号,更多的指导和策划——但它仍然需要开发者掌舵,他们有智慧正确地做到这一点。
可操作的要点:
采用AI的成长心态: 使用它来放大生产力,但承诺学习为什么解决方案有效。将AI视为合作伙伴,而不是拐杖,并定期挑战自己在没有它的情况下解决问题以建立你的技能。
投资核心技能: 磨练你设计系统、思考边缘情况、编写测试和深入调试的能力。这些是AI无法替代的长期职业技能。让代码质量和清晰度成为你在每项任务上的个人使命。
对于高级开发者: 利用你的经验来引导AI(通过良好的提示)并审查其输出。在负责任地将AI集成到团队工作流程中发挥领导作用——设定使用标准并确保知识共享。利用AI节省的时间来处理更雄心勃勃的项目并指导他人。
对于初级开发者: 专注于成为能够理解和改进AI生成代码的那种工程师。建立彻底性的声誉——始终测试和仔细检查你的工作。从每个错误和反馈中学习。通过这样做,你将快速进入AI单独无法完成的工作,增加你的价值。
保持适应性: 工具将不断发展。持续更新你的工具集和技能。但如果你有扎实的基础和协作态度,你将能够驾驭任何技术浪潮。
AI辅助编码的时代已经到来,它使常规编码更快。这使我们作为开发者能够专注于软件创建的更困难和更有意义的方面。通过最大化我们对"最后30%"的关注——批判性思维、设计精致、质量检查——我们不仅确保了我们的相关性,而且确保我们交付更好的软件。
最终,伟大的软件工程一直是关于解决问题,而不仅仅是编写代码。AI不会改变这一点——它只是挑战我们将解决问题提升到下一个水平。拥抱这个挑战,你将在我们行业的这个新篇章中茁壮成长。
