作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
Giorgi Dalakishvili的头像

Giorgi Dalakishvili

Giorgi曾致力于从手机到主机平台的各种应用程序. 他还在GitHub上维护着几个开源项目.

专业知识

以前在

佐治亚银行
分享

作为一名软件工程师, 你的职责通常定义得很清楚:任务分配给了你, 你的工作就是按时有效地执行它们.

然而,在工程经理角色中,职责通常没有明确定义 . Management isn’t binary; there are no straightforward answers to certain questions and problems. 作为一名管理者,你有多成功取决于你领导员工的能力, 管理你的产品, 管理你的技术.

以人为本

在工程经理的角色中,你的新优先级是你的团队. 所以你如何确保你有一个伟大的团队?

建立团队,建立信任

第一步是确保你 雇佣合适的人 对于你的团队,如果你还没有一个合适的团队.

糟糕的招聘不仅会浪费自己的时间,也会浪费其他团队成员的时间, 谁将需要收拾残局. 这将使你团队的其他成员士气低落. 即使一个人是杰出的程序员, 如果他们不能很好地适应团队的文化,他们仍然是一个糟糕的选择.

确保你问的不仅仅是技术问题,还有关于在团队中工作或担任领导角色的开放式问题. 例如,问应聘者:

  • 描述他们最近要解决的一个问题
  • 他们是如何实现解决方案的
  • 他们考虑了哪些替代方法
  • 谈谈他们在生产中遇到的一个关键问题, 他们对此有何反应, 以及他们如何防止未来发生同样的问题

一旦你有了一个团队,花时间赢得团队的尊重并建立信任. 为了有效地领导一个团队,你需要与你的团队成员建立一种健康的关系. 花点时间了解他们的职业目标以及对他们来说什么是重要的.

一对一的会议是与每个团队成员建立联系并更好地了解他们的重要工具. 理想的一对一会议频率是多少? 那。 将取决于您的团队成员的具体需求但是每个月至少和他们见几次面是个好主意.

然而, 如果你和你的团队合作密切,或者你有一个很大的团队, 你可以每月开一次会.

工程经理如何授权和改进团队

你的工作很大一部分取决于确定每个成员的优点和缺点. 通过将他们与高级工程师配对并执行频繁的代码审查,帮助他们解决他们的弱点, 关注他们的优势. 毕竟,是我们的优势激励着我们,塑造着我们喜欢做的事情.

根据每个工程师的能力和特点分配任务,以便从每个人身上提取出最好的东西,创建一个伟大的团队. 在这方面,自动化可以大有作为. 设置 持续集成 识别坏的或次优的代码和经常提交这些代码的人.

你的团队成员会不断寻求学习, 改善, 并在对他们或团队重要的领域中成长. 去年对每个团队成员都有意义的角色和责任可能不再适合今年. 确保每个团队成员不断感受到挑战并不断进步:

  • 密切关注他们的个人成长, 投资于他们的发展, 并帮助他们实现自己的抱负.
  • 与团队成员单独会面,制定个人发展计划,并授权他们制定自己的职业战略.
  • 试着为自我发展分配额外的时间, 允许团队成员定期转换角色, 并组织内部研讨会或培训课程.

除了确保每个人的专业成长, 工程经理的责任是保护他们的团队. 你应该让你的团队在不害怕失败的情况下做出决定. 如果事情失败了,承担责任并从错误中吸取教训.

这将在你的团队尝试新方法和培养成长型思维时培养他们的胆量. 也就是说, 如果你提供了适当的反馈,并及时采取行动,引导团队朝着正确的方向前进,那么错误就不会再发生了.

产品经理和工程经理

工程经理角色的第二个重要方面是产品. 你必须形成a 与产品经理关系密切 调整期望,利用技术和团队的技能来交付一个伟大的产品.

以下是你应该追求的6项工程经理职责:

确保项目的优先级

你们团队6到12个月的目标是什么? 谁是你的听众?? 你的客户对你的产品有什么期望? 你的团队可能知道他们接下来几周要做什么, 但了解整个产品及其发展方向至关重要.

参与产品开发决策

作为工程经理, 你将会和不同的团队一起工作,在产品方向和产品更新方面比你作为一个单独的贡献者要投入更多. 你不必同意关于产品的每一个决定, 但你必须相信你的产品,并且想让它变得更好. 如果你不同意产品经理的决定,你可以质疑他们,但要记住,产品经理拥有最终决定权. 尊重他们,支持他们的决定.

定义并推动技术策略和开发方法

