如果一个团队的成员都是资深程序员,是不是就能保证项目开发质量和效率是最佳的呢?答案是未必。
如果一个团队的成员都是新手,是不是项目的开发质量和效率就是“新手水平”呢?答案是未必。
由于人的惰性是会滋生的,更有破窗效应在背后默默起作用。一个团队如果没有人担起责任,推进紧凑的开发节奏,强力推进进度,那么项目就会在漫不经心之间发生质量和效率的双滑坡。
甚至,有时候越是资深的程序员,越会出现老油条现象,你提的建议会被各种理由拒绝,出现的问题,也不会被主动积极的解决掉。积极成员的热情也会在这样一种不知不觉的“文化”的浸染下被磨灭。有的资深程序员看上去技术不错,但是心智是封闭的(CloseMindness),执着于“我是对的”,“这个很简单,我随便就能搞定”这种心态。这种情况是要团队付出最终的代价的,Leader应该及时识别出这种风险。应该要理解,无论是否资深,对于一个Issue,你是否能层次清晰的说出你的解决方案给其他开发人员听,你是否有合理的模块化问题,你是否有足够覆盖率的测试,你是否及时把不确定的地方跟其他人确认需求。这些细节,并非是可做可不做,你尊重程序开发的规律,你就知道这些交互环节正是好的“编程”的一环。就像写代码,一个函数的实现包含多个有序的子步骤。你的开发环节如果也是能用这种思维,让“子步骤”具体明确,不偷懒地执行这些“简单”的子步骤,那么你的开发就称的上是有质量的。
新手虽然技术水平还不资深,甚至有很多初级技能还不太熟,但是好的新手往往更具开放心智(OpenMindness)。好的新手会虚心接受合理的项目调度、会积极把手头的issue消灭掉。好的Leader会引导新手调整好任务的优先级,把一个Issue【像拆闹钟一样做层次清晰的拆解】,并且能【通过口头、文字、图表清晰的讲解】,这样从蛋白区开始一点点到蛋黄区,让新手保持适度紧张的节奏跟进项目。好的Leader会识别和预计新手会在哪些难点上阻塞,并且预计到这种阻塞,及时去和新手做结对编程,手把手在解决阻塞问题的过程中,既保证进度,又通过实际结对解决问题的过程中让新手学习到好的编程技能、习惯和思维。这样良好协作的新手团队,有时候就能达到“三个臭皮匠,顶个诸葛亮”的效果。
为什么要识别资深和新手,这是因为,你不去识别这其中的问题,这些问题就会把你宝贵的时间吃掉。事实上,我们应该认为,真正的资深,应该永远保有“新手”的心智。
--end--