成为一个高性能的软件工程师

2021-04-05 07:57:58

在快速增长的组织中成为一名高性能工程师需要什么?卓越的工作动机可能听起来很明显:您的表现和影响越好,奖励,个人成长和履行感得多。但是知道如何获得另一件事。

由于软件工程师在风险中转向工程经理,我可以提供多方面的透视,即哪些行为和行为最有益。在我看来,工程师的日常工作 - 将代码合并到项目的存储库之后,按照团队的编码标准,调试问题和准时交付 - 是所有软件工程师的预期酒吧。要脱颖而出并创造重大影响需要更多。我相信,在他们的核心,这样的工程师是旨在卓越的人,并为自己的个人工作产生影响。

在这个博客文章中,我将突出重要的是,不太常见的建议和指导方针,应该产生高性能,使您能够持续不断的个人成长,良好的反馈,也许甚至提升或促销。

在任何工程解决方案决定并进入开发阶段之前,有规划会议应提供业务背景和要求。在这些讨论中,您应该是有订婚和积极的参与者。为了掌握您的团队的域名,您必须提出问题,完善要求,并清楚地了解您计划建立的内容以及如何使团队使命提升。

例如,危险,例如,我们的目标是建立一个产品或使命的团队,我们的开发团队与专用产品经理密切合作。一旦我们计划了一个大功能,仍然深入了解我们所需的如何以及在我们的代码库更改的情况下,工程师坚持要澄清有关预期有多少用户达到此阶段的澄清。我们的产品经理为我们提供了确切的数字,我们能够表现出努力不值得的价值,让我们更好地在其他地方分配资源。

计划会议只是一个会议。我会鼓励您找到兴趣并对任何会议充满热情。充分利用花费的时间。出席。准备好会议,并确保您了解会议的目标以及事先收集的知识。随着时间的推移,你会看到团队开始依靠你的见解和意见 - 这是影响。

与您的经理和团队相信的独立收益,并打开机会让您在更大的功能方面取得优势。独立工程师应该能够平衡个别工作并借助同事的帮助。但是什么是正确的平衡?嗯,我认为这意味着大多数时候可以自己提供价值 - 完成任务或功能结束到结束。当你不能说,你应该负责足以要求你需要的帮助。

拍摄特征E2E(端到端)的基本准则是首先确保了解所有要求,业务环境以及利益相关者所在的所有要求。之后,在潜入编码之前,需要一些时间来规划该功能的建成,将涉及哪个代码repos,如何将部分汇集在一起​​,以及如何验证它的工作原理。

随着您的任务正在进行中,偶尔会允许您从程序中阻止您的问题,例如“代码不编译”或“S3存储桶的权限”。如果几次尝试自己解决它,请不要完成工作,是时候寻求帮助。

3.如果需要,通知利益相关者(如果需要延迟或无计划的额外工作)

由于只有在您自己努力解决自己并遵循上面的说明之后,您只能要求帮助,您将实现:

越来越低的转化('ping pong') - 希望能够更快地导致解决方案更快

成为一个真正的特征所有者。在完成任务时,您应该不断检查裂缝之间的任何内容。如果任务的票证缺少一些细节,请确保写入缺失的信息。在发现重要的范围零件并确保它们被积压时创建故事票。例如,如果您发现正在调整的API正在接收应待遇的请求 - 它现在可能是一个较低的优先级,但在某些时候处理仍然很重要。不要跳过测试功能的每种情况。无论是手动还是自动 - 做。当您将任务移动完成后,您应该100%确定它已符合其完成的所有定义。

以下此建议将获得您的经理,团队和其他利益相关者的信任。他们会自信你在最重要的事情上。

童子军有一个说法:“总是离开露营地清洁比你找到它。”这意味着当我们对代码区域进行更改时,我们将其留在更好的状态,而不是我们发现它(即使我们不是留下所有这些神奇数字的人)。当我决定这个部分“微重构者”时,我明确没有参考进行正规的代码重构,这也是一个很好的习惯,但应该提前计划。当涉及小或微重构时,应不断执行,以便不延迟我们的特征交付时间。提取类或方法以使代码更加可维护,删除冗余注释或未使用的代码,修复拼写错误等换句话说,对齐您触摸高编码标准的代码区域。它不花费太多时间,最终你会自动做到这一点。

作为一个经理,当我看到花时间做的工程师时,我知道他们关心我们的代码基础,并积极尝试改善我们现在的内容。一个更好的代码基础是任何团队应该瞄准的东西,但它不会发生所有突然的码级 - 小但一致的一步的改进是一种更好的方法。

