乐于分享
好东西不私藏

【AI软件实践变革】10-代际转变与AI工程技能软件开发的新生代

【AI软件实践变革】10-代际转变与AI工程技能软件开发的新生代

除了直接的技术和经济影响,AI在软件开发中的兴起也在催化行业中的代际转变。这种转变有两个方面:(1)不同世代的开发者如何接近和适应AI工具的差异,以及(2)AI时代进入该领域的开发者的人口统计和角色与AI之前开始的人相比如何变化。

新一代的”AI原生”开发者

就像我们有伴随互联网长大的“数字原住民”一样,我们现在看到第一批“AI原住民”开发者。这些是年轻的程序员和计算机科学学生,他们几乎在开始编码的同时就开始使用GitHub Copilot、ChatGPT或Replit的Ghostwriter等工具。他们的学习过程根本不同。他们不再通过仔细学习语法和算法的死记硬背来学习,而是经常通过探索AI建议的内容,然后反向工程或调整它来学习。例如,一个学生可能会要求AI实现一个数据结构,然后研究输出以理解它是如何工作的。这可以在某些方面加速学习——快速提供许多例子——但如果指导不当,也可能导致肤浅的理解。

教育工作者正在调整课程以适应这一现实,也许更多地关注概念理解、问题分解和验证,而不是编写二分查找的每一行。当这些新人与传统方式学习的资深开发者一起加入团队时,代际差距就出现了。资深人员可能期望初级人员通过一些挣扎来真正掌握问题,而初级人员可能更倾向于立即使用AI辅助。导师制和培训风格正在演变:导师可能会在作业中结合AI使用(例如,“使用AI开始,但解释它给你的每一行”),混合旧方法和新方法。

态度和对变化的开放性

通常,年轻开发者对采用AI工具表现出高度的热情(例如,一项调查可能显示,30岁以下的开发者定期使用AI的百分比高于50岁以上的开发者)。他们经常将AI视为其环境的自然延伸。相比之下,一些资深开发者以健康的怀疑态度接近这些工具:他们对潜在的陷阱有更多的背景,因为他们看到许多“灵丹妙药”工具来来去去。也就是说,许多经验丰富的开发者一旦测试并发现它有用,也拥抱AI;他们最初的谨慎往往转变为务实使用,将他们的专业知识与AI的速度结合起来。

一个有趣的动态是知识共享中的角色逆转。在许多组织中,初级开发人员正在教资深开发人员关于有效使用AI助手的技巧——从通常的自上而下的导师制的一个翻转。一位资深工程师可能是系统架构专家,但不熟悉提示调整;一位初级人员可能会展示一个巧妙措辞的提示如何产生更好的结果,或者如何将AI插件集成到IDE中。这种交叉授粉如果处理得当,对团队文化可能非常积极(它赋予初级人员权力,并防止资深人员感到过时)。

经验仍然重要

有一句流传的话说,“AI不会取代开发者,但使用AI的开发者可能会取代那些不使用AI的开发者”。这背后的真相是,经验与AI结合极其强大。一位非常资深的开发者,了解架构、陷阱、设计模式等,可以驱动AI助手实现他们的愿景快得多,实际上倍增了他们的输出。相反,一个有AI的新手可能会产生看似合理的东西(因为AI可以创建抛光的代码),但不稳健。资深工程师带来AI缺乏的判断、领域知识和隐性理解。初级工程师带来新鲜的眼睛,并且通常对如何解决问题没有先入为主的观念,当被AI放大时,有时可以产生创造性的解决方案。理想情况下,团队想要两者的最好——但这需要代际协作和尊重。

不同世代开发者的优势:

  • 资深开发者
    深厚的架构知识、丰富的经验、强大的判断力
  • 初级开发者
    AI熟练度高、学习速度快、思维灵活
  • 协作优势
    经验与AI的结合、创新思维的融合

值得注意的是,Steve Yegge挑衅性地题为“初级开发者的死亡”的文章沉思道,对于行业新人来说,这是一个充满挑战的时期,正是因为AI可以做很多以前是初级人员证明地面的任务。“初级开发者的糟糕年份”的情绪源于这样的恐惧,当配备AI的资深开发者可以独自处理更多时,进入该领域并获得经验将更加困难。作为回应,一些人提出“初级”的定义将会改变——它更少关于你能写多少代码,而更多关于你能多好地使用工具。初级人员可能需要从比以前稍高的技能基线(包括AI熟练度)开始,但他们也有AI帮助他们攀登阶梯。

职业轨迹

我们可能会在某些情况下看到更快的晋升——如果一个开发者可以通过利用AI产生与有5年更多经验的人一样多的产出,他们可能会更快地承担更大的责任。或者,组织可能会提高每个级别的期望(因为产出更高,期望也上升)。从统计学上讲还为时过早,但“10倍工程师”的叙述可能会从罕见的先天天赋转变为掌握AI驱动工作流程的人。

代际协作

混合不同经验水平的团队需要确保他们找到重视每个成员贡献的工作流程。例如,一个可能的工作流程:初级工程师用AI辅助起草解决方案,然后资深工程师审查和精炼它们,利用他们的专业知识来捕捉初级或AI遗漏的问题。这可能比资深人员编写所有内容或初级人员独自挣扎更高效。在这样的场景中,每个人都受益:初级人员从资深人员的反馈中学习,资深人员卸载一些苦力工作并专注于更高层次的问题,产品可能更快交付。

调整公司文化

以其严格编码文化闻名的公司(想想以艰难的编码面试而闻名的科技巨头,期望算法的记忆)也在调整。一些正在重新审视面试实践:如果日常编码是用AI完成的,要求候选人在没有AI的情况下在白板上反转二叉树有意义吗?可能没有;相反,问题可能更多地关注系统设计,甚至评估候选人如何使用AI工具解决任务(作为实际工作条件的代理)。这是另一个代际枢纽——在招聘和晋升中测试和重视的技能将会转变。

AI工程技能的兴起

随着软件开发在AI的影响下转型,一组独特的AI工程技能正在成为技术专业人士的必备技能。这些技能超越了传统编程,包括了解如何在软件项目中有效利用AI系统。在这里,我们概述了定义“AI流利”软件工程师的关键能力和知识领域。

AI增强的软件设计

现代软件工程师需要对AI组件(如LLM或ML模型)如何能够被纳入系统架构有工作理解。这包括知道何时使用AI解决方案与基于规则或确定性的解决方案。例如,开发者应该认识到,涉及复杂模式识别的任务(自然语言理解、日志中的异常检测等)可能最好由AI模型处理,而需要保证精度的任务(如金融交易计算)应该保持算法化。设计AI作为组件的系统还涉及规划回退行为(如果模型输出低置信度或超时会发生什么?)以及如何将AI输出与传统软件模块集成。

提示工程与AI编排

我们在第九部分讨论了提示工程和动态提示。掌握这些现在是核心技能。这不仅仅是关于用英语写提示;它是关于概念化如何驱动AI做你需要的事情。这可能涉及制定多步提示,使用少样本学习(在提示中提供示例),或指示模型逐步推理。它还涉及编排——使用框架来管理提示,以及可能微调或配置像LangChain这样的系统。作为一个具体的例子,一个AI熟练的工程师应该知道如何设置一个带有自定义知识库的对话代理:使用嵌入和向量存储,根据需要向模型提供相关上下文。这些任务变得类似于知道如何在经典软件工程中设置数据库或Web服务器。

工具和框架熟练度

一系列迎合AI集成的新工具正在出现。这些包括:

  • 向量数据库
    (用于嵌入的相似性搜索)——例如,Pinecone、Weaviate或开源FAISS。这些用于启用检索增强生成,本质上是LLM通过基于嵌入获取相关数据块来提供长期“记忆”
  • AI编排框架
    ——例如,LangChain、Microsoft的语义内核或Hugging Face管道。这些提供了链接模型调用、与外部API集成以及处理多代理场景的抽象。
  • 模型服务与MLOps
    ——了解如何部署和监控AI模型。这可能涉及容器化模型,使用服务平台,并收集模型性能指标(延迟、通过某种反馈机制测量的响应准确性)。
  • MCP和API使用
    ——如第七部分所涵盖,熟悉模型上下文协议等协议,或流行模型的特定API(OpenAI、Azure OpenAI、AWS Bedrock等),是有价值的。知道如何高效调用这些API(批量调用、处理速率限制)是技术技能集的一部分。

数据管理和检索增强生成(RAG)

AI工程通常涉及模型使用的非结构化数据。工程师应该能够为AI消费策展和预处理数据。例如,将文档分割成块,为每个创建嵌入向量,并确保数据的更新反映在AI的上下文中。这涉及到模型上下文的管理。处理JSON模式、向量数学(用于嵌入)和使用库与这些存储接口的技能是工具包的一部分。

理解模型局限性

一个好的AI工程师知道模型偏见、幻觉、上下文窗口限制和提示注入攻击等概念。他们应用这些知识以确保健壮的使用。例如,他们可能会实现对输出的检查(比如验证AI生成的SQL查询不删除表,或者代码建议不包括不安全的函数)。他们还设计用户体验,使得AI的建议被审查而不是在敏感场景中盲目执行。

微调和自定义模型训练

虽然并非每个软件开发者都会从头开始训练模型,但了解微调如何工作可能非常有益。微调是获取预训练模型并在特定领域数据上进一步训练它以提高其在该领域性能的过程。工程师可能不会自己做繁重的ML工作,但他们应该知道为微调收集什么数据以及它如何能提高结果。例如,在公司的内部代码库上微调代码模型可能会使其风格和解决方案与该公司的需求更加一致。即使他们与数据科学团队协调这一点,对流程的熟悉也是一种优势。

AI组件的持续集成/部署

传统的CI/CD现在可能包括AI模型的步骤。工程师应该熟悉版本化模型(就像版本化微服务一样)、运行AI组件的自动化测试(尽管测试AI更棘手——它通常涉及统计评估或确保已知输入的一致性)以及部署对AI提示或逻辑的更新而不对整个系统产生不利影响。正如Quantic报告所指出的,CI/CD技术是部署现代基于LLM系统的关键,允许快速迭代和结合反馈。AI工程师经常需要与DevOps团队合作,以确保AI系统扩展(自动扩展GPU实例,如果模型服务宕机则处理故障转移等)。

道德和负责任的AI使用

越来越强调AI伦理和负责任使用。利用AI的工程师应该理解不暴露敏感数据在提示中的指导原则(特别是如果使用第三方API),当AI被使用时保持透明(如果它影响最终用户),并减轻偏见。例如,如果AI在HR软件中帮助筛选简历,工程师必须意识到公平性并施加约束或审查以避免歧视性结果。虽然这似乎在纯工程之外,但它正在迅速成为软件工程师的职责的一部分,以确保他们构建/使用的工具与伦理标准和法律要求(如数据保护法)一致。

领域知识协同

最后,AI工程技能通常需要与领域特定知识结合。如果你正在为医疗保健软件构建AI,理解医疗术语和合规性(如HIPAA)很重要;对于金融,理解法规和典型工作流程很重要。最好的AI解决方案通常是那些针对领域定制的,所以能够混合领域知识和AI能力的工程师将会脱颖而出。我们看到像“X领域的AI工程师”这样的头衔,其中X可能是安全、医疗保健、金融等。这反映了软件工程一直有专业化,但现在带有AI转折。

结论

总之,由于AI,软件开发中的代际转变以优势的融合为特征:新开发者的能量和适应性以及经验丰富者的智慧和洞察力。AI的存在改变了每一代如何贡献和学习。与其是一个鸿沟,它可能是一个共生:新一代用AI推动边界,老一代提供基础和深度。那些培养相互学习环境——资深人员从初级人员那里学习AI技巧,初级人员从资深人员那里吸收工程基础——的组织将成功度过这一转变。在某种意义上,我们都在成为“下一代”开发者,因为技术迫使在每一个职业阶段进行持续学习和重新发明。

AI工程技能将开发者转变为软件工程师和机器学习从业者的混合体,虽然不一定达到研究人员的深度。它是关于成为AI的强大用户和集成者。Quantic学校总结说,技能范围从使用向量存储和检索增强生成,到管理模型上下文,到利用编排框架和提示工程。这些,结合对不断发展的供应商提供和底层模型行为的了解,定义了现代AI软件工程师。随着该领域的成熟,我们可能会看到“AI工程”的正式认证或学位项目,就像云计算架构或数据科学一样,系统地培训人们在这些多学科技能中。

关键要点:

  • AI原生开发者正在改变软件开发的学习和实践方式
  • 不同世代开发者需要相互学习和协作
  • AI工程技能成为软件开发者的必备能力
  • AI时代需要更广泛的技能组合和专业知识
  • 代际转变带来了新的机遇和挑战