自动驾驶工程软件团队建设

之前带过4-7人的小团队,感觉每天的日子都很充实,但回过头来又感觉没什么成就感,因为没有完成什么可以看见或感受到的成就。最近因为形势变化,常常独自一人琢磨技术,一身轻松,反而看到了一些团队的问题,也有一些思考。

  1. 好的技术团队一定要有一个真正的技术leader

真正的技术leader是何方神圣?起码的要求我认为必须要有良好的设计理念、丰富的架构设计经验和严格的执行力。设计理念说明了其抽象和总结的能力已经达到了一定的水平,已经形成了一套有效地思想,能够指导项目的设计和实现。如何体现出这种设计理念,仅靠背一些人尽皆知的教条是不够的的,要能够从实操中体现出来,比如面对一个新的需求,该如何执行,是重构还是扩展、甚至是拒绝?每个决策都是体现设计理念的时候。理念和经验是正相关的,经验丰富才能总结出货真价实的理念。工程架构就是不断地在权衡、纠结中前进,纵使再有经验,也会由于一些约束条件而难以抉择。面对没有趟过的坑时做出的选择没法保证100%最优,不好的决策将带来诸多的麻烦,但也只有在不断的解决麻烦中总结出一些共性,把失败的经验升华成设计思想,并用思想指导实践,才能在下一个陌生的坑面前,有较大的概率做出更优的决策。这也是为什么一定要有一个技术leader,如果都是一群菜鸟,全程都是在趟坑,做出不好的决策时实际上又产生了无数的新坑,最终难以收敛,重构就是必须的。所以如果确实能力有限的团队,更高频率的重构是很有必要的,也是总结和成长的过程。执行力是贯彻思想的武器,如果执行力不强,不能保证项目按照预想的设计完成,自然是失败的。很多时候决策是会受到怀疑和阻力的,有时候也没法给出绝对好的证明,尤其是在做一些新事物的时候,也要坚决的贯彻leader的想法,这样才有战斗力,即使后面证明之前的决策不是最优的。Leader也一定要有坚定的信念感,相信自己的认知能力,即使做出了一些错误的决定,也要让这群人看到自己在错误出现时的总结分析、纠错和成长的能力。

  1. 技术团队要形成技术人才梯队

技术日新月异,知识的海洋是无穷无尽的,工作中却不允许你自由的徜徉。第一优先级绝对是保障项目的进展,求得生存才有可能考虑开拓新的方向。在求生存的阶段经常招不到理想的人才,甚至只能选择了一些不好的成员。任何时候都要有意的去打造一个有梯度的团队。每个项目工程都有一些不同level的事情,让相应level水平的人做响应level的事情,才能充分利用每个人的能力,既有先头部队开疆拓土,又有后勤保障做精做深,传帮带的工作模式既让能力强的人有成就感,又让能力弱的人有进步的感觉。让每个人都有所成长,团队才能不断的成长,一般公司的成长路径也是和这个模式是吻合的,所以能力和经济收益才能不断地匹配,不至于产生一些负面情绪。

  1. 要营造良好的技术氛围

以前我和同事们聊到一些工作内容的事情,有些时候可能无意识的会抱怨工作的性质差异,比如XXX模块的维护是个脏活累活,XXX架构是个有成长空间的好活。直到有一天,发现团队所有的人都开始挑三拣四,消极怠工。这就是一个非常典型的技术氛围差的团队情况。消极的东西不要轻易的传播,即使是公司的问题,技术上的消极思想更不应该,任何一项技术做好都不容易,每一项工作做到极致都能成为一门艺术。技术解决的是什么?归根结底是效率问题。效率可能是生产效率、可能是使用效率,除非已经是在做一门艺术,效率才不是追求的东西。任何和商业挂钩的事情,最终都需要用技术来解决效率问题。1s的编译时间OK吗?OK,能更快吗?还能,有意义吗?有,积少成多,每个人节约1秒,整个公司能节省多少时间。不断解决效率问题的时候,技术能力势必需要不断开拓和深挖的,新的方向和突破也经常在这些过程中产生,也许就是编译问题的解决,能让你做出分布式系统都有可能。而且技术的深挖带来的效率提升给公司带来更多的成本优势,给团队带来更强的战斗力,这些都是团队长期向好的能量之源。所以一定要培养良好的技术氛围,最重要的体现就是每一项技术内容都能做得很好,而不是做到just-so-so,然后在团队中形成良好的分享和学习氛围,这样大家都在借助团队的力量成长,也是每个有技术追求的人所希望的。

团队的建设不是简单的事情,其难度不亚于技术上的攻坚。这些想法还只是皮毛,不断的实践、总结和反思,才能不断地优化管理思想和手段,更好的打造有战斗力的团队。

你可能感兴趣的:(自动驾驶工程软件团队建设)