软件开发团队的脓包(1)皇帝的新装

潘加宇

在严谨建模思维的扫视之下,软件开发团队中很多有意无意遮掩的脓包会被强制露出。

接下来我会总结一些常见的脓包,供大家参考。

脓包(1)皇帝的新装

emperorclothes.png

图片来自Wikipedia

阿Q家徒四壁,连衣服都没得穿,觉得很丢脸。这时,有人和阿Q说,其实你这不叫没衣服穿,这是一种时髦,你穿的是“皇帝的新装”。像溺水的人抓住救命稻草一样,阿Q立刻被这个说法洗脑,以后都和别人说自己穿的是“皇帝的新装”,遮掩没有衣服穿的事实。

在我刚开始为软件组织提供服务时,常听到软件组织的负责人和我介绍他们的团队“我们现在用的不是面向对象和UML,用的是结构化方法”。我一开始信以为真,认为如果能做到用数据流等建模元素从组织级、系统级到模块级层层分解也不错啊,后来发现,绝大多数情况下负责人所说的“结构化方法”其实就是随意的分解,也就是没有方法。

后来,这个场景升级了。软件组织的负责人和我介绍他们的团队“我们现在采用的是敏捷开发方法”,我听到这里有时会忍不住咧开嘴笑看着对方,对方也意识到我表情的意思,连忙解释“我们自己以为是敏捷开发方法”。

你瞧,如果说团队“没有方法”,那很没面子,但抓住“敏捷”这根救命稻草,宣称我用的是“敏捷”,脸上就有了光彩。

*******

这还不是最关键的。

我们经常会自嘲。比如没有车走路来的,会自嘲说“我坐的是11路车”,没上过大学,会自嘲说“我上的是社会大学”。说这些话的时候,说话人很可能知道是在自嘲。

而有的软件开发团队说类似话语的时候,并不是在自嘲,是信以为真哪!

*******

如果你想到类似的例子,欢迎在本文留言。

*******

脓包(2)口号党

hell.png

如果评价三种做事情的方式:有口号有方法、有口号无方法、无口号无方法,哪一种最坏?

可能有的人会认为无口号无方法最坏,其实不然,无口号无方法地呆在原地,可能会慢慢衰落,但不是最坏的。历史上各种最坏的大悲剧往往和“有口号无方法”有关——最坏的事是“有口号无方法”的“好人”做的。

“坏人”知道自己做的是坏事,会暗自收敛,事后会内疚,甚至做一些善事来弥补以求心安。比如,强盗打家劫舍抢了一千万,可能会拿出五十万来“济贫”,剩下九百五十万自己爽。这样,他心里就觉得自己是“侠盗”。

而“好人”认为自己是做好事,既然做好事,那出手就不要有顾虑了,做得越绝越好,所以可能会做得很极端。如果有口号无方法,大悲剧就发生了。希特勒把那么多人送去做肥皂,他也没觉得有啥不好意思,因为这是为了建设更美好的社会嘛。

hitler.png

我们切换到软件开发领域。

互联网公司的研发人员喊口号:我们只做最重要的需求,尽快把产品投放市场。

问题来了:怎么才能知道哪个需求最重要?拍脑袋?抓阄?"投放市场"就有人要?莫非你爸是李刚?怎样才能"尽快"呢?

没有掌握相应的技能,多半是一次又一次的惨烈碰壁(可以自我安慰为“试错”),所谓的"快"也只是手忙脚乱的表面的"快",给自己一个心理安慰"我努力了"而已。在训练有素的对手面前,根本就是一个莽夫在胡乱出招,到处都是漏洞,只要对手乐意,分分钟取你性命。

那么,就算没方法,喊喊口号总比不喊要好吧?很多情况下确实如此。口号先行,慢慢再改善方法。

但是,我们必须注意到“有口号无方法”状况的危险:

危险一:无意识的自我陶醉

有的人喊完“最重要的需求”、“砍掉80%功能只留20%”之后,就满足了,陶醉了,觉得自己太牛×了,这么厉害的道理都懂,足矣,其他都是小意思了,然后并不认真思考如何才能真正能够做到,连自己以前采用的一些虽然不是很好但还过得去的做法也懒得做了。

危险二、有意识的胡作非为

有心人会挑一些褒义词作为口号,例如“敏捷”,再辅以煽动性很强的词语,例如“无敌”、“硝烟”、“颠覆”。褒义词作为口号声明了一个美好的、不容否定目标,而手段声明为无需思考只需要冲冲冲,更是正中某些不喜欢思考或者没有能力思考的开发人员的下怀。

然后,在口号的遮掩下胡作非为。

这是最坏的情况。因为口号是正确的,这些胡作非为就很难阻挡,而且后果也不好追责,毕竟“初衷是好的嘛”。

我印象最深的是,一位女生天真无邪地问我,“老师,希望敏捷一些难道不好吗?”——我还能怎么说,我能说不好吗。这和“爱国难道不好吗”、“环保难道不好吗”一样的。(在此处提到“女生”,没有歧视的意思,只是说到这里,让我想个例子,我最容易想起来的就是这个。)

接下来是

脓包(3)废话迷

脓包(4)发明家

weixinpanjiayu2.jpg