稳定和工作的生产应该始终是开发团队的首要任务。作为团队中的工程师,您应该融入检查您的警报和监控日常生活中的警报和监控仪表板的习惯。虽然您希望在推送中作为警报触发关键问题,但可能存在警报的问题,只能通过监控转到Slack频道的仪表板或低紧急警报来注意到。这种心态会在产生重大影响之前帮助捕获错误和问题。此外,当您团队发生事件时,主动并加入调查和解决努力。

您可以确定,您的团队和管理层欣赏您的努力,以防止和解决此类事件。

一旦这种心态生效,您将更加了解指标对监视的重要性。

针对基于低紧急误差的警报,需要转换为比率的基于度量的警报作为高紧急警报(通常需要一个错误无需担心但是1000错误时)

在软件开发领域,技术和最佳实践永远不会停止不断发展。为了保持相关和Excel,一位高性能的工程师应始终热衷于学习和扩大他或她的知识。占用额外的时间(即使在“工作时间”之外)。在日常工作,会议和走廊聊天期间找机会,以创建一个学习科目的议案列表。例如,如果您的团队开始使用新数据库,请阅读其优势与缺点,常见用例,甚至检查编码语言中的所有可用客户端。当您不熟悉会议中提出的东西时,请务必在您自己的时间内跟进它(当谷歌删除,谷歌它并在下次准备时)。这也可以应用于您缺少的信息,了解您正在研究的产品 - 您应该了解其所有方面并成为您自己域名的主人。

一旦找到一个学习主题,就是熟练和学习有效的好方法是使用70-20-10学习模型。简而言之,您为每个学习平台分配了多少时间:

您仍然需要提前思考并决定您将如何实现以上的每一个。例如,如果您想提高您的建筑工程技能:

在职业培训 - 您可以要求提出需要此类规划的重要功能

同伴学习 - 询问软件架构师或其他高级工程师审查您的计划

可用和易于协助您的队友将使您的团队能够确信他们有人会支持他们,创造协作环境,最终使团队更快地运行。作为经理,我的目标是使团队的总和大于其部分的总和。因此,我欣赏和重视团队球员的工程师。这是旧的思考,即团队经理是提出问题的唯一联系点 - 是团队可以依赖的人。

在他们被禁止或要求代码审查时,将上下文切换为帮助您的队友应该是您不断执行的事情。当我正在编码时,我将重点是一个小时和半个半小时的编码会话我总是检查是否有人需要一些东西。当有人在等待代码审查时,注意力将加速他们的交货时间。如果有人面临技术问题,另一个新鲜的眼睛可以帮助找到不同角度的解决方案。

我的意思是,真的听。您的管理人员可能会说明对他们或组织的重要事项(如果它不清楚 - 请求)。您应该始终尝试并找机会为正在讨论的焦点领域做出贡献。可能是您的经理真正试图强调确保自动化测试所涵盖的每个功能(自从您最近有太多的生产事件),或者组织正在增长和招聘成为最高优先级(自从您的公司希望将您的头号倍增。

因此,请仔细检查您的功能测试。志愿者帮助招聘 - 也许需要对您可以写的新面试问题,或者您可以使用新的访谈员或用与您的职业页面的链接写一个博客文章(是的,我们正在招聘!)。

您的经理人说出他们所说的话 - 将整个开发团队与更大的画面对齐。通过促进您的经理的原因,您会产生重大影响(有助于它的重要性)并在途中获得积极的信用和赞赏。

通过一个积极的心态,我的意思是尽量大多看到人们的善良,不要是愤世嫉俗的,并使用较少的自我工作。它允许您更好地与同事相处,更加平衡。

由于每个人都喜欢与他们愉快和患者的人一起工作,为这些人提供新的机会更容易。考虑一下:如果有人会要求您在涉及新的编码语言的新功能上工作,您将回复负面评论(“JavaScript ???我宁愿手动解析JSONS”),您可能不仅可以想念这个和未来的机会,但也损害了你与那个人的关系(他可能真的喜欢Javascript)。

所以这就是可以做的态度进来的地方。当呈现出舒适区的请求或任务时,尝试对此开放。这可能是一项任务,涉及您不熟悉的技术或只是提出向大型论坛提出某些东西的请求。这是增长的方式,但也显示开放性 - 它将允许您的经理在未来为您提供更多机会。

您应该努力从您的经理和同行中持续反馈。在与同事完成编码配对会话时,请在与您的经理一对一的一对一询问。

这是提高和接受验证的最佳方式,即你的自我认知和其他人看到你的对齐方式。

我还建议编写每年的自我反馈。 它会帮助您诚实地意识到您在哪里看到自己以及过去一年中最大的成就。