近日,一位拥有超过15年软件开发经验的软件开发人员在HackerNews上提出了一个问题:如何成为一名优秀的技术负责人?这个问题一经提出,不到一天就收到了160多条回复。网友们对技术负责人应具备的素质和管理能力提出了自己的看法和建议,现归纳如下。如果你没有从帮助团队中获得满足感,那么就不要做一个忙于开会、计划、打扰、团队沟通、文档等工作的***技术***,永远无法达到一个人所能达到的目的单独工作时个人生产力。技术领导者的工作不再是让自己成为最好的编码员,而是让尽可能多的人成为可能。工作分配也以有利于团队和个人成长的方式进行。负责为团队成员扫清障碍,让他们的工作走上正轨。技术创新的满足感来自新人的培养和成长。将自己视为其他开发人员的导师即使您已经知道答案,有时您也需要让团队自己决定。很多时候,没有一个正确的答案。技术负责人的工作不是选择正确的答案,而是确保团队不会选择错误的答案。允许团队作为一个整体做出自己的决定,可以保持士气高涨,并赋予每个成员一种自豪感和主人翁感。团队信任并依赖您在技术问题上的建议/观点。作为技术负责人,必须了解团队开发的应用,了解应用涉及的领域,了解功能背后的技术,写出详细的技术文档。有时,技术负责人也是高级工程师。这个时候,他能为球队做的最有价值的事情,就是在始末帮助队员。有时,技术负责人也是架构师。在解释系统或代码的行为时,他需要能够快速改变高度。与开发人员一起调试问题时,他需要能够深入了解技术细节;在向CEO解释计划或成本估算时,他需要能够在更高层次上谈论系统。准备好回答团队成员的问题,但如果您有问题要问他们,请先问他们。这很难做到,因为作为一名技术***,你有很多工作要做。但是,为了留出更多时间来回答问题并为他人提供支持,您可以将复杂的任务委派给团队中更有经验的成员。很多时候,团队成员的问题可能是在闲聊或闲聊中提出的。一个更好的方法是引入可以异步使用的生产力工具,例如Trello卡或GitHub问题跟踪器,用于不太紧急的问题。但是,无论采用何种沟通机制,关键是要获得其他团队成员的支持,他们在工作无法完成或无法完成时愿意打扰您。为了了解团队成员,技术负责人应该主动定期与团队成员进行一对一的交流。每个开发者都是不同的,这种不同是可以通过交流学习的。减少具体的编码工作,但仍然编码即使你不做很多具体的编码工作,你仍然需要监控和接受所有的拉取请求,并利用这个过程来帮助初级开发人员修改代码。这是必须的,如果你不编码,那么开发人员会质疑你的判断并且不会轻易接受你的建议。但是,作为技术领导者,您的首要任务是确保团队成员的生产力,而不是您自己的生产力。你对整个团队的输出负责,如果这意味着零编码,那就不要编码。同时,这也意味着帮助陷入困境的团队成员,哪怕这意味着停止他们自己的工作。保持谦虚并相信您的团队拥有超越您的能力和理解力。承认有人比你更了解某个主题或组件。做一个优秀的***,不需要什么都懂比别人多。如果团队成员将您视为权威,他们会害怕自己做决定。在这种情况下,你就成了障碍。诚实并在知道答案时大声说出来,即使这意味着有人必须重做很多工作。不知道就得说出来,不能假装听懂。当你得到现在的职位,你就是合格的,你永远不需要向别人证明你的能力。除了上述讨论较多的观点外,还有一些其他的观点,比如把愉快的任务分配给别人,把烦人的任务留给自己;公开表扬和私下批评;成员清楚您对他们的期望;及时反馈和表扬;与非技术经理的稳固关系;和更多。还有一些技术领导应该避免的行为,比如,不要抱怨代码库有多糟糕;不要说“我们要重写XYZ”,技术债要逐步解决;不要轻易提议使用可选的平台和框架。但需要注意的是,不同的组织有不同的企业文化,对技术和技术领导者的看法和期望也不同,技术领导者应该以此为出发点来考虑问题。
