我目前是一名专业程序员。我想扩展自己的技能,但我也想使自己的职业跃升为团队的开发负责人。我知道有很多东西要学习(这不会是一时的事情),但是我认为我很聪明,可以做到这一点,并且我可以应对挑战。
我敢肯定,这里的许多成员可能自己都经历过,现在已经成为成功的开发主管。不幸的是,即使我知道我想提高一些个人领域(知识的深度,知识的广度,技能集等),我也不确定如何开始这样的事情。
作为一名程序员,我应该采取哪些步骤来实现这一目标?我应该优先考虑什么?
我目前是一名专业程序员。我想扩展自己的技能,但我也想使自己的职业跃升为团队的开发负责人。我知道有很多东西要学习(这不会是一时的事情),但是我认为我很聪明,可以做到这一点,并且我可以应对挑战。
我敢肯定,这里的许多成员可能自己都经历过,现在已经成为成功的开发主管。不幸的是,即使我知道我想提高一些个人领域(知识的深度,知识的广度,技能集等),我也不确定如何开始这样的事情。
作为一名程序员,我应该采取哪些步骤来实现这一目标?我应该优先考虑什么?
Answers:
要成为技术领先者,必须具备以下条件
能够指导所有级别的工作人员,从单身缺勤三个月的人到已经编程三十年的人
对您的开发领域有很好的了解。这包括:语言,框架,实用程序,开发环境
对问题管理系统,项目管理技能和版本控制有深入的了解
成为必备的杀手
知道如何进行及时的代码审查,寻找的内容以及如何最大程度地减少持有代码的时间以及进行更改的时间
与您的开发领域的最新动态保持同步。例如,如果您没有从.NET 2中学习新的框架或技术,那么今天的工作就会倒退。
如何编写单元测试和模拟,以及如何使开发人员也编写它们
了解什么是设计模式以及何时使用它们
了解什么是代码气味以及如何缓解它们
持续集成
计划项目和发布的能力
根据您的组织以及是否有架构师,您可能需要了解以下内容:
能够将项目组成组件并将其分解为功能部分
全面了解安全性,包括正确的密码处理方法,分离系统,保护数据等
企业概念,例如服务总线,消息队列,BizTalk
企业设计模式
服务架构/ RPC,例如SOAP和REST
ORM框架,例如Hibernate,Entity Framework,Doctrine
持续部署
云端
推荐用于项目的正确技术的能力。如果您的团队/商店仅使用.NET,PHP或Java,则可能会很难。
以易于适应未来增强的方式设计应用程序
如果您要成为一名开发经理,那么您还需要:
最后,还有其他一些建议:
在您的开发领域之外学习
学会说NO当事情是不可能的或者超出范围或冲突限制,如预算或时间。
管理团队是一个具有挑战性的角色。您需要成为能够回答任何问题的人,您需要知道使用正确的技术(除非您有架构师),您必须具有人员管理技能并且与人友好由您的员工(假设为管理职位)。除此之外,您还需要具有准确的评估技能以确保项目的获利能力,并且需要能够动手操作任何人的代码以查明问题并快速解决。您需要避免自己做任何事情,并营造一个无毒的团队环境。您需要不断地掌握技术,并学习最新的发展和技术以及更广泛的行业趋势。
您还应该真正了解至少一个数据库平台,并且非常了解它。知道如何进行复制,存储过程,查询优化器如何工作,如何正确设计模式以及要索引的字段。
无论职位高低,任何高级职位都要求您具有有效沟通的能力。如果您不是自信的演讲者,请考虑做类似Toast Masters(公开演讲)的事情。了解如何进行眼神接触。自信点。穿着适当的位置。以身作则。
根据我的经验,Lead很少与动手编程有关,而与管理有关。为此,我建议以下
在设计和建筑追求和发展上投入更多时间。作为负责人,您的职能将围绕为团队提供技术指导和指导。您将肩负更多的任务,以了解整体的组合方式,而不必了解管道的工作原理。不要误会我的意思,您需要扎实的技术才能成为有效和知识渊博的领导者,但是,在此过程中,对正在发生的事情以及它将如何工作的更高层次的了解将变得至关重要。您应该了解更多最佳实践设计模式和有效的编码实践
学习多任务和管理时间。如果您现在擅长,那就太好了:开发更多。作为开发人员,您只需要担心当前的任务/项目。作为领导,您将拥有
准备有效地委派代表。该IMO将是最难调整的部分。作为开发人员,您习惯于动手做事。做所有的管道和研究。这将不得不停止或减少。演出来了,你把它分发给团队。您将获得一部分动作,而不仅仅是像以前那样多。而且,您会咬住舌头以抵制诱惑,诱使自己采取更多行动。
沿着更专业的路线,请考虑一些培训,这些培训不仅会提高您的能力,而且会改变您的看法。说软件项目管理的速成课程不会受到伤害。精益六西格码也是一个很好的培训计划(我可以证明它的功效),它将帮助您从更逻辑的角度看问题解决。更不用说从领导职位开始,您已经准备好担任更多高级职位,这将需要较少的动手技术技能和更多的管理能力。
磨练您的沟通和人际交往能力。您将成为外界团队的主要切入点。您的经理或其他主管将首先与您联系。您组织中的其他部门/团队将首先与您联系有关团队的任何事宜。您将要管理所有最困难和不可预测的资源:人员。您需要长大的皮肤,学会吞下大量的骄傲,并对团队的失败负责。
山姆没有说的话也很重要:
如何规范内容并让其他开发人员工作。您的工作之一是让其他开发人员100%被利用。编写明确的规范非常重要。
如何构建其他所有人都应该遵循的框架/原型应用程序
如何培养良好的团队士气
如何参加,主持和领导会议,如何记录行动项目
如何估算,编写项目计划并更新项目计划
如何展望未来-如果要在3个月内发生问题,则希望尽早解决。如果开发人员要放假7周,则需要立即开始计划。
如何与管理层对话。他们对我们说另一种语言。给他们解决方案,而不是问题。告诉他们技术资料对他们意味着什么。
尽管山姆已经说了这一点,但最重要的事情之一就是学习如何拒绝。你会做这样的很多。另一种看待它的方法是说yes,但是“只有在我们可以获得更多金钱/时间/资源的情况下”-或“这是第二个版本” :)
所有这些都是书和好的答案。请允许我以现实打你。
信不信由你,您将花费大量时间来向经理们解释
为此,您需要使用非技术术语向非技术人员解释技术知识的技能。这是非常困难的。例如,考虑将P = NP解释为6岁。不幸的是,对此没有正式的培训,您必须自己学习。
这也是政治开始打击你的位置。经理会告诉您,请一个人来帮助他,因为他/她会遵循该过程,但是您知道,由于各种原因,例如缺乏技术技能或一个不好的团队成员,这个人在您的团队中没有用。因此,您不仅必须与这个人一起工作,而且还必须给这个人一个好的评价。相反的是具有良好技能和非常有效的团队成员但不知道如何取悦管理人员并因此获得较低评分的人。
然后,有一些无用的会议在远处高位举行,有人讲解有效的流程以及他/她最新的流程变化将如何提高生产力。您必须知道如何隐藏无聊的面孔并显得精力充沛。