|
对于提供IT专业服务的公司来说,具备专业服务能力的人才和团队就是企业的核心资产,直接决定企业提供服务的能力,进而影响企业的盈利能力。当企业处于快速发展阶段,人员规模迅速扩张,每个团队都充斥着许多新人。在这种团队杠杆(Leverage)非常高的场景下,如何保持原有的专业服务能力,不被稀释,并为企业的持续盈利做好人才储备,是摆在所有团队面前的一道考题。转自项目管理者联盟
背景项目经理圈子
过去的一年半是ThoughtWorks西安办公室迅速发展壮大的一年,其人数规模从不到十个人发展到目前的七十多个人。在此期间,我们和一家国外的客户展开了长期的战略合作。面对大量新招聘的人员,特别是毕业生的加入,顺利实现交付并且与客户维持良好的合作关系就给团队的能力建设带来很大的挑战。下面我会以Home Ideas团队为例谈谈我们在这方面的经验。项目管理者联盟
一年前Home Ideas项目的开发工作正式启动时,最初的五个开发人员中有四个是新人,其中两个新人虽然有几年工作经验,但是却没有与该项目相关的技术背景,还有两个新人是刚入职的女毕业生,技术基础非常薄弱。在随后的日子里,又陆续有新人加入,一个十人左右规模的团队内,最多时一共有五个毕业生,开发人员中只有一个已经通过了试用期。不仅如此,团队的人员流动还非常频繁,项目开始后的半年内,先后有两个有经验的新人和一个毕业生离职,并且平均每个月都有一至两次的人员变动。为了应对这样的人员结构和能力状况,Home Ideas团队进行了如下尝试。PgMp.mypm.net
编程作业项目管理论坛
最紧迫的莫过于培养毕业生最基本的读代码和写代码的能力。一般认为结对编程是最好的培养毕业生的方式,但是在实际中,和毕业生结对的效率太低,讲 授的很多内容都很难让毕业生在结对的时候就接受并消化了,主要原因是毕业生不熟悉项目的代码和技术。Home Ideas团队每天让有经验的同事给他们布置一些作业,主要是让他们去理解和掌握项目中的代码和技术,并且这部分代码通常和他们正在做的用户故事相关,第二天要求毕业生给布置作业的人讲述他对那部分代码的理解。通过这种方式,能让毕业生迅速熟悉项目的代码和技术,使得他们在结对编程中的学习更有效率。
另一种作业是基本编程能力的练习,我们通常用一些典型的面向对象编程练习题。通过和毕业生一起对题目分析,将解决方案拆分成一个任务列表,要求毕业生必须用TDD的方式,每次完成一两个任务,并提交代码到Github上,布置作业的人就会检查并提出重构的建议,然后毕业生修改后提交,通过检查后,再做下一个任务。我们将这种“小步前进”式的编程作业称之为“持续提交”(Continuous Commits)。经过一段时间反复的练习,能够提高毕业生的基本的面向对象编程、TDD、重构、任务分解等方面的能力。需要注意的是,布置的作业一定要检查,否则,就相当于没有布置,只有这样才能形成一个完整的戴明环。training.mypm.net
项目管理者联盟
知识分享bbs.mypm.net
在团队内,通过做session实现能力培养和知识传递是一种很常见的方式,不过在项目不同的阶段session的内容会有明显差别。早期的session主要是关于项目中用到的技术,目的是为了快速学习和掌握必要的技术以便顺利进行开发。这时,可以利用“团队技术能力图”来标明项目相关的各种技术,评价当前的团队技术能力状态,并且和客户共同设定每个季度的能力成长目标,到了季度末再来评价团队技术能力是否达到了目标。此外,还可以进一步细化,用Excel表格来定期评价和跟踪所有团队成员对各种技术的掌握程度。这些都是非常有效的管理能力建设的方式。blog.mypm.net
项目管理者联盟
项目管理者联盟
通过近似于强制性的要求团队成员频繁地做session,在团队内部逐步形成积极的知识分享的氛围,不仅仅有人愿意分享,而且有人主动喊出想要知道某方面的知识。于是为了将知识分享的供需可视化,可以建立一个session墙,分成两部分,一边由团队成员写出来想要了解的技术知识,相当于是session的需求方;另一边写着根据需求而安排的session,相当于是session的提供方,这样清楚明了,便于跟踪。bbs.mypm.net
项目管理者联盟
随着项目的进展,代码量的积累,代码质量的问题逐渐暴露了出来,这一阶段的session主要针对代码质量和软件设计,Home Ideas团队推出了“软件设计检讨会”系列session。起初,代码问题较多的团队成员检查自己的代码,并且和其他人一起讨论代码设计或重构方案,每周做一次到两次;并且把需要重构的问题专门记录在一个共享文档里,以便跟踪;不用太长时间,这些人的代码设计能力就逐步成长到能够发现整个团队的代码设计问题,并且由主讲人变成了组织者,带动其他团队成员讨论代码问题。经过这一阶段,团队成员的软件设计能力和项目的代码质量都明显提高。项目管理者联盟
项目经理博客
项目管理者联盟
www.mypm.net
项目管理者联盟
项目管理者联盟
PgMp.mypm.net
bbs.mypm.net
项目经理博客
项目管理者联盟
下来一个阶段的session主要关注特定功能和问题的解决方案和特定技术的专项提高,比如在实现了与第三方系统的集成后,主要参与设计和实现的项目成员就做了这部分工作从实现方案,到使用的技术,到具体代码设计的全套session。此外,code jam也是常用的专项技术能力提升的方式。比如团队中的前端开发人员就连续组织多次CSS专项提高练习,他每次都会根据主题设计一系列小练习,层层深入,覆盖所有的知识点。pmp.mypm.net
|