软件项目开发和管理随手记
2015 年 05 月 08 日
最近基于Easyrtc/Angular在搞一个Web即时通信软件,除了Angular也没研究啥,不值一写。不过关于软件项目开发和管理有一些零散的想法,随手记一下。
关于测试驱动
测试驱动的确是好东西,但为什么国内少有公司推动?我觉得原因其实很简单:看起来太贵了。
打个比方。如果一个软件依靠黑盒测试能做到80分,按照传统观点就可以出货了。但测试驱动方法可以将软件做到95分,同时需要延长一倍的开发时间,且初期对测试时间的减少非常有限,对开发人员的素质要求也更高,也就是说要花更多的钱在人力资源上。在这样的限制下,还有几个老板有把软件做到95分的欲望?与其把产品质量做好,还不如花点时间跑关系或者做推广更有用。
就算老板对这些事情一知半解,下面的执行者也未必愿意去做。对于懂行的人来说,这是以更大的工作量和工作时间,换来看不见摸不着的质量提升,没法向老板交代。而对于不懂行的来说,则根本搞不清如何推动。简而言之就是:懂的不做,做的不懂。
说到底,只有在一个成熟的市场,用户愿意为高质量产品买单的环境下,才有测试驱动的土壤。国内目前的确不具备这样的环境。
管理需要的到底是指挥官还是特种兵队长
各种管理类文章里面说法不一,有的说什么一流管理是自己不干而手下开心的干,blahblah, 也有的说管理是以身作则身先士卒,blahblah。看起来各自都有道理,但实际上呢?
说到底,要看管理者所管理的团队到底处于哪个阶段。
如果一个团队生存还有问题,就像在热带雨林里摸索前进的小分队,那么管理者必须要成为特种队长,去解决团队需要的问题,而且要全面解决。从找钱到如何花钱,从产品设计到生产流程,从安排工作到亲自解决产品开发难点。对这样的团队来说,每一个环节都可能致命。管理者或管理团队如果无法解决问题,就无法生存。
但对于生存已经不存在问题的团队,管理者就必须从更高角度看问题,保证队伍一直走在正确的道路上。这份工作不比上一种好做,要思考行业发展方向,分析支出收益数据,制定团队发展路线和规章,保障团队人员齐备等等。并不是自己不干活,而是自己干的活别人看不懂,只能以结果来评价工作效果。
关于寻找靠谱员工
靠谱员工总是存在的,各种指导你寻找靠谱员工的文章里写的也都是对的。但有一个问题:你的团队人数有多少?
基本上,20个人里面,总有两三个是靠谱的。但3-4个人里面,一个靠谱的都没有是很正常的。
传统观点上,由于人情的关系,即使有些人不适合做下去,也不会赶他离开。但Netflix的经验告诉我们,这对团队和不适合的人,其实都不好。只要给他合适的价码,对团队和个人也许都是一个帮助。
关于目标
事实上,自打看了高德拉特那本《目标》,我就毫不怀疑,任何个人也好,团队也好,组织也好,没有比确定目标并为之努力更重要的事情了。
产品质量不是目标,安全不是目标,财务报表不是目标。很多你看起来很重要的东西,并不是你的目标。你的目标应该更简洁有力。任何重要的名词,只是你在向着你的目标前进过程中,需要注意的一个方面而已。当它的数据与你的目标出现背离,比如某些6sigma之类的报表,你需要考虑问题根源是什么,然后再决定是调整你的行为去满足报表,还是调整报表去满足你的目标本身。
唐僧和孙悟空
很多人以取经为例,证明领导应该像唐僧那样,以纯管理为最高境界。
但是,唐僧没有孙悟空是活不下去的,而孙悟空没有唐僧活的依然很好。
唐僧控制孙悟空,靠的是紧箍咒,以现代的观点来看,就是高违约成本的合同。
单说取经这件事,如果孙悟空想做,分分钟就可以做完,不过他的确缺少唐僧所有的上层关系资源。
所以说到底,如果是讲关系的市场,还是老老实实打工比较好。如果是自由竞争的市场,唐僧早就死一边去了。
我们将来会处于什么样的市场之中呢?