“闻道有先后,术业有专攻”。这几年带团队过程中,有刚入行的小鲜肉,也有工作四五年的世外高人,有激情澎湃的激战分子,也有功力深厚却混吃等死的小伙伴,再说了,不可能每个团队里面的人才都是一个样,各有所长是很正常的现象,对于每个不同的团队,做为一个Leader该如何去提高培养和提高同事?
队友的培养和提高,不仅仅是技术上的,有些团队的技术大牛远远强于 Leader,这也是非常常见的,然而作为一个合格的 Leader 也不仅仅有过人的技术,还有让队友俯首是瞻的气质。
· 对于新手的建议
对于新手,此时处于萌芽阶段,最主要的就是指明一个方向,比如面向接口编程而不是面向实现编程,比如六大基本原则熟记在心,比如不要重复造轮子。对于一些事故多发地带,适当提醒下,即使不小心入坑了,也能快速找到原因并从坑中爬出。在项目时间宽松的时候,可以多给新手点机会,哪怕类似的功能,不同的人思考的方式是不同的,随着代码量的提升,使用的实现方式也是不同的,采用的架构设计也会是不同的,新手很需要代码量的提升,此处说的代码量是思考后的代码,不包括单纯的复制粘贴。
对于新手,个人不建议早早接触太多高深的技术,稳扎稳打才是正确的方式。在没有熟悉一门语言之前,没必要多门语言同事学习,一旦不经常去写,很容易被遗忘。虚心接受过来人的建议,并不是每个人都有必要去指点你。
· 进阶的建议
有些工作好多年的,同样一个功能、流程,已经走了好多遍,比如注册、登录,都是大同小异,达芬奇密码下面是啥?当然是达芬奇验证码了。对于这样的队友,代码量还是挺丰富的,应该把更多的时间放在源码分析、性能优化、架构设计。对于登录、注册,资深和新手写出来明显是不一样的,新手会把更多的时间放在功能的实现,而作为经验丰富的你,是否更应该把多考虑可扩展性和灵活性,比如以后增加了第三方登录了,比如增加了邮箱登录了,是否可以在不改变或者几乎不改动原有代码的基础上,无缝添加这些新的功能,而不是一味地修修补补,最后迫不得已就重构。在对接一个第三方的时候,比如接了百度地图,当日后需要用高德地图替换掉百度地图的时候,是否可以做到一键替换?
学而不思则罔,思而不学则殆,边走边看,边看边思考,高效的代码是90%的时间在思考,10%的时间在coding,把修改bug的时间用在思考,而不是日后的修修补补。
· 资深的建议
这个阶段,应该更好地提高其它编程语言,或者提高技术之外的能力,往往通过一门语言去达到登峰造极的程度,这是很难的,一门语言所接触到的编程思想毕竟有限,可以通过更多的技术来学习更好的思想,从而大大的提高编程效率。现在很多语言建也是相互借鉴,最初的时候,微软的C#更多的借鉴java的一些编程思想,但java的响应式编程和lambda又是从别的语言借鉴而来。
在这个阶段,技术之外更有必要去提升,比如带新人、带团队,我算是比较幸运的,在工作不满一年的时候就开始带新人,工作不满两年的时候就开始主导项目,现在想起来都觉得惭愧,自己啥都不会的情况下,公司就赶鸭子上架,哈哈。虽值得欣慰的是,每任领导对我的工作还是比较认可的,因为接触带团队比较早,作为过来人,对于早期的问题或许会更加清晰一点,经过几年的积累,更加游刃有余,知人善用,方可事半功倍。
对于工作多年没带过团队的朋友,在合适的时机,可以主动请缨,毛遂自荐,机会是留给有所准备的人,在这之前,逻辑思维、表达能力、团队精神和技术能力都需要得到公司的认可,公司也可以更放心把团队交给你,这也是我为啥招人的时候,非常看重这几点,我也希望有一天我的小伙伴离开团队出去找工作,都能独当一面,成为当前公司的技术型管理。
· 补充建议
人们经常说程序员是青春饭,或许这句话是没错的,也经常看到XX公司35岁后被辞退,不管这新闻是否属实,我们都应该未雨绸缪。coding是不能一辈子的,61 岁的 Java 之父 James Gosling 在 Facebook 上发表了他所遭遇的年龄歧视:“通常我们不招你这种年龄的程序员,但你的情况特殊(指的是他 Java 之父的身份),所以对你特殊考虑。”做为程序员,我们未来的选择无非就是从技术转管理、创业或者转行,到底该怎么选择,这将根据自己的兴趣爱好和需要,在此不做阐述。