是什么造就了高级工程师?编写软件还是构建系统?

初级工程师关心编写软件,他们以代码质量、采用最佳实践,采用前沿技术为价值。他们投入大量时间学习新技术。对他们来说,最终目标是创建优雅、高性能、可维护的软件。

高级工程师关心的是构建系统。 对他们来说,创建软件只是其中一个步骤。 首先,他们会质疑是否需要构建软件。他们会问将要解决什么问题,为什么解决这些问题很重要。他们询问谁将使用该软件以及使用的规模。他们考虑软件将在哪里运行,以及他们将如何监控它是否正常工作。 他们还决定如何衡量软件是否真正解决了它应该解决的问题。

构建系统比构建软件要难得多。 甚至可能会使人不自在。作为一名工程师,呆在原地,并专注于完善这段漂亮的代码是非常诱人的。人们很容易认为确定需求是产品经理的工作,而部署软件应该由运营团队负责。但是,通过参与构建系统的这些方面,您会带来很多价值。您是最了解您的软件的人,也是您最了解如何运行它、如何监控它、扩展它有多容易等等。更重要的是,您的分析思维和解决问题的能力,使您有洞察力关于产品要求非常有价值。

技术专长当然非常重要。优雅、高性能、可维护的软件更易于运行,中断次数更少,更易于扩展和推理。然而,它可能解决了一个错误的商业问题。或者客户不喜欢它是因为性能问题,而您甚至不知道,因为您没有监控它。

让我们更深入地了解构建系统的一部分事项(非详尽)列表:

  • 定义需求-与产品经理合作,了解他们想要解决的问题;也许您会有更好的办法,更少的投入;
  • 定义NFR(non-functional requirements)-与PM讨论非功能需求-系统应处理多少用户,性能、吞吐量和延迟的要求是什么?是否有任何安全或法规遵从性考虑?我们需要审计吗?期望的可用性是什么?
  • 规划迭代-与您的团队一起提出实施计划;确保您定义了小的、可演示的里程碑,以便您能够尽快开始交付价值;与PM(Product Manager 产品经理)就里程碑达成一致。
  • 确定依赖关系-确保您确定了团队之外的所有依赖关系,并与EM(Engagement Manager 项目经理)或团队直接合作,为他们获取一些ETA(预计到达时间)。相应地调整里程碑。
  • 测试-根据公司的运营方式,与团队或QE(Quality Engineer 质量工程师)团队一起决定测试策略。同意推出所需的质量阈值(例如,没有未解决的主要错误或测试覆盖率超过X%)。
  • 部署-与您的团队一起决定如何部署系统。您需要一些新的基础设施吗?还是可以重用现有的基础设施?如果您需要很多,费用是多少?
  • 可观察性-决定如何监控系统的运行状况,并建立解决生产问题的流程(例如随叫随到的团队)。使用第三方解决方案设置监控器和仪表板。
  • 推广沟通-一旦您与团队和项目经理商定了推广日期,请确保所有利益相关者都知道。检查是否需要任何文档更改。
  • 衡量成功-决定衡量项目是否成功的指标。有人在使用新系统吗?用户是否能够完成他们的任务?

我见过很多工程师,他们坚信,提升职业生涯的唯一途径是投资于他们的技术技能。虽然这很重要,但对公司来说唯一重要的是你对业务的影响有多大。将重点从软件转移到系统将使您在增加软件方面处于更好的位置。