敏捷开发一千零一问系列之七:怎样对待有看法的徒弟?
这是敏捷开发一千零一问系列的第七篇。(之一,之二,之三,问题总目录)
问题
松结对编程中,师傅对徒弟安排任务时,对于有想法的徒弟提出的意见怎样解决?
方案
步骤0:
正心,诚意。
人们到底是在管理一个人(控制,监督,指令)还是领导一个人(帮助,引导,培养),被管理者和被领导者其实心里是一清二楚的。
因此在师徒关系中,不能为了师徒而师徒,而是要找到师+徒这个体系的目的,把心态放在把事情做好而非维护师徒结构上,从这个角度看问题才能做好下面的事情。
步骤1:
师傅日常要多在收尾的时候检查徒弟的代码,指出其中的问题,以让徒弟正确认识自己的水平。
软件开发有一个好处是比较理性:好的就是好的,没有什么可争辩的;但也有一个坏处:好坏多半在做出来后才能看得出来,十个手指头胜过两张嘴皮子。
所以师傅应该多在最终结果上指导徒弟,徒弟就会意识到如果从头就听取师傅的意见,中间会节省很多无用功。
步骤2:
有个笑话挺逗的,有人问某人你家谁说了算?回答“一半一半。如果我们两个意见相同,我说了算;如果不同,我媳妇说了算。”
随着一起工作的时间变长,师傅也不用强调每次都有更优答案,反而可以鼓励在大方向一致的情况下,让徒弟自己进行一些“微创新”,这样徒弟不会有一种巨大的阴影感。
步骤3:
在有些时候,师徒都拿不准,这时候应该引入更强的技术力量,就是“师祖”级别的程序员加入讨论。
师傅不要因为自己都要接受指导而感到没面子,其实如果徒弟发现师傅这么厉害都还能尊重师祖的看法,自己自然更加会尊重师傅。
步骤4:
对于接近出师的徒弟,应该将其当作自己思维的延续,而非始终仅仅当作左膀右臂。
其实很多人都将经历一个放下编程,拿起业务/管理/产品/市场乃至决策的过程,如果始终放不下,就永远拿不起来。
从这一点上说,师傅不永远是师傅,徒弟不永远是徒弟。从这个终极目的出发,反而应该在早期就培养有看法的徒弟,而不是简单地把自己的看法交给他。
培养的要点,在于心和法的培养,即养成正确的思维方式、价值观、看问题的角度,日后遇到师傅自己也没有遇到过的问题,自然就能轻易解决。
案例
无。
分析
作为一个师傅,要理解实际上并不存在“我的想法”,而是应该存在一个“正确的想法”,因此不应该每次都突出于徒弟的不同,而是在团队内部形成正确的价值观,鼓励人们“正确地思考”(正确是副词),从而得出“正确的想法”(正确是形容词)。这一点和敏捷开发差不多。
所以师徒团队的目标不是找到一堆能执行师傅想法的徒弟,而是一堆与师傅想法相同的徒弟,进而找到与师傅思维方式相同的徒弟,甚至超过师傅思维方式的徒弟。
当徒弟超过师傅的时候,师傅不能想“有人坐了我的位置”,而是应该想“有人替我办所有事了,我终于可以去办更大的事情了”。这是一种“人无我”的想法,就是不能固执地认为自己就是师傅,而不是更高职位的人。
另一个很无奈的事实是人会变老,思维也会僵化(比如多数科学家都是在很年轻的时候做出贡献的,老了以后基本上就是做科普工作了;多数新公司也是年轻人创造的,老了以后公司也会逐渐衰落)。因此每个人无论职位高低,都应该培养接班人,按照正确的思维方式,探索新答案。(这个称为“法无我”,就是“法”也没有我,也在变化中,就是之前提到的“无住”)。