作者:朱金灿
来源:http://blog.csdn.net/clever101
又到一年总结时。总的来说,这一年忙碌而充实,现在有点胸中有千言却又不知从何说起。可能每一个希望有所作为的开发人员都盼望着有一个机会去主导一个产品的开发,去改变人们的生产和生活方式,就如同比尔.盖茨曾说的:每天清晨当你醒来的时候,都会为技术进步给人类生活带来的发展和改进而激动不已。我幸运地得到了这样的机会——去领导一个团队去开发一个新产品,这要感激公司领导尤其是我的部门总监对我的赏识。
我在《略谈中国软件产品化的路线图》一文中谈到做了一定数量项目时公司需要有产品化意识,通过构建一个通用化的产品平台来更好支持项目开发。这就涵括我在2013年的主要工作:一方面要研发一个通用平台,另一方面我要做好这个平台的项目应用和推广的技术支持工作。
理想很丰满,现实很骨感!做产品可能是每一个渴望有所作为的开发人员都愿意去做的,但当你真的去做时,却发现前方障碍不少!
最初人手紧缺且基本是团队成员普遍存在经验不足和能力不足的问题。最初在产品研发方面只有我带着一个女生在干。正式开发时我才发现自己严重缺乏领导一个产品开发团队的经验,简单来说主要问题就是如何通过合理安排下属的工作来使得各项研发工作得以并行展开。我设计的这个平台是插件架构的,设想是有一个平台底层,上层功能都有互补依赖的插件来实现,有两个开发团队——底层开发团队和上层插件开发团队,这样在理想状态下底层开发支撑上层功能开发,上层功能开发过程中反馈不足给底层促进底层完善,二者相互促进。但是一开始事情陷入一个死结:白纸一张,没有底层,如果底层都由我开发,在我开发底层的时候安排那个女生干什么事情呢?总不能我在忙碌她闲得要命吧,但是底层代码很重要,我又不放心把如此重要的工作交给一个底层开发能力不足的女生,想想地基不牢的话,大楼能稳固才怪呢。最后我想了个折中的办法:尽量将底层开发工作也并行展开,具体就是将底层开发也尽量划细,我感觉其中实现难度稍小的部分就让那个女生来做的就交给她来完成,同时加强对她的代码的检查,尽量做到发现问题快速修改。就这样我们逐渐开发一个足以支撑插件开发的轻量级底层,我逐渐接手底层开发,那个女生逐渐转入插件开发。这算是解决了面临的一大挑战。事后我总结:安排工作一定要做到并行展开,依据其能力大小进行分配,同时最好需要一个提前量。很多技术高手升级为管理者,往往还是独行侠作风,很多工作不敢分配给下属,觉得别人干半天还比不上自己干一小时快,其实这是不可取的,这样做自己忙得要死,下属得不到锻炼,没有成长,一年到头也没做出什么成绩。一个合格的管理者,是要带领一个团队前进,而不仅仅自己前进。
通过领导一个团队我也渐渐体会到领导就意味着责任,就意味着没有退路。以前碰到技术难题领导会帮你解决,现在很多时候一个刁钻的技术问题就卡在那里,不解决它就无法前进,这个时候团队的其他人都无法帮你,大家都看着你去解决。幸运的是在这一年我算是多次通过了这样的考验,从另一方面来说这也是提高自己的机会,它会促使你完善自己思维方面的漏洞,以更高效的方式完成工作。
然后当产品初具雏形时,公司领导要求将产品SDK应用在一个项目开发中,具体是我们提供产品的通用功能及SDK供项目部同事用于二次开发。用户是检验产品的最好老师,我们团队又开始面临项目部的同事以及最终用户的“刁难”:这个功能怎么还没有,什么时候能完成?这个功能怎么还有bug?底层能不能提供这样的接口……抱怨告状纷至沓来,开始我也对项目部同事恼火:就不能多给我一点时间和耐心,但想到他们面对的是更为苛刻的用户,也就理解了。于是就竭尽全力去解决他们提出的问题,并渐渐获得他们的信任,目前项目已临近验收。
在2013年下半年开始团队的人员越来越多,软件模块越来越多,测试人员反映的bug越来越多,要支持的项目越来越多。我感觉事情千头万绪的,特别是每逢周一,我感觉我的脑袋都有点要爆炸。一个领导需要发现现阶段的最迫切解决的问题(我称之为重要问题)并找到解决它的办法。于是我开始思考一个问题:如何做到研发的正规化?所谓研发正规化在我看来简单来说是流程问题,具体来说就是在现阶段,一个合理的研发流程是怎样的?如何把研发、测试,发布和项目支持等几个关键环节流畅地联结起来。一个正规化的过程就是一个流程再造的过程!于是我开始研究持续构建和每日构建,并在产品研发中部署持续构建和每日构建,并针对实际情况制定了项目支持的流程。从实践来看应该说取得了不错的效果,2014年我们也将继续在研发流程优化这条道路上走下去。
2013年可以说取得一点成绩,但我深深知道这点成绩的取得离不开领导的支持,公司同事的团结努力和大力协助。每当回首往事时,我每每能发现自己的丑陋之处:在一些工作上处理得过于简单粗暴,不够得体,缺乏耐心,那归根结底是我个人修养不够,在此我郑重向同事们道歉,希望你们能谅解我!在2014年我争取做得更好!