Contents

已经换了工作差不多一年,期间还有幸被派去美国学习所做的系统后台开发,趁着本博客重新启航,是时候回顾一下了。

小公司 vs 大公司

在小公司那么多年来,给我最大的感受就是灵活性强,行动敏捷。再加上本人后来能担当上Team Lead角色,所以,有什么好的想法,自然容易尝试和贯彻。但是公司的敏捷,一但被利用成不断高强度赶项目而忽视了人员培养,代码和框架的改进,团队和系统的问题便不断浮现。这也成为我离开的原因之一。不过,对怎么样推动改变上,我并没有做的很好。在能自己拍板范围外的事,虽然有提意见,但是推动不够,主要都在等领导的改变和决策,主动性还不够强。

来了大公司差不多一年了,最大的感受和没有来之前想象到的差不多,就是沟通成本非常高,行动迟缓。再加上职位上我只是小兵一名,有好的想法,也没法通过“强硬”的手段,推广出去。在哪里体现出迟缓的问题呢?

  1. 问题达成结论难。邮件多,开会部门多,人员杂,是大公司的通病。这其实还不是主要问题。问题是一开始讨论邮件或者开会的人员,在等级或者部门上来讲,大家都是平级的。通常情况是老大级别一般先没有参于,即使有,也是各方的老大,也都在,结果还是打平。在谈一个问题的时候,除非大家对一个问题共识较多,或者各方影响不大,方案比较容易通过。但是如果主要涉及一方要其它各方做更大改变,就不容易出结论了。因为大家平级,不好说一方强行推行。那么最终可能要拉锯一段时间,最后再把老老大拉出来,才能拍板。

  2. 推行改变很难。改变,本来就是很难的事情。想一想睡惯懒觉的你突然要自己每天早起30分钟,跑5圈,你做的到吗?更何况如果是要改变别人,那更难了。再想象在大公司,你要改变的是多少个别人。举个例子,从10月份进公司我问为什么不用Maven,有人答我,可能今年5月,到几个星期前我再抱怨,再有人说8月。现在就放话在这,等等看什么时候实施得了。另一个原因同开会难有定调一样,涉及到影响流程,或某些人员的工作比较大的时候,就一定要有一位拍板的人物了。

其实无论是软件还是非软件公司,大了,自然不好管了。Yahoo不是也被批官僚气氛严重,甚至连Google也不例外。Agile的提出,其中一个焦点也致于减少沟通环节。我们也引入了Agile,但是,感觉形式多于内容,反而更乱。

如何改变,如何敏捷

个人认为,要做到Agile,很重要的一个思想就是行动迅速,不断反省,找出不完善的地方,加以改正。这里面,非常需要的一个手段,就是试错。但是很多大公司,很难实现Agile的原因,一个原因是人多难协调,行动缓慢,另一个原因就是不敢试错。一般来说,大公司除了客观原因由于子系统杂,多,乱外,更是因为人员求稳,怕担责的思想,不敢随意做改变。怕错了,出问题,承担后果。

之前看了一本David J. Anderson写的关于Kanban的书,个人感觉是非常适合大公司引用来进行流程,甚至是文化的改进的,甚至比Agile更有效。其中一个重要的原因是Agile的推行,一般意味着对现有流程的一次大的变革。如果人员思想跟不上,或者没有抓住重点,流于形式的话,问题更多。反而,Kanban强调的是在现有流程上的不断发现各个部位的瓶颈,不断进行细微改善和调整。里面推崇的Kaizen文化,更是精华:“任何人对流程改进的尝试,即使失败,或者出问题,都不会被追究。” 要做到这点,虽然需要有良好的衡量机制,更重要的是一种开放和允许尝试的文化。当每个人都不必惧怕所谓的承担责任时,甚至鼓励自发的对流程进行改善的时候,力量可是不容小看的。

具体操作上来说,要推行改变,首先要对你提出的东西,有深刻的理解,它的优缺点都要清楚,必须强调改变带来的好处是远大于它的缺点的。因为抵制的人,总会拿它的缺点说事。而且,你也必须要有坚实的论证,才能说服同事,甚至是你的老板。之前看了一本书《Driving Technical Change》by Terrence Ryan,主要正是教人如何推行改变。最后,当然得期望你上面的领导是英明的,你就事半功倍了。

改变才是永恒

其实,没有哪里可以永恒保持优秀,重要的是如何不断的改变,来追寻优秀。小公司可以变得臃肿,大公司也可以敏捷。重要的是,首先自己要有一颗秉持Kaizen的心,和同一班同样追寻改变和优秀的人合作。

所以,今年我的目标就是”Push for Change; Act as Model” - “推行改变,以身作则”。其实这作为每一年的目标都是正确的,但是,对于现在的我来说,是迫切的。这正是针对自己之前的不足,也是针对目前的环境。问题多的地方,机会才多。这么一段时间以来,我感觉也确实推动了一些东西,无论直接还是间接,甚至方法上可能并不正确,或者为自己留下后患,我都无所畏惧,将继续前进。

可喜的是,新任的Team Lead,对问题上和我有比较一致的看法,也很积极推动团队的前进,感觉非常高兴。同时,可以在他身上,学习如何在大公司内推动改变,确实难得。前景暂时还是光明的,只需要继续努力。

接下来,具体的想改变的事项,我希望能在目前项目的前端开发引入Unit Test,以验证自己对前端开发和测试的想法,以及作为发展自己前端开发能力的一项手段。敬请期待。

Contents