访谈

彼得·麦基,Sonar 开发者关系负责人 – 采访系列

mm

彼得·麦基是 Sonar 的开发者关系负责人,Sonar 是一个解决糟糕代码的万亿美元挑战的平台。Sonar 为开发者和组织提供了系统地实现干净代码的能力,以便所有代码都适合开发和生产。通过应用 Sonar 的“边写边清理”方法,组织可以最小化风险,减少技术债务,并以可预测和可持续的方式从软件中获得更多价值。

最初是什么吸引你进入计算机科学领域?

我从小就对计算机感兴趣,即使我最初追求的是其他职业路径,我也一直被计算机和编程所吸引。有一次,我的父亲在弗吉尼亚州经营一家钢铁公司,他们失去了顾问团队。由于我年轻时就学会了编程,他邀请我为他工作并建立系统。我当时并不完全清楚自己在做什么,但我通过书籍和在职学习,成为了一名自学成才的程序员。这继续激发了我对编程和计算机科学的兴趣。

你如何定义干净的代码,为什么它如此重要?

人们已经说了很多年,软件将吞噬世界,我认为我们现在已经到了这一点——世界是建立在软件之上的,每家公司都是一个软件公司。好的软件的基础是质量代码,因为代码是所有软件的核心,并决定了其行为和性能。这就是为什么干净的代码——一致、有意、适应性强和负责的代码——如此重要。干净的代码易于理解和修改,在运行时运行顺畅,并且不包含任何技术债务,因此它适合其目的。干净的代码是组织应该采用的标准,以确保他们的软件继续成为资产,而不是负担,并且是今天的商业成功的关键驱动力。

干净的代码可以让各个规模和成熟度的团队和组织受益,并增加软件的价值。其中一些具体的好处是:

  • 提高开发技能 — 开发者可以在编码时检测、理解和解决问题,同时也可以学习最佳实践
  • 提高效率和生产力 — 减少持续的返工和长反馈周期,导致生产力提高
  • 降低声誉和业务风险 — 干净的代码可以确保更少的安全风险,通过让团队主动解决问题,防止它们进入生产环境
  • 降低代码级技术债务 — 干净的代码可以逐渐解决代码库的债务,而无需进行大规模的应用程序重构和中断
  • 提高软件开发速度 — 干净的代码标准和流程可以提高 DevOps 速度,促进更快的上市时间

你能讨论一下代码的一致性和结构的重要性,以及一些干净的代码的例子吗?

一致的代码质量是每个经理或技术总监都希望维持的。代码质量的一致性至关重要,因为一致性带来可预测性。代码以统一和惯用的方式编写——所有代码看起来都很相似,并遵循一个规则,即使有多个贡献者在不同的时间工作。代码是格式化的、惯用的和可识别的。当采用一致的编码标准时,开发者变得更加高效,并能够快速、准确地满足交付期望。

你能讨论一下代码处理意外条件的重要性,以及为什么不应该忽视它吗?

开发者在设计和开发过程中总是尝试预测和准备意外情况,但这并不是每次都可以预防的。意外情况可能由于无意的滥用或故意触发的攻击而产生。这些意外情况可能无意中引入安全漏洞,攻击者可以利用这些漏洞。因此,开发者应该努力提高代码的质量和稳定性,并测试意外条件。通过遵循“边写边清理”的方法,团队可以更好地加速新功能的开发,避免不必要的返工成本,并促进人才的成长和留存。干净的代码促进了安全性、可维护性和可靠性,并可以让开发者更有效地预测和处理意外情况,并更快地让软件恢复运行。

你能讨论一下使用生成式 AI 生成代码的好处吗?

将 AI 集成到软件开发生命周期中有其好处,例如使开发者能够更高效地工作。事实上,GitHub 的研究发现,使用 AI 的开发者可以完成任务的速度比没有使用 AI 快 50%。生成式 AI 还可以更快地生成代码,并将更多琐碎的任务(如文档或代码片段生成)从开发者的任务列表中删除,这样他们就可以更好地专注于更高价值、更有回报的工作,以解决更复杂的问题。然而,代码无论如何创建,都必须检查是否符合干净的代码标准,以确保代码是安全的、可靠的和可维护的。

生成代码的一些潜在陷阱和风险是什么?

虽然 AI 可以让开发者腾出时间来处理更高价值的项目并提高生产力,但这并非没有风险。这就是为什么在 AI 时代,开发者的需求不会消失的原因。因为生成式 AI 工具可以快速生成大量代码,因此存在错误的可能性。以下是一些具体的陷阱:

  • 责任: AI 生成的代码降低了对代码创作者的责任,这使得解决问题变得更加困难。
  • 漏洞: 由于它使用了大量的众包信息,因此无法保证生成的代码是安全的或干净的。可能存在 bug 或安全问题,这些问题可能会让企业面临风险。
  • 质量: AI 不会检查质量,只因为它是由 AI 生成的,并不意味着它是高效或高质量的。
  • 无上下文: 消除人为因素自然意味着失去了对问题或项目的上下文。AI 生成的代码必须经过审查,以确保它能够完全完成任务。