而产品经理的工作是定义产品策略和概念, 你的角色是定义产品的架构远景和技术设计. 您还负责定义开发方法并确保团队采用它. 记住:产品经理可能拥有产品, 但是你和你的团队拥有产品的实现.

在某些情况下,可能通过少量的工程工作来实现有用的特性. 例如, 检查升级到产品使用的框架的新版本是否可以帮助您更快或更有效地实现某些特定功能. 对产品有一个良好的概述可以帮助您和您的团队识别此类案例,并向产品经理提出建议.

平衡创造和偿还技术债务,以及开发新功能

当你构建最小可行产品时, 上市时间是最重要的,所以你可能会积累一些技术债务. 随着产品的发展, 重点转移到添加新功能和改进产品,同时偿还技术债务. 没有解决你最初所做的权衡, 添加新功能将花费更多的时间和成本. 花点时间了解和记录你所做的妥协,在解决债务和添加新功能之间找到平衡.

使用技术和自动化来帮助管理技术债务

使用源代码静态分析来识别具有最高可维护性指数的代码,并对代码进行优先级重构. 这种方式, 开发新功能变得更加容易,产品的性能也会得到提高.

确保产品执行在正轨上

您应该了解团队工作的当前状态. 如果你的团队落后于计划,找出明显的障碍并消除它们. 例如, 如果团队经常陷入技术问题, 建立频繁的结对编程会议,以提高团队成员的知识共享. 如果团队花费大量时间将代码部署到服务器, 自动化流程以节省时间并减少出错的可能性. 尽量减少中断,并为如何承担新工作和处理错误报告创建清晰的流程.

技术与授权

即使你还是个工程师, 作为管理者, 开发软件解决方案不再是您的主要功能. 你的团队中有高级工程师,他们负责大多数技术解决方案. Generals don’t fight wars with rifles; managers shouldn’t have to micromanage every line of code.

然而, 您应该使用您的知识和经验来确保高级工程师做出的决定符合产品的技术路线图和方向. 将技术决策委托给高级工程师,但要提出正确的问题,以确保产品具有可扩展性, 安全, 和可靠的.

例如,挑战他们的选择 “如果我们的用户是现在的20倍呢? 这是可持续的吗??” or “这项技术在两三年内还会得到支持吗?”

您可以并且应该根据您的知识和专业领域提出替代解决方案和框架, 但不要强迫或施压你的团队接受它们. 除了技术建议外, 您还可以提出与开发过程和方法相关的建议.

此外,确保监控产品的关键指标. 业务和技术指标同样重要. 与同事合作 DevOps 创建用于监视系统的警报,并让团队了解操作问题. 最后, 当事件发生时,制定解决问题的方法,以确保事件不再发生.

最后但并非最不重要的是,跟上最新的技术和趋势. 你拥有的选择越多,你知道的就越多, 您将拥有更多的解决方案和框架. 指定一些时间来阅读文章, 进行代码审查, 和你的团队一起参与技术讨论.

你对技术问题了解得越多,你的团队就越尊重你. 保持对新兴技术的熟悉——并鼓励你的团队也这样做——将有助于你创造一种好奇的氛围,并激励你的团队寻求解决复杂技术问题的新的和创新的方法.

了解基本知识

  • 成为一名工程经理需要什么?

    经验. 大多数工程经理都是软件工程师,在相关领域有丰富的经验和良好的记录.

  • 工程经理写代码吗?

    工程经理通常不写代码,尽管这并非闻所未闻. 在某些情况下,他们可能会选择捐款. 此外,他们还可以在代码审查中发挥作用.

  • 工程经理是做什么的?

    工程经理负责软件开发中最重要的方面. 他们选择参与项目的人员和团队将使用的技术. 他们监督这个项目从开始到完成, 与产品经理和其他利益相关者协调他们的工作.

  • 怎样才能成为一名优秀的工程经理?

    一个好的工程经理必须对他们的团队所使用的技术有很好的理解. 他们还需要了解团队的方方面面. 此外,他们必须能够与其他领导和经理沟通和协调.

聘请Toptal这方面的专家.
现在雇佣
Giorgi Dalakishvili的头像
Giorgi Dalakishvili

位于 第比利斯,格鲁吉亚

成员自 2016年4月4日

作者简介

Giorgi曾致力于从手机到主机平台的各种应用程序. 他还在GitHub上维护着几个开源项目.

Toptal作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.

专业知识

以前在

佐治亚银行

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

Toptal开发者

加入总冠军® 社区.