开发团队 领导力
by Alex Bachuk
由Alex Bachuk
技术领导力的途径:如何从开发人员转变为团队负责人 (The path to technical leadership: how to go from developer to team leader)
If software development feels like it is only part of your professional purpose, perhaps you should consider becoming a tech lead. A tech lead could mean different things: a team lead (with no direct reports), or a manager. For example, an engineering manager is a person who is responsible for the team and its projects. That means they are also responsible for peoples’ careers, business growth, deliverables, deadlines, culture, code standards, technical debt, and more.
如果软件开发只是您职业目标的一部分,也许您应该考虑成为技术领先者。 技术负责人可能意味着不同的事情:团队负责人(无直接报告)或经理。 例如,工程经理是负责团队及其项目的人员。 这意味着他们还负责人们的职业,业务增长,可交付成果,截止日期,文化,法规标准,技术债务等。
If you’re a developer, it may not be clear how to get from where you are to a technical leadership position. If your goal is to become a manager soon, you will need to ask yourself why you want this role. Becoming a manager may or may not align with your long-term goals.
如果您是开发人员,可能尚不清楚如何从自己的位置升至技术领导职位。 如果您的目标是尽快成为一名经理,则需要问自己为什么要这个角色。 成为一名经理可能会或可能不会符合您的长期目标。
I got into software development because I felt more comfortable working with computers than people. But after a while I found myself helping other developers more and more. I enjoyed leading projects and pushing for better code standards. It was an obvious choice for me personally.
我之所以从事软件开发,是因为与人相比,与计算机合作更自在。 但是一段时间后,我发现自己越来越多地帮助其他开发人员。 我喜欢领导项目并追求更好的代码标准。 就我个人而言,这是一个显而易见的选择。
For many software engineers, growing as an individual contributor (IC) could be a more appropriate path. Many companies provide IC alternatives to management. These alternatives include a staff engineer, distinguished engineer or fellow engineer. These are very senior technical roles, but no one reports to them as they would to a manager.
对于许多软件工程师而言,成长为一个独立贡献者(IC)可能是更合适的途径。 许多公司提供IC替代管理。 这些替代方案包括职员工程师,杰出工程师或资深工程师。 这些是非常高级的技术角色,但是没有人像向经理报告那样向他们报告。
So, do you want to become an engineering manager or another type of team leader? It is important to be honest about what drives you — is it writing code and architecting software? Or, is it helping others to get better results, negotiating deadlines with stakeholders, and convincing your business team that code refactoring is not a waste of time? Your answers to these questions should help you determine which path is more appropriate for your desired outcomes.
那么,您想成为一名工程经理或其他类型的团队负责人吗? 诚实地了解驱动您的因素很重要-是编写代码并设计软件吗? 还是在帮助其他人获得更好的结果,与利益相关者协商最后期限以及说服您的业务团队代码重构不是浪费时间? 您对这些问题的答案应有助于您确定哪种方法更适合您的预期结果。
If you’re still convinced a technical leadership path is right for you, then you have some work ahead of you. Consider working with your manager or a mentor to have them help you in areas where you are less familiar. Here is an outline of ten key areas of focus:
如果您仍然坚信技术领导之路适合您,那么您还需要做一些工作。 考虑与您的经理或导师合作,让他们在您不熟悉的领域为您提供帮助。 以下是十个重点领域的概述:
Stepping up. A true leader can lead without the title or authority. Anyone with a fancy title and enough authority given by the organization chart can give orders. But that’s not what leadership is — it is about what you do.
加紧 。 真正的领导者可以领导而无需职称或权威。 任何拥有花哨头衔和组织结构图赋予足够权限的人都可以下订单。 但这不是领导能力,而是您的工作方式。
Therefore, you should start small. Take on more responsibilities during difficult projects. Help your peers by providing feedback in pull requests. Volunteer to present on the project updates. Propose improvements to your team or product workflow. Mentor a colleague.
因此,您应该从小处着手。 在困难的项目中承担更多的责任。 通过在拉取请求中提供反馈来帮助您的同龄人。 自愿介绍项目更新。 提出对团队或产品工作流程的改进。 指导同事。
There are enough opportunities that people either don’t want to see or don’t have enough expertise or confidence to take on. Determine what your colleagues are struggling with, and then step up and do them.
人们有很多机会不愿看到,或者没有足够的专业知识或信心去承担。 确定您的同事正在苦苦挣扎,然后加紧努力。
Ownership. When taking on responsibilities, be accountable for everything you do or don’t do. A leader takes responsibility and avoids blaming others for mistakes, missing deadlines, or bugs.
所有权 。 承担责任时,应对您做或不做的所有事情负责。 领导者要承担责任,避免将错误,错过最后期限或错误归咎于他人。
Rather than complaining about a bug someone introduced, just help them fix it and explain how to avoid it in the future. Coming up with excuses doesn’t help anyone. Take the time to deliver what you committed to. If necessary, negotiate a better deadline with your manager. Run a project like your own business and actually care about it.
与其抱怨别人引入的错误,不如帮助他们修复它并解释将来如何避免它。 找借口并没有帮助任何人。 花时间交付您所承诺的。 如有必要,请与您的经理协商一个更好的期限。 像您自己的企业一样运行一个项目,并实际关心它。
Recently, one of the tech leads on my team pulled the latest master branch. They saw a big drop in unit test coverage. Rather than complaining, he added missing test coverage. And then presented how to properly check for the coverage and how to write a unit test for complex features. He offered to help if anyone needs it without blaming anyone. The team appreciated that.
最近,我团队的一位技术负责人撤消了最新的master分支。 他们发现单元测试的覆盖率大大下降。 他没有抱怨,而是增加了缺少的测试范围。 然后介绍了如何正确检查覆盖率以及如何编写复杂功能的单元测试。 他愿意帮助任何人,而不会责怪任何人。 团队对此表示赞赏。
Relationships (or politics). Sometimes people misinterpret relationships and call them “politics”. They are the same things. If you don’t want to deal with “politics” then perhaps think again if you want to get into leadership in the first place.
关系 (或政治)。 有时人们会误解关系并称其为“政治”。 他们是一样的东西。 如果您不想与“政治”打交道,那么如果您想首先成为领导者,那就再三考虑。
Building meaningful relationships is one of the responsibilities of engineering managers. Management is making things happen through other people. Start building good relationships with other engineering managers. They are your future peers.
建立有意义的关系是工程经理的职责之一。 管理使事情通过他人来实现。 开始与其他工程经理建立良好的关系。 他们是您未来的同龄人。
There are a few ways to do this, such as presenting at tech talks, doing workshops, and mentoring developers outside of your team. Engineering managers will appreciate the relationships you build through these tasks.
有几种方法可以做到这一点,例如在技术讲座中进行演示,举办研讨会以及在团队之外指导开发人员。 工程经理将欣赏您通过这些任务建立的关系。
Technical expertise. An engineering manager should be an engineer first. They must have a strong software engineering background and hands-on experience. Becoming one of the strongest engineers on the team is a requirement. A manager who can’t code or doesn’t understand the technical details can’t take part in technical discussions. Once you become a manager, you should always keep your skills sharp enough to be competent at higher level architecture.
技术专长 。 工程经理应该首先是工程师。 他们必须具有强大的软件工程背景和动手经验。 必须成为团队中最强大的工程师之一。 不能编写代码或不了解技术细节的经理不能参加技术讨论。 一旦成为经理,就应该始终保持足够的技巧,以胜任更高层次的架构。
Mentorship. Any “really good developer” on the team who’s not a team player is more harmful than helpful. If you’re technically strong, then you should be helping others to get to your level. Pair programming, code reviews, presentations, open source or inner source projects are all great examples of how to get started in mentoring others.
指导 。 团队中任何不是团队成员的“真正好的开发者”,有害无益。 如果您在技术上很强大,那么您应该在帮助其他人达到自己的水平。 结对编程,代码审查,演示,开放源代码或内部源代码项目都是如何开始指导他人的很好的例子。
It is rare for someone to come to you and ask you to mentor them. Yet, by branding yourself “the expert” and proactively doing the things mentioned above, people will naturally start coming to you for advice. By helping others you build meaningful relationships and gain people’s respect. Hopefully, they do the same in return and mentor others as well.
很少有人会来找您指导。 但是,通过将自己称为“专家”并主动做上述事情,人们自然会开始向您寻求建议。 通过帮助他人,您可以建立有意义的关系并赢得人们的尊重。 希望他们做同样的事情作为回报,也可以指导其他人。
Project management. Delivering projects on time is one of the core responsibilities of any leader. If, as a developer, you’re constantly missing deadlines and underestimating tasks, others can’t trust you. You have to be organized and be on top of your tasks.
项目管理 。 按时交付项目是任何领导者的核心职责之一。 如果作为开发人员,您总是错过最后期限并且低估了任务,那么其他人将无法信任您。 您必须井井有条,并处在您的任务之上。
We all know estimating software projects is hard as there is a lot of uncertainty. However, with the right process, it’s not impossible. Constantly communicate the progress and expectations of the project with your manager or stakeholders.
众所周知,由于存在很多不确定性,因此估算软件项目非常困难。 但是,通过正确的过程,这并非没有可能。 与您的经理或利益相关者不断地交流项目的进度和期望。
For example, my team is doing a weekly status report, where the project tech leads have an opportunity to communicate the progress, mention any blockers or raise a major concern of not delivering on time.
例如,我的团队正在做一个每周状态报告,项目技术负责人有机会交流进度,提及任何阻碍因素或引起不按时交付的重大问题。
Communication. Communicating clearly and concisely is a very important characteristic of any leader. If you can’t explain clearly what you want from your team, then you have failed as a leader before any work even begins.
沟通 。 清晰,简洁地沟通是任何领导者的重要特征。 如果您不能清楚地说明团队的要求,那么您在成为领导者之前就已经失败了,甚至还没有开始任何工作。
Communication comes in many forms, including verbal, written and even body language. Always work on improving all of your communication skills.
交流有多种形式,包括口头,书面甚至肢体语言。 始终努力提高所有沟通技巧。
My team missed a few deadlines because I failed to communicate the requirements clearly and on-time. There were few instances where the lack of communication created confusion on the team who was supposed to do what. I learned that relying on project managers or business stakeholders to explain the project details isn’t working. An engineering manager has to understand the project and then explain it and sell it to the team. And motivate them to want to work on it.
我的团队错过了一些截止日期,因为我未能及时清晰地传达需求。 在极少数情况下,缺乏沟通会给应该做什么的团队造成混乱。 我了解到,依靠项目经理或业务利益相关者来解释项目详细信息是行不通的。 工程经理必须了解该项目,然后对其进行解释并出售给团队。 并激励他们去努力。
Managing up. Manage your manager (and sometimes their manager). This means constantly communicating with them and managing expectations. Managers rarely like surprises, good or bad. Establish trusting relationships with your manager. Be the go-to person for important and high profile projects, and actually get them done on time and on budget. Then more projects will follow and you can repeat the process.
管理起来 。 管理您的经理(有时是他们的经理)。 这意味着要与他们不断沟通并管理期望。 经理很少喜欢惊喜,无论好坏。 与您的经理建立信任关系。 成为重要和备受瞩目的项目的专家,并按时,按预算完成它们。 随后将有更多项目,您可以重复此过程。
Conflict and crises. Production issues happen, no matter how many unit or integration tests you have. Yes, you want to minimize the number of bugs your projects have. What matters more is how you handle production issues. A person who starts panicking under pressure is immediately disqualified as a leader in the eyes of others. The team and other managers want to see a calm person who has everything under control, even in the most stressful situations.
冲突与危机 。 无论您有多少单元测试或集成测试,都会发生生产问题。 是的,您希望最大程度地减少项目中的错误。 更重要的是您如何处理生产问题。 在他人的压力下开始恐慌的人立即被取消领导资格。 团队和其他经理希望看到一个冷静的人,即使在最紧张的情况下,也可以控制一切。
A tech lead I used to work with was always calm. There was no conflict or pressure that could make him snap. At least nobody saw him stressed out. When it came to handling a production issue at 3 am, he didn’t disappoint. The issue was fixed in minutes and he showed up to work as if nothing happened.
我曾经与之合作的技术主管总是很冷静。 没有任何冲突或压力可以使他动弹不得。 至少没有人看到他压力很大。 当谈到凌晨3点处理生产问题时,他没有感到失望。 这个问题在几分钟之内就解决了,他似乎没事就上班了。
Another tech lead got so stressed out with the deadline he called in sick on the day we were supposed to launch the feature. He was so anxious, it made everyone else around him uncomfortable to work with him.
另一位技术负责人在我们应该发布该功能的那天,他打电话请病假的截止日期令他非常压力。 他太着急了,这使周围的其他人都不愿意与他一起工作。
Even though these are 2 complete opposites, you can guess which one was more successful as a tech lead.
即使这是两个完全相反的方面,您也可以猜测哪一个在技术领先方面更成功。
Vision. For everything they are responsible for, a leader should understand “why”. They are also responsible for ensuring everyone else understands “why” they are working on a project. A leader must explain (often many times) why the project is happening, why the specific people are working on it and how this project fits into the “big picture”. A team has to believe in what they do, only then can they can be effective.
愿景 。 对于他们负责的所有事情,领导者都应该理解“为什么”。 他们还负责确保其他所有人都知道他们为什么从事项目。 领导者必须(经常多次)解释为什么要进行该项目,为什么要由特定人员进行该项目以及该项目如何适应“大局”。 团队必须相信自己的工作,然后他们才能有效。
引领前进之路,从今天开始 (Lead the Way Forward, Starting Today)
Leadership is not limited to one or two people, so don’t wait for permission, step up today. Be an expert in your field and start helping people when they are stuck. Work on your communication skills, even something minor like technical documentation. Build great professional relationships with your current and potential future peers. Make sure you manage your time wisely and be on top of your projects’ deadlines. And don’t forget that leadership is about people, so genuinely help people grow and do their best job.
领导力不仅限于一两个人,所以不要等待许可,今天就加紧。 成为您所在领域的专家,并在遇到困难时开始帮助人们。 增强沟通技巧,甚至包括技术文档等次要技巧。 与您当前和潜在的未来同伴建立良好的专业关系。 确保您明智地管理时间,并且在项目的最后期限之前。 并且不要忘记领导力是关于人的,因此可以真正地帮助人们成长并做好自己的工作。
You can find me on Twitter https://twitter.com/netxm if you have questions or just want to say “hi”.
如果您有疑问或只想说“嗨”,可以在Twitter https://twitter.com/netxm上找到我。
开发团队 领导力