继续我们的讨论。
前几天,我在google上搜索thoughtworks,结果发现,很多文章竟然是关于如何通过这家公司面试的过程描述,介绍如何可以得到thoughtworks的offer。说句题外话,中国的工程师其实也很可怜,这么多人在网上花费大量的时间交流的仅仅是获得一份工作的经验,把挤进洋人的公司、给洋人打工看成是人生的一个里程碑式的成就。先贤说中国知识分子缺乏独立的人格,往往是指政治上的,知识分子经常沦为政治的小妾。而从今天看去,恐怕还要加上商业小妾这一条了,对老板、对洋人的谄媚几乎也成了知识分子这个群体的基本特征属性之一。从这些面试文章里可以看到,thoughtwork的面试过程很严格,给的待遇当然也不错,中国的工程师趋之若鹜也是自然的了,最后的录用比例好像是10:1。我感兴趣的则是thoughtwork面试的内容,从那些成功者的经验报告中透露的一些信息来看,多数应该是软件设计、程序开发技能方面的东西,说实话,那些考题如果让我去做,估计100%的要死菜菜。我的一个曾经部下参加过他们的面试,结果第一轮都淘汰了。
从我所了解的一些信息,我们有必要需要来讨论怎样进行敏捷。
做软件,本质上也是一种业务,因此,讨论软件的开发方法,最好把出发点放在业务模式来讨论。正象前面说的,敏捷发展到今天,其实也变成了一种观念,一种业务模式。
OK,我们这里就来讨论一下软件业务的问题。现在所有的软件公司几乎都面临一个问题,就是做软件不赚钱,软件的利润实在太薄。这里面既有市场环境的问题,同时也有软件公司自己的问题。话说回来,中国有成千上万家软件公司,但是到底有几家真正懂得做软件业务的呢。这几年,关于软件业务模式的创意层出不穷,方法也多种多样。有人提倡大客户服务,这样模式下,市场的开拓成本不大,而且比较稳定,但是大客户的预算也经常波动,而且客户的主管胃口也越来越大,以前的许多假设实际上已经不成立。也有人提倡做人力外包,公司就是卖人头,好处是现金流压力小,业务稳定,但是在这种模式下,正是由于公司的收入清晰可见,老板们很少愿意把装在兜里的钱再掏出来做公司的能力建设,所以时间长了,外包公司的服务能力一定是向下衰减,直到有一天客户忍无可忍,另寻新欢。还有人希望从软件工具方面来解决问题,于是就有了各种各样的框架平台,据说这是一颗能够搞定软件业务的“银弹”,于是滋生了几家做平台的软件公司,不幸的是,平台也仅仅是工具,决定项目成败的关键因素肯定不是平台,这些做平台产品的公司最后免不了还是得去做行业项目。有了飞机大炮,也未必能够打得赢小米加步枪。
现在冒出来了敏捷开发,而且已经成为了一种业务模式,很多公司赖以生存的基础。那么就敏捷业务模式来讲,我们要深入地进行一些讨论。既然是业务模式,那么与之相关的第一个问题就是,敏捷的支持体系是什么,怎样建立。说到底,它的业务基础是什么。
我们来看thoughtwork,它是在XP的思想下来实施敏捷的,所以它需要找的人一定是一些相对比较高档的程序员,既可以写出高质量的代码,同时又能够快速理解客户的业务,并且可以随时因客户需求而变。但是,如果我们回到现实中间,我们会发现这种模式至少在国内是极度危险的。
首先,国内的市场似乎没用这么大的利润空间给一家软件公司去养这么多的高档程序员,即使这些程序员能够快速交付他们所承诺的任务(不过就我个人来看,我对国内市场上的程序员的这方面的能力的认识还是有所保留的)。只有一种可能性,象thoughtwork这样的公司可以持续地、从海外接受利润较好的软件订单,这样才可能管得住这群高档程序员的吃喝拉撒。
其次,国内市场上实际是缺乏一个能够适应XP、同时又相对比较稳定的程序员群体。在这里,我们简单地给国内的程序员群体来做一个分类,来看看程序员的基本类型:
第一类就是那些优秀、勤奋同时又懂得把握机遇的群体,在几年艰苦的项目生活之后,多数都进入了各个软件公司的庙堂,成为了公司的中高级管理者,或者公司的基干技术人员,例如咨询师、架构师等等,他们在一定时间后,一般不再承担一线客户项目的开发任务。
第二类则是那些资质较弱,或者有一些惰性的程序员,在软件公司干了10年左右,不上不下,高不成、低不就。这群人多数是缺乏激情、缺乏创新的老程序员,靠跳槽加薪,靠在网上晒工资条宣泄自己的优越感。当然,这群人并非一无是处,凭良心讲,在开发经验上和程序质量上,他们的工作绩效还是要比刚刚入行的程序员强了许多,到底多吃了好几年的IT饭。但是不幸的是,他们的成本也是年轻程序员的若干倍,对于公司来讲,这群人的投入产出是不成比例的。在国内软件公司中,我个人感到,最没有价值的就是工作了7、8年,每月拿8000到10000左右的高级程序员。这群人向上走,既不能带队伍做管理,独立承担责任,又不能做系统分析设计,在项目组中仅仅是一个优秀的技工而已;向下行,当承担一些具体工作时,往往又摆老资格,讲条件,纪律涣散,动辄在项目中就要跳槽,置团队整体利益于不顾,是实实在在的鸡肋。这群人,我们可以称之为打工油子。
第三类则是那些工作时间不长,涉世不深,还保留了一些朝气和单纯的年轻程序员群体,他们可能能力、经验不足,但是多数追求上进,至少还有些热情,当然成本也相对较低,这些可能是现在软件公司应该重视的资源。
做软件开发要培训团队,就我的认识来讲,培训那些初出校门的年轻人其实是建立基干团队的最佳途径。当初戚继光训练戚家军时,最反感的就是老兵油子,宁可从头招募培训农民、矿工等良家子弟,也不要那些颇有些实战经验的老兵。
一般而言,在中国,学而优则仕,同样在商业环境里也是技而优则仕,做官是每个人的终极出路。程序员的职业发展肯定是不能体现在程序员岗位上。发展几年,如果有一些业绩了,肯定会转行,或者做管理,或者做咨询,或者干脆去做销售,优秀人才的人生追求在客观上会不断地削弱优秀的资深程序员的群体。这是国民性造成的,也是行业待遇体制的原因。虽然很多欧美公司都在宣扬一种老程序员的文化,但是程序员毕竟不是科学家,科学家越老越值钱,而程序员则是和女人相似,越老越没有人要:老的科学家是国宝,老的女人这里就不说了,而老的程序员几乎与老的女人有的一拼。这就是中国的文化环境。少数几个欧美公司的老程序员文化,最终只能让国内那些老程序员做冤大头。
所以,在国内,程序员团队的组建只能依托于年轻的群体,要能够形成年轻程序员源源不断的资源梯队。到了30岁左右,程序员就应该主动寻找发展的机遇,过了30岁还在项目组做程序员的人,就要考虑自己的职业生涯的风险了。一个人,在30岁或者35岁的时候,还在抱着简历求一份基层的程序员职位,本身就是一件很悲哀的事情。至少我在筛选简历的时候,对30岁以上的程序员是有所保留的,尤其那些在简历中动辄要高价的人。其实,在公司里,超过一定薪酬的人是必须找猎头或者熟人推荐的,行业中几乎没有公司会在公共渠道获得的简历中寻找中高级的人员的。
鉴于此,回到我们要讨论的专题,我们要实现敏捷。按照道理来讲,敏捷最关键的基础是程序员,而程序员资源应该是一些30岁左右的人群。但是在国内这个人群又恰恰是相对平庸或者是打工油子的那一群人。呜呼,在这样的基础上进行XP,实施敏捷,谬矣。所以,现在很多公司的敏捷模式实际上是要检讨的。
目前,我们能够利用的只能是一些没有太多经验,但是还有一些朝气的人,这是我们真正可以利用的资源,我们要在他们的基础上开始敏捷。OK,相信很多公司都在探索,我们也在探索。
既然如此,那就让真正优秀的人发挥作用吧。
每个软件项目,基本的规律是必须有一个象毛主席那样的指路人,这是“先知”,一眼可以看到20年后。先知们会把项目的需求、设计、架构、程序、团队、计划和后期的扩展,全部了然于胸,清清楚楚。如果这种前提存在,我相信,至少项目很少会走弯路了,而敏捷也不是梦了。另外,Thoughtwork的面试也不会那么辛苦了。比较一下,一个软件公司是分散财力养一大堆高级程序员,还是集中财力养几个优秀的业务分析师、系统架构师,哪种模式更容易管理,哪个模式风险更小,我想答案是相当明确的。
事实上,XP走的是群众路线,靠程序员的能力来应对客户的需求,调整软件产品的功能,交付合格的产品。但是,但是就像上面讲的,在国内的环境下,这种群众群体是不存在的,而且这个人群的职业素养也是令人不安的。而另一种方式是先知路线,靠的是毛主席式的指路明灯,洞察一切,给整个团队做导师,引导大家在正确的时间,用正确的方法,做正确的事情。这种模式可以依托目前国内的群众环境来完成。只要路线对了头,没有敏捷也会有敏捷。路线一旦掌握群众,群众就可以搞场运动,创造历史了。
这种先知模式产生的敏捷开发方法,其根本是对方案咨询能力的考验。其实,在一个团体里,当优秀的程序员转变成为管理者或者中高端的技术领导者,一定会面临一个问题:就是他们的知识如何在更高的层次上进行放大,转换成为更大的商业价值。而敏捷模式提供了一根杠杆,让优秀程序员沉淀的知识,通过方案能力来撬动巨大的商业回报。
这是一种软件业务的商业模式,群众可以在先知的指导下迅速接近软件的目标,交付符合客户需求的产品。一个软件公司必须有几个先知,否则几十个甚至数百人的团队,茫茫然地摸索,能够开发出高质量的产品,才是奇怪呢。我们都知道做软件最难的不是如何做,而是做什么,这就是先知路线的基础。
虽然书本上有很多软件方法,指导我们分析、设计、开发产品,但是这些方法在经验目前显得多么地苍白,现实实在是太复杂了。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/190707/viewspace-613139/ ,如需转载,请注明出处,否则将追究法律责任。