当开发者以“边写边清理”的方式对待他们的代码(无论是人工还是 AI 生成的代码)时,他们可以确保代码适合开发和生产,并符合其组织的所需标准。

除了干净的代码之外,还有哪些变量应该被考虑在内以使代码适合生产?

编写符合干净代码原则的开发者可以确信他们的代码适合开发和生产,这意味着代码具备以下特征:

  • 一致: 代码应该是一致的,并遵循一种共同的风格。即使代码由多个不同的开发者在不同的时间处理,它也应该具有相似的外观,并遵循之前建立的模式。
  • 有意: 有意的代码应该像它是带着关注和关心编写的,以传达其目的;它应该只有一个可用的解释。
  • 适应性: 适应性的代码是分段和组织的,以使其更容易管理和看到代码行之间的关系。这使得代码结构化,以便于演化和修改。
  • 负责: 代码及其开发者应该意识到其道德义务,特别是在数据和对社会规范的潜在影响方面。代码最终不应该带来无意中伤害第三方的风险。

你能讨论一下 Sonar 的各种产品,以及它们如何帮助开发者快速、系统地构建负责、安全、高质量的代码吗?

通过我们行业领先的分析工具,Sonar 以全面方式识别编码问题,并在上下文中为开发者提供修复建议,最终使组织能够快速、系统地构建负责、安全、高质量的代码。Sonar 解决方案的核心元素是 SonarLintSonarQube(自托管;开源) 和 SonarCloud(SaaS),支持超过 30 种编程语言、框架和基础设施、11 种 IDE 和 5000 多种编码和语言特定规则。

SonarLint 是一种 IDE 扩展,提供了第一道检查,以便在代码编写时实时发现问题。它可以捕获大量问题,并帮助开发者发现和修复错误,就像代码的拼写检查一样。SonarQube 和 SonarCloud 是 Sonar 的静态分析代码审查工具,持续检查和分析代码库,并与 SonarLint 集成。使用质量门来确定代码是否符合生产的质量、安全性和可靠性标准,SonarQube 和 SonarCloud 检查代码中的 bug、漏洞、安全热点和代码异味。

将我们的解决方案与“边写边清理”的方法结合起来——一种遵循既定标准以保持新添加或编辑的代码干净的方法——开发者和组织可以交付干净的代码,并有机地修复现有的代码,这样他们就可以专注于推动业务价值的新、创新的项目。

Sonar 如何帮助确保代码符合行业标准并满足合规性要求?

Sonar 为开发者提供了即时和上下文化的反馈,突出代码库中的问题,并在开发工作流中提供多年的语言分析器经验。开发者可以获得清晰的解释,说明问题的原因以及如何快速解决它,以及更多的学习资源。我们在整个工作流中都有教育内容,从 IDE 到 CI/CD。例如,Sonar 有特定的 MISRA C++ 2023 规则 可用于 SonarLint,以帮助团队创建最适合最终认证的代码。它提供了编码指导,解释了标记问题的原因以及如何解决它,以确保编写的代码符合 MISRA 标准。

你对 AI 如何在未来转变编码的看法是什么?

我认为 AI 将继续在解决开发者倦怠方面提供巨大的价值。虽然我不认为 AI 会取代开发者的思考和人为因素,但我确实认为,即使在几个月后,我们也会看到一整套新的 GPT 出现——更不用说几年后会是什么样子了。我不认为技术人员或开发者会消失,但他们每天工作的方式肯定会改变。开发者使用 AI 的方式将会像使用 Google 搜索一样简单和常见。关于 AI 的使用,还有很多东西需要探索,但我们必须始终将人为因素放在首位,以检查 AI 的缺点。软件开发中存在变革性的潜力,但我们不能让它在没有任何检查的情况下运行——尤其是在当今的数字企业依赖于支撑它的软件时。

感谢这次精彩的采访,希望了解更多的读者可以访问 Sonar

安托万是一位具有远见的领导者和Unite.AI的联合创始人,他对塑造和推广人工智能和机器人技术的未来充满热情。作为一位连续创业者,他相信人工智能将对社会产生电力的影响一样的颠覆性影响,并经常被发现对颠覆性技术和通用人工智能的潜力大肆赞扬。

作为一位未来学家,他致力于探索这些创新将如何塑造我们的世界。另外,他还是Securities.io的创始人,这是一个专注于投资尖端技术的平台,这些技术正在重新定义未来并重塑整个行业。