软件开发中的轮回之苦
吴旻
泰岩网络工作室
佛说:软件开发之苦,缘于不能永生。轮回是众难之源。
Brooks说:没有银弹。
我说:超脱、彼岸从来就没有出现过,信什么哥都没用。
(一)
“先污染,后治理”是落后地区为了发展经济而经常使用的办法。对于急于显示政绩的官员们来说,如果在他的任期内污染还没达到不可忍受的地步,那就污染好了。要不要治理,如何治理,下一任官员会根据情况来处理的。
不幸的是,软件开发中也这么干的,竟然是绝大多数。为什么一定要先“污染”呢?大多数原因,或是想摸着石头过河,却没想到河水越摸越深;或是想眼下先能解决哪些算哪些,包袱和问题将来再说,却没想到将来对这些问题的处理成本更是高得离谱。
实际上我自己接手了不知有多少这样的项目或程序。深刻的反思后让我觉得,软件开发其实是一项复杂的系统工程,砌个狗窝确实不难,但建一幢高楼大厦就必须深思熟虑!基本上这类事情都是因为开始的时候想得太少,而到了后来,事情就会发展成谁也无法掌控的局面。
(二)
技术不是问题,需求才是关键。项目相关方的利益过于复杂,导致需求不明确,而不是技术无法实现。这一点在过去的ERP实现中尤其突出,不同科室的利益冲突的在技术人员看来就是需求不能确定。如果是一个数字,它即可以大于0,也可以小于0,但它就是不能在大于0 的同时又小于0。软件实施解决不了利益冲突。
前几天我也碰到过类似这样的需求不明确的情况。有人来找我谈,说是某些为0的数据应该滤掉,某些为0的数据则不应该滤掉。我对他讲,这个在技术上不存在任何问题,但规则应该是需求方给出。他回答说,那好,我去找项目经理。然后项目经理就再没找过我。在我看来,我如果按他说的做,不一定什么时候又会跳出一个人来说我做的根本不对。
(三)
大领导重视什么,什么才能做好。这句话是业内同行们的血泪总结。两个级别对等的部门还只是会吵架,多个部门之间简直就是在扯皮。要么事情没着落,要么越做越走样。某些中层干部为了眼前的任期利益,会大量地把问题留给将来。如果很多方案都是临时的,但未来根本就不会整理时,“破窗理论”就是对项目的最好总结。
有大领导在的好处是,他能够协调各方立场,平衡各方利益,从而可以使项目正常推进。工作一旦走上了正轨,后面的事情大多都好解决了。
(四)
理性的计算机,任性的程序员。前两天面试了一个程序员,我说:C里面有指针,C++里面有引用。对方马上接道:C里面也可以有引用。我的头当时就大了,不是说不能答错,而是说对方当时自信满满的态度,根本就是在向我暗示其有多聪明和多专业。我发现某些技术人员对自己的一知半解很自负,甚至对自己根本不了解的地方,也敢说话。技术人员应该很聪明,但技术人员的目的不是为了证明自己比别人更聪明。
前几天我让一个程序员完成一个任务,后来我问他对那个任务有什么困难,结果他转给我一个BUG,并说问题很严重。我仔细看了半天,发现那个BUG和他的工作根本没有任何联系。我问:这个BUG和这个任务没有任何关系呀。他说,是呀。我说,那你转给我干什么?他不做声了。
我后来想了很久,估计他当时仅仅是想迎合一下我,而根本还没有认真看那个BUG是什么呢。