大家叫我杰哥 文
工作到现在快十一年了,在几家不同的公司工作过,外企数量居多,国内公司时间长一些,因此接触过多种不同的文化和团队。 作为公司的新入职员工,被更资深的同事指导,成为公司骨干员工之后,也带过团队,做过个人的指导人这样的角色。经常被戏称老司机, 老司机和指导人有很多相似的地方,比如经验比较丰富,做事情稳妥,出问题少。
当然,不同的公司称呼都不太一样,比如指导人、Buddy、教练、师傅等。虽然有所区别,但是核心的东西是不变的,就是帮助同事成长,打造高效的团队。 当老司机是有要求的,我总结了几点:
1、主要是帮助被指导人成长,提供职业发展引导建议,快速适应工作方式
2、采取的方式有沟通,给出反馈, 训练等,通过实践促进人员知识进步和技能提高
3、需要有一定的LeaderShip,激励和影响他人,并作出积极的改变
4、有时候需要关注更广泛的问题, 涉及到心理状态、情绪等,扫除工作障碍
我这里按照工作经验来划分新人,大致来分成两类:第一类是刚刚从学校毕业的应届生,或工作经验不久,不超过一年。第二类是工作经验在一年以上的。
为什么按照工作经验来分?
关键的点在于对所要从事的工作是否有一个比较全面的认识,我个人觉得这个时间周期约一年。这里的一年是一般的情况,也有工作一年内就表现特别优秀的。当老司机不仅仅是帮助他人,同时对自己也会有帮助,发现自己的不足和提升影响力,工作中往往是同事成就了你。
这次主要以应届毕业生为例,结合自己的经历来说一说如何当好老司机,因为应届生具有代表性,对于有工作经验的, 运用模型进行分析,道理是一样的。
首先从应届毕业生的特点说。从学校毕业后,从学生的身份转变成全职工作者,在多个方面都会发生变化,比如心理状态、学习方式以及职业技能,对于应届生,应该多考虑这些因素,对于后续职业发展有着重要的影响。
在《第五项修炼》一书中,作者提出了学习型组织的概念,有很多值得借鉴的地方。作者提出的五项修炼分别是:自我超越、改善心智模式、建立共同愿景、团队学习、系统思考。作为IT行业的技术人员,就算工作很多年,也需要不断的学习新知识,跟上潮流和时代的变化,这一点和学习型组织对个人的要求高度一致。而作为老司机,不像在学校的老师主要是授业,至于学得好学不好完全靠自己,在工作中,一个团队的成长和产能可能会直接决定年终绩效,所以对于新员工来说,快速的成长和学习显得尤为重要。
认识自己和工作
在学校里学习的知识以理论为主,如果是学习计算机专业,对IT相关的知识可能比较熟悉,如果是非计算机专业的,在交流过程中,当提到一个编程相关概念的时候,可能会不太理解。
所以在开始之前,要告诉新人团队中各种角色,日常工作的流程,以及特定岗位的职业发展前景。这些事情一般会有HR部门来进行组织,比如介绍公司的历史、文化、制度,薪资福利,职业发展等,涉及具体的项目或者团队的事情则需要平时工作中沟通和交流。
沟通可以采用非正式访谈的方式,去了解被指导人的基本情况、想法和期望,具体的来说比如个人的特点,掌握的工作相关的知识。 谈话氛围一定要轻松,不要给太多的压力。对于性格特点,因人而异,需要在平时多观察和了解,是一个长时间的过程,尽量扬长避短。
团队协作和建立信任
有了基本的了解,接下来要动刀动枪,逐步熟悉项目,和大家一起做事了。这个阶段一般并不会实质性的交付任务,更多的是试水,所以这时候保护新人的信心和建立信任上,对应届生来说尤其重要。
刚开始一般是带着一起做任务,结对是比较好的方式,一方面可以增加更多的了解,另一方面可以起到示范作用。什么时候开始独立的做事,取决于成长速度和信心。对有工作经验的新人来说,在主动性和技能的熟悉程度上会比较好,平时给一些指导,给更多的机会锻炼。
建立信任感个人觉得会是存在挑战的一个点。新人刚来团队,对团队的成员还没有完全熟悉,在心理上或多或少存在一定的隔阂,表现出来的形式可能有害怕提问题、或者过于担心自己问的问题太简单自尊心受到打击。这样的情况,对于表现不太活跃和主动的,应该多鼓励提问,多花一些时间关注。
构建信任是一个双向的过程,比较好的做法多做一些愉快的非正式的谈话,拉近距离,平时组织活动一定要带上新人,提升参与感。
学习方法
学习是基于经验的过程,每个人都有自己的一套学习方法和方式。工作中的学习有很强的针对性和目的性,比如项目中要使用Java,而我从来没有接触过,需要在短时间内掌握Java语法和基本的使用。如果没有重点,找到一本书来学习就可能会比较泛,对应届生来说,可能是一头雾水。
所以,学习Java一定要有计划性和重点,指导人的意义将显得非常重要。我采用的做法是,和新人一起来制定一个短期学习计划,验收时间以周为单位,明确产出和验收标准。比如学习完了之后,可以来个showcase,用几个Slides来讲解和演示学习内容。
另外一点是快速解决问题的能力,也可以通过学习来强化。比如特定的问题在哪些地方会有,使用Google、Stackoverflow、Github等。
通过上面的分析,对于如何带人,大家一定会有一些自己的想法了。总体上来讲,就是通过一系列的活动来解决具体的问题,帮助新人了解自己,认识工作对技能的要求,并且和团队一起协作,通过有计划的学习并达到预期目标。
指导实施模型
具体到实施层面,把上面的过程抽象成一个模型,采用一个循环迭代的方式进行。
现状评估
了解新人以及新人对工作的希望,找到需要提高的技能,包括技术能力和非技术能力。比如对于BA这样的角色,非技术能力会更多一些。
制定目标
根据需要提高的点,划分优先级,制定学习计划,并明确验收标准。制定目标可以参考SMART原则。
计划执行
在执行学习计划过程中,做好总结和问题记录。
结果检视
以周为单位,可以是Session分享,可以是Showcase,获得反馈和改进计划。
实习生案例
去年在Thoughtworks公司有机会带了两个实习生, 为了帮助他们更好的适应工作,公司提供了一些实习的机会 。经过沟通,要求实习的时间最少为2个月,每个月为一个大的阶段。下面是和相关利益人沟通之后对实习生的期望:
1、了解敏捷开发流程,对项目中的各种角色有清晰的认识
2、了解开发团队的日常工作和公司文化,并能够进行团队协作
3、了解自己,知道自己所欠缺的领域和知识
4、项目相关的技术不做要求,主要集中的通用的开发技能、软技能
5、实习期结束后能够达到试用期的标准
现状评估
实习生安排了两个,过来报道之后,开展了一些非正式的对话,主要目的是了解现状,制定学习计划。除了参加公司入职前培训之外,在学校做过一些事情,有一定的理论基础,完成了培训的编程作业。因为时间原因,在指导人安排上,有三个人,我们是采用了结对的方式,一方面可以分享经验,另一方面可以交流和相互改进。
制定计划
因为没有上实际的项目,所以我们设计了一个在线商店的应用项目, 一个简单的购物网站。模拟真实团队的工作,帮助实习生了解开发日常开发流程,技术栈使用以入职前培训学习的为主,具体的框架由实习生自主选择 。
项目的管理采用简单的看板,基于在线的Trello设计。项目初期,指导人扮演用户和业务分析师的角色,提出需求后,创建需求卡片,给出编写完整的示范卡片,并对所有的卡片进行优先级排序。其他的卡片由实习生自己按照示范创建,指导人进行审核。
开发采用迭代的形式,每周一个迭代,每天进行站会和代码评审,站会需要使用英语表达。针对基础薄弱的情况,推荐了额外的学习内容,主要是Java的深入学习,推荐的书籍是《Java编程思想》。
计划执行
第一周,模拟Inspection的过程,主要是技术选型和环境搭建,并完成了主要的需求卡片。技术框架前端使用angularJs和Bootstrap,web层采用Spring MVC和myBatis,数据库层使用Mysql,使用Git进行版本控制。开发过程中的问题,实习生都能够比较积极的提问,得到有效的解决。
第二周,开始领取需求卡,进入开发迭代周期。这一周的目的主要是了解开发流程和日常工作方式,还没有采用敏捷实践。这一周产出的代码,在质量上相对较差,有代码风格不统一、对象职责混乱、没有很好的解决代码冲突等突出问题。
第三周,基于第二周已经开发的功能,我们提出了一些要求,比如结对开发,对代码进行重构改善代码结构和单一对象职责,增加单元测试,起步代码提交,代码合并。指导人先示范,然后实习生再自己完成。
到第四周,基本上能够适应工作模式
结果检视
因为采用了每日站会的形式,对每天的工作比较了解,根据实际的情况提出了一些其他的要求,比如要求每周文字总结, 对与大的技术知识点进行总结和分享,比如HTTP协议的工作原理,不要求特别深入,但是需要讲明白。
具有里程碑的点,实习生需要制作幻灯片进行分享。第一个周期结束的时候,做了一次项目成果的ShowCase,并进行总结,结果比较满意,达到了预期。
第二个周期的任务是偏向前端,对界面进行美化和功能优化,最后也进行了一次Showcase和总结,结束之后实习生都推荐到正式的项目中了。
当老司机需要投入额外的时间和精力,也可能是和本职工作无关的,因为未来被指导人可能也不属于你的团队。但是对于这种传承,从组织文化角度看,组织关键的价值观和理念体系会形成有效的传播途径 ,在凝聚文化、营造氛围方面会比较有帮助。