走出软件泥潭 第二回 绝处逢生
做这个行业的,并不是只有吴俊芳一个,而凡是做这行的都面临同样的痛苦。ObjectDream公司的赵为民,也为这个苦恼的要命。而他知道自己手下并没有精兵强将,他只有自己一个人拼命地抽烟,然而抽烟并不能帮助他找到合适的办法解决这个问题。漫天的飞雪更加重了他这份愁楚。他想找个地方静静——其实他的办公室里已经很安静了。他也想找个地方去喝个酩酊大醉,但是他已经醉了好几次了。这次他赔本接了一个项目,无异于饮鸩止渴。可是,接项目赔钱,不接项目赔得更多,照这么下去,用不了多久就得关门大吉,到时候自己就会离开这个行业了,听说楼上公司已经解散了,老板改做运输了——现在物流不是很火吗?要不然我也改行吧,做餐饮吧。软件园这么多人,送快餐一定很赚钱。已经想了很久了,可是还是下不了决心。
狂风夹杂着飞雪,这寒冷的天也让他心里更增一份寒意。
“叮铃铃铃…”,电话响了。赵为民抄起了手机,有气无力的说,“喂”。
“为民,是我啊,最近有空吗?”
“你呀!多少年没联系啦,你怎么样啊?怎么想起来给我打电话呢?”
“我最近要回家办些事,你有空吗?咱们一起吃个饭?”
“好啊,好啊,你哪天回来?”
“明天。”
“好,明天晚上,我安排,不见不散。”
“哎,初阳,你这些年都跑到哪里去了。结婚了没?有没有小孩儿?干什么行业啊?赚多少钱啊?”
“你看你看,你也太着急了。慢慢聊,时间长着呢。”
“呵呵,你看我也真是太着急了。太想你了,咱们得有15年没见了。”
“是啊,15年,一晃就过去了。高中毕业就没见了。怎么样?最近好吗?”初阳还没回答赵为民的问题,倒又问了一个问题。
“我好什么啊。当初要不是非要创业,开什么公司。现在也不至于这么愁了。”
“你遇上什么事儿了?”
“我啊,你不知道吧,我开了个软件公司,专门做对日外包。你知道,现在经济不景气,汇率又下降了,人工成本上涨,这些问题压得整个行业都在恶性竞争,主要都靠杀价。现在我已经开出比竞争对手低15%的价格了。虽然抢了一单来,但是这么下去,早晚得关门歇业,我都想转行了。”赵为民说到这里,不无苦恼地举起酒杯,一饮而尽。
“你看啊,”赵为民继续倒苦水,“客户对我的质量不满意,说要提高质量水平,可同时要求我降价,而交货期却还恨不得缩短。哪有这样的。这不是要命吗?他们太狠了。不过行业就是恶性竞争,全让客户占便宜了。”
“哦,这个啊,我当啥事儿了。这事儿好办。”初阳抿了一口酒,放下杯子。“我问你几个问题啊,你们的详细设计文档,交付以后有多少和代码是一致的。”
“嗯…基本不一致。”赵为民很肯定的回答。
“那你干嘛要写详细设计?”
“客户要啊。”
“那要是你有了代码,再写详细设计简单还是什么也没有写详细设计简单?”
“什么?你什么意思?”
“这么说吧,凭空写详细设计,你需要什么能力的人。如果照着写好了的代码写详细设计,你需要什么水平的人?”
“那照着代码写肯定需要的水平相对低一些。可是不写设计就写代码的人水平要求更高。”
“嗯,来,走一个。”初阳端起酒杯跟赵为民碰了一个。“这么多年了,跟你说话还是这么痛快,不用费唇舌。我再问你一个问题啊,你了解建筑业吗?”
“不怎么了解,你想问什么?”
“你有没有看过盖大楼的,盖到顶的时候发现质量问题了,把大楼推倒重盖?”
“这当然没有了。”
“那为什么软件业要这么做呢?”
“你是说…我们做错了?”
“可以这么说吧,我就说嘛,跟你说话真痛快,不费劲儿。来,再走一个。”初阳又端起酒杯跟赵为民干了一杯。
“再问你一个问题啊,你说程序员的水平和工作年限有关系吗?”
“嗯,有一定关系吧?”
“这回你可真的错了。程序员不是红酒,不是年份越高就越好。”
“那应该怎么评价程序员呢?”
“这个问题可以以后再谈。我说这个是想说,你还不知道如何评价软件代码质量。”
“这个我怎么不知道,做了这么多年了,基本常识还是有的,比如:我们用千行代码缺陷率。”
“停!一张嘴就说错话了。你刚才说的是千行代码缺陷率是吧?”
“是啊,怎么?”
“没什么,我就是想确认一下我没听错。千行代码缺陷率怎么计算?”
“缺陷个数比上代码行数。”
“好了,这个公式暗示我们什么?如果我们没有办法减少缺陷个数,那我就增加代码行数,那就可以降低这个比率了。”
“那又有什么问题呢?”
“程序员为了增加代码行数会怎么做呢?常见的手法就是复制粘贴。”
“这也没什么吧?”
“你当老板时间久了,很久不碰技术了吧?”
“技术一通百通,基本很类似,没什么的吧。”
“那我敢打赌你没听过DRY原则。”
“别讲英文,我作对日的。”
“DRY原则就是Don’t Repeat Yourself。就是别重复你自己的意思。如果用复制粘贴,你会把问题也复制一份,如果发生了需求变更或者Bug,那么你就要改n份,万一少改了一份,就会多一个Bug。”
“可是我们这么多年一直都是这么做的,也没有什么问题啊。”
“哦,没有问题。那是我多嘴了,喝酒。”初阳又端起了酒杯。
干了这杯酒,赵为民放下了酒杯,说,“看来你说的这个问题好像不是个小问题。”
“是啊,不然你就不会这么痛苦了。再回头说你刚才提到的一个核心问题,你刚才说客户从质量、成本、交货期上来压你,你有些受不了了,这是为什么呢?”
“你看啊,提高质量,就得增加成本,要不就得延长交货期;要是缩减成本,就得在时间上有所减少,人手上减少,要不就得降低质量;可要想缩短交货期,在质量不降低的情况下,只能增加成本。总之,这三个,最多能兼顾两个。”
“你看现在街上还有多少人打的油纸伞?”
“都用钢骨伞了,油纸伞?那是白娘子和许仙。你别岔开话题啊。”
“为什么古代的油纸伞到现在只能成为景区的纪念品呢?”
“嗯,生产成本太高了吧?”
“是啊,油纸伞是手工制造的,而钢骨伞是工厂加工的。所以,钢骨伞在质量成本交货期上都占有绝对优势。所以,换一种生产方式,你可以在这三方面都取得优势。同样的例子不胜枚举。这就是现代化工业带来的好处。”
“你说的有道理,可是软件业已经发展到了很精细化的程度了,我们已经对过程跟踪的非常仔细了,没办法改进了。”
“嗯,下周一我要去一家工厂有点事儿,你有空吗?”
“干啥?”
“跟我一起去工厂参观参观。”
“行啊,这么多年没见了。就当陪你了。无所谓。”
“我可不是叫你陪我玩的。这次参观很重要。嗯,先问问你,你了解现代化工厂吗?”
“这个不大了解,不就是生产线吗?”
“嗯,生产线坏了怎么办?”
“那就维修呗。”
“嗯,要是订单堆积如山,维修生产线需要好几天呢?”
“嗯,那就多几条生产线。”
“一条生产线多少钱?”
“嗯。那你说怎么办?”
“先不告诉你,给你讲个故事。你知道丰田汽车吗?”
“这谁不知道!”
“丰田汽车早先在产能较小,资金较少的情况下起家,如何战胜美国的大型汽车工厂的呢?”
“愿闻其详。”
“丰田汽车从其生产销售的整个过程上开始反思,去掉了那些不产生价值的过程。从而降低了生产升本,达到了按订单生产的目的。丰田就是靠这套方法战胜竞争对手的。而这套方法叫做‘精益生产’。而敏捷开发和精益生产之间有千丝万缕的关系。”
“精益生产?敏捷开发?这都是什么东西?”
“嗯,你回头有空上网搜搜吧。还有,那个找出浪费的工具叫做价值流图。下周带你去参观工厂。他山之石,可以攻玉。再干一个。”