资深工程师如何利用AI实现真正价值
大多数关于AI编程工具的文章都专注于自动补全和样板代码生成。这对初学者来说不错,但它几乎没有触及这些工具在解决复杂工程问题时能提供的真正帮助。
几年前,我加入一家公司并继承了一个庞大、无文档且使用不熟悉技术构建的系统。作为首席工程师,你需要自己解决问题,但传统的无尽文档阅读、试错和打断同事的方法效率极低。当时我对AI工具持怀疑态度——它们能生成可工作的代码吗?能做出合理的决策吗?
改变我想法的是使用方式的转变。我不再把AI视为代码生成器,而是将其当作可以头脑风暴的知识渊博的同事。AI拥有庞大的编程知识库,而我提供上下文:项目需求、约束条件以及团队的实际能力。这种组合大大加快了所有工作。
例如,我曾需要构建一个在严格安全要求下跨网络边界连接服务的系统。我理解业务方面但不熟悉网络细节。我没有在文档中摸索或犯下代价高昂的错误,而是与AI一起逐步分析每个组件。我描述我想要实现的目标,它分解概念并建议方法,然后我根据官方文档验证所有内容。
结果:一个可工作的解决方案交付速度大大加快,而且我深入理解了它,因为我全程参与而不是复制粘贴神秘的代码。
这不仅仅是打字更快的问题,而是关于做出更明智的决策并及早发现问题。
架构:探索权衡,而不仅仅是获取答案
对我来说,AI最有价值的用途根本不是编写代码,而是探索架构决策。这是当多条路径都可能有效,而你正在决定哪些权衡最重要的时候。
例如,决定数据应该存放在你的系统还是客户系统中,不仅仅是技术问题。它影响成本、运营复杂性,以及你是在解决实际问题还是追逐最佳实践。AI可以帮助清晰地映射这些因素,这使得与利益相关者的对话更容易,并确保你不会忽略明显的风险。
对于技术选择也很有用,比如托管服务与自定义构建、批处理与流处理等。它可以帮助你看到何时简单方法就足够好,何时复杂性是合理的。关键是提供上下文。不要问什么是最好的,要问什么最适合你的具体情况。
我使用的一个模式:从广泛开始,根据约束条件缩小范围,然后根据你实际拥有的情况进行细化。这种渐进式缩小范围的方法比试图一开始就完美设计所有东西要好得多,后者从来都不真正有效。
主要陷阱是过度分析。一旦你能清楚地解释方法,理解权衡,并知道你接受的风险,就停止辩论,开始构建。实施将比再花一个小时的设计讨论教会你更多。
调试:系统性,而非靠运气
AI不会神奇地修复错误,但它确实使调试更加有条理,特别是对于复杂的配置或环境特定问题。
一个典型场景是系统在本地工作但在其他地方失败并出现神秘错误。我不是猜测,而是与AI分享错误、相关配置和上下文。它有助于构建调查结构:凭据是否加载?网络连接是否完好?服务是否可以访问?DNS是否解析?
通过测试每一层并反馈,你逐渐缩小范围。
有一次,我在一个看起来像认证问题的数据库连接错误上浪费了几个小时。与AI逐步合作,我发现数据库在私有网络上,而我的VPN没有正确路由流量。凭据一直都没问题。没有那种有条理的方法,我会浪费更多时间追逐错误的东西。
教训:上下文就是一切。提供完整的堆栈跟踪、详细配置以及什么工作与什么不工作。不完整的信息会导致通用而无用的建议。
代码审查:第二双眼睛
AI不能替代人工审查者,但它是一个很好的额外眼睛,特别是捕捉边缘情况。
它擅长发现空指针、未处理的错误和你可能忽略的边界条件。我曾经审查一个遍历map的函数,AI立即标记出map可能为nil并崩溃。我完全忽略了这一点。
但AI不能告诉你代码是否适合你的架构,是否解决了实际的业务问题,或者对未来的维护者是否可读。这些判断需要人的判断。
我的流程:我先自己审查代码,然后使用AI针对棘手部分提出有针对性的问题,比如"这可能遗漏哪些边缘情况?“或"如果外部服务超时会发生什么?“它在不取代我判断的情况下挑战我的假设。
重构:AI真正擅长的领域
重构是AI大放异彩的地方,特别是机械性、重复性任务。
我有两个配置类,大约有120行相同的代码。AI帮助将其提取到基类中,并在30分钟内将两者重构为继承自它,这项工作本来会花费我数小时。
但要小心。在重构期间,AI可能会微妙地改变边缘情况或空值的处理方式。你的测试可能无法捕捉所有内容,因此仔细审查差异,特别是条件逻辑和比较。
此外,并非所有重复都应该删除。有时代码故意相似但需要独立发展。AI无法知道这种上下文。只有你能。
并且始终在真实环境中测试。在本地工作的内容可能由于版本差异、安全策略或网络条件而在暂存或生产环境中失败。
知道何时不使用AI
知道何时不使用AI与知道何时使用它同样重要。
永远不要信任它处理安全关键代码,如身份验证、授权或加密。AI可能建议功能上有效但包含细微漏洞的解决方案。对于错误可能产生法律后果的合规敏感领域也是如此。
更大的风险是过度依赖。如果你使用不理解的AI生成代码,你就是在构建技术债务。你应该始终能够自己编写该代码,即使需要更长时间。如果你不能,学习底层概念或重新思考你的方法。
AI也无法做出具有长期组织影响的决策。它不知道你团队的技能、遗留系统、运营能力或内部政治,这些因素通常超过技术优化。
有时,值得在没有AI的情况下解决问题,只是为了保持你的问题解决能力敏锐。就像跳过电梯走楼梯一样,它能保持你的工程直觉强大。
让它发挥作用
在定期使用AI工具几年后,以下是我学到的。
将其用作思维伙伴,而不是代码生成器。你带来判断和上下文,它带来知识的广度。真正的力量在于结合。
要具体。模糊的问题得到模糊的答案。解释你正在构建什么、你的约束条件和目标。像对话一样对待它:提问、改进、迭代。
始终审查。理解并验证AI的建议。你仍然对投入生产的内容负责。也要知道边界,因为安全、合规和关键逻辑都需要人类专业知识。
如果你刚开始接触这些东西,从小处着手。本周选择一个架构问题。在合并PR之前使用AI审查边缘情况。在简单的重构上尝试它。逐步建立信心。
问题不在于AI对资深工程师是否有用。它显然有用。真正的问题是你是否能有效使用它而不失去使你宝贵的判断力和专业知识。那些正确把握这种平衡的工程师将更快地交付更好的产品,不是因为AI取代了他们,而是因为它放大了他们。