前言
在我的多篇博文中提到软件开发需要师傅带徒弟,如在谈到Commit活动中,师傅们应该积极利用Commit活动,通过对代码检视,发现问题,帮助软件能力提升,养成良好的工作习惯。再如在谈到软件传承时,提升明确建立了师徒关系,师傅在日常开发中,通过言传身教,传递对代码的价值取向,精益品质追求。
在敏捷软件开发方法中,也提到“结对编程”:两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。
结对编程的目的一方面是对软件质量的看护手段,另一方面则是让参与的程序员能够提升自身能力。程序员结对工作的时候,水平较低的一方会潜移默化地受水平略高的程序员影响,学到新的东西。而水平高的一方同样因为不断地把自己的想法说出来,过程中会整理与完善自己的思路,是一个相互促进的过程。
师徒结对就是通过传
、帮
、带
,通过互助
、互信
、合作
来促进团队的软件开发专业能力的提升。
什么是传帮带
传即言传,师傅要有扎实的理论基础与实战经验,能够勾勒出工作中所使用技术知识地图,能够将自己在软件设计、代码实践,重构优化,和所使用的技术体系,以及合理的工作方式,工作习惯,工程方法传授给徒弟。软件开发要做得好,软件的知识体系建立非常重要。扎实结构化的基础知识是必备的,导师虽不需要教导每一个知识点,但一定要传递徒弟建立不断学习的导向。
帮即帮助,师傅一方面是在工作中帮助徒弟发现,认识,解决软件开发的问题;另一方面是帮助徒弟总结工作经验,整理工作方式,提高解决实际问题的能力。软件开发有一定特殊性,很多并不是固定例行工作,更多是要有分析问题的能力,解决未知问题,有时甚至需要创新打破常规,所以师傅的"帮"应该是引导,建立良好的工作习惯,形成自己的工作方法,发挥出个人的主观能动性。
带即身教,师傅为徒弟树立榜样明确目标,榜样的力量是无声无穷的。师傅要有幽默风趣的处事方法,能将快乐带给大家;严谨认真的工作态度,能将事情做得更好;爱岗敬业的工作作风,将热情传递给众人。在榜样的影响下,让徒弟改正工作中的侥幸心理,激发工作热情。师傅“带”还有一方面是要识别人才,建立软件开发专业队伍。师傅在工作中起着领头雁的角色,以身作则带领徒弟们更好的成长,促进团队成员的凝聚力。
如何带好新人
在我司一直有师傅带新人的优秀传统,我也差不多带了十多名徒弟,有社招的也有校招的,虽不能说我怎么会带徒弟,但还是形成一套自己的思路:了解–>互助–>互信–>放手。博文的内容是我很久以前写的水文,今天再次翻出来。
了解特点,引导
我司把师傅带新人算是纳了正式的流程,并且对老师取一个导师的名号。导师,从字面上理解应该是:传道+授业+解惑。导师应该是亦师亦友,首先是生活上的朋友,才能做事业上的伙伴。从个人带徒弟的经验来看,每个人的性格、经历、知识、技能与做事的方式是各不相同。因而培养思路大体相同,实施细节却因人而异。
我司校招的萌新,目前几乎是清一色的985或重点211院校的硕士毕业生,他们大多基础都很好。可能他们并非来自计算机相关的专业,但名校出来的学生自学能力,理解能力都不会差到哪里去。作为导师同样需要怀着敬畏的心态,不能甩手放羊式地让其自由摸索,而是需要引导式培养,帮助其认识到自己的不足。社招的新人通常有其已有的工作经验与工作方式,他们原有的工作流程、方式可能与我司的要求并不一定相同,甚至在文化认同上都可能存在潜在的冲突。某些社招员工的能力甚至很强,因此我们同样要注重引导,注重因人而异的工作思路与方法的培养。
无论职场萌新还是社招员工,对陌生的环境有一个适应的过程。所以,让他们尽快整合入团队是最重要的第一步。良好的组织氛围是新人快速融入的基础,开放的团队环境是新人快速成长的要素。作为导师,首先是与新人做朋友,保持自己与徒弟的思想交流融合,对于新事物的看法,既要保持自己正确的观点,更重要找到相交点,形成共鸣。在生活上,则要多发自内心的关怀,能够主动发现与帮助解决生活上的小困难,遇到不开心的事,多一些安慰。师傅要能主动观察徒弟思想上的波动,帮助他分析,从长远的眼光与辩证的思维看待与解决。
适应阶段,互助
适应阶段,一般要考虑两件事:
帮助尽快掌握业务知识与技能。主要是要求新员工对后续所从事的软件业务和开发必备的知识有一个较全面的了解,知识可以是点到为止,建立知识地图或框架,求全而不要求精。通常采用自学与导师辅助相结合的方式,适时对徒弟提出不同的要求,激励徒弟自我驱动地学习。如果团队同时有一批新员工,则可能组织他们相互交流,营造“你追我赶”,“三人行并有我有师”的学习氛围。注重帮助徒弟在工作中对理论知识与实践工作相结合,培养与激发他们的兴趣。让徒弟在日常工作中养成不断地总结与思考习惯,努力提升自己的工作能力。并有意无意地让徒弟意识到只有不断地学习新的知识,掌握新的技能,才能满足工作的要求。
帮助快速融入软件开发文化与流程。说教式的文化传递没有什么作用,没有什么比言传身教更有说服力了。通过导师以及身边的同事用良好的软件开发习惯去感染他们,潜移默化地影响他们。在适应阶段,导师要侧面及时了解新员工的状态,存在的问题及面临的困惑等,给予及时的支持帮助与解答。同时要鼓励新员工多参与部门内的一些活动,增进他们与其它同事的了解和交流,营造一个和谐稳定,积极向上的工作氛围,让他们有归属感,认同感。
互助是师徒之间交流碰撞,导师坚持四心(诚心、精心、细心与耐心)来引导徒弟,徒弟坚持四勤(勤学、勤问、勤思与勤练)来学习工作。师徒之间亦师亦友,互学互助,共同进步。
磨合阶段,互信
过了适应阶段,开始着手让新人边工作边学习,这个阶段也是导师与新人进一步地相互了解与促进交流的过程。一般建议先给新员工先安排一些容易上手的工作,在工作中学习,逐步掌握工作方法与要求。导师并不断地观察其学习能力,工作胜任程度,适当地调整工作安排。随着进一步的交流与了解并逐步加大其工作难度,逐步过渡到有能力独立负责某一特性的开发工作。
在这个阶段,新人可能犯错,甚至给你带来麻烦。导师应该学会换位思考,多站在新人的角度来思考,不应该盛气凌人,尽量平心地说明事情的问题而不是指责其"不对"、“不行"等。允许他们犯错,导师应该及时地发现问题与指导,同时告诉他们要从错误中怎么汲取经验,如何避免在后续工作犯类似的错误。同样,对于徒弟做得好的方面要及时给予鼓励,激发他们的自信,消除师傅与徒弟距离感,把自己的能力发挥出来,让他们做得更好。
互信也同样对师傅有要求,师傅要以身作则。互信的基石是:公开,一致与尊重。公开就是无论师傅还是徒弟,需要坦诚布公地交流,哪怕是错误糟糕的信息,尤其是经验必须与大家分享,而不是独占,软件开发不会存在教会徒弟就会饿死师傅;一致是师徒的表现不能因环境变化而变化,而应做到始终如一。特别要做到言行一致、表里如一,而不能说一套做一套。尊重是必须相互尊重,以一种有尊严、光明正大的态度待人。只有在得到尊重的前提下,大家才能更好地投入工作。
实践阶段,放手
现在的新人基础并不会差,当已掌握工作中所需要的技能与方法之后,则及时合理分配工作,最好的培养其实是用好他们,充分给他们发挥价值的机会。在磨合阶段,导师需要善于发现,当认为新人在基本工作胜任之后,就让其独立承担更多的责任,放手让新员工去做。比如先让他们尝试去设计代码结构,代码写完之后再坐在一起讨论与修改。
在工作中,可以只告诉徒弟一些局部的情境,变通的方法,帮助其把握方向上不要出错。对于其所咨询的业务与技术问题,可以在不同的场景下点到为止,让徒弟有自己的学习与思考空间。同时注重充分培养徒弟独立开展工作能力,逐步增加工作难度,适当的压力与动力并存。秉承"授之以鱼,不如授之以渔"的方法,更好是教导工作方法而不是具体的知识点,放手让徒弟去实践,师傅慢慢变成背后支撑的角色。
主动寻找师傅
俗话说“一个篱笆三个桩,一个好汉三个帮”,即使工作多年了,工作要求的变化都会存在对自身的挑战。古人说“天时地利人和”,天时、地利不是人力所能控制,但“人和”却是可以通过自身的努力去实现。而最为简单的途径,便是在团队中寻找一位较为有威望的人"拜师”,软件开发亦是如此。
从软件任职级别来看,建议是低级别向高级别的拜师。主动建立好关系,寻求结对,如一级的建议找三级或四级,有一定的跨级才能看到自身的差距,有自己的目标。当然高级别的也要乐于识别与接受其它人的求助,话说“学然后知不足,教然后而知困”,其实我们在带徒弟学习业务知识与软件开发技能时,也是对自己的知识结构化总结,才能认识自身不足之处。这会也促使作为师傅,更好地学习提升业务水平,促进师徒共同进步。
“亲其师,信其道”,白话说:一个人只有在亲近、尊敬自己的师长时,才会相信、学习师长所传授的知识和道理。有渊博知识,擅言谈技巧,秉高尚人格,富工作热情的老师,才会有更多追随者追随。因此无论从组织还是个人来说,师徒双方都有收益,又能做好队伍建设,何乐而不为呢。
结语
软件开发中,做好师徒结对,师徒带徒弟是软件开发重要的传承。师傅言传身教工作方法与工作作风(传道),传授业务知识与开发技能知识体系(授业),面对各种疑难问题耐心解答(解惑);徒弟则高标准,严要求,勤学多思,敢于挑战(敬其师,效其行)。最后是“青出于蓝而胜于蓝”,在工作岗位上发挥个人最大的价值。