不得不说,很多明明顺理成章的事,但到了软件开发这里,就变得很荒诞。比如:
让一个土木工程师去修建一座跨河大桥来连接河两边的道路时,工程师会非常清楚的知道道路跨河的精确地理坐标位置,行驶的车辆在数年里也不会发生重大的改变。桥梁工程师只需要按照之前已经被上千次的验证过的建筑工艺把河两边的路连接到一起。
但对于软件系统,因为技术或业务发生了变化,在建设过程中(在所有需求和设计文档完全完成后),需求需要做重大修改的情况并不罕见。如果把这种情况放到修桥的事情上,相当于当桥的地基打好后,再把桥的搭建位置往河的下游移6公里。

● 再比如程序员夜猫子的习惯,想想如果建筑工人也是昼伏夜出会是什么景象?再比如“结对编程”,如果让建筑工人结对砌砖会是什么效果?不仅不会提高速度和质量,而且很有可能会被开除。
● 还有更令荒诞的“持续交付(即开发一块,给用户交付一块)”,这是什么鬼?如果盖房子也“持续交付”,那么没有屋顶的房子谁会去住?
然而,很多软件公司不懂的事还有很多。比如:
1.技术债务会拖累项目
工作在一个满是技术债务的代码库上,就像是在烂泥堆中奔跑。起初,在泥浆还不是很厚的时候,勉勉强强走过去还没问题,但当有个 1 米深的时候,你就寸步难行了。
通常,管理人员和其他非技术性人员在推动生产力的时候,宁愿牺牲质量——就像杀掉了下金蛋的鹅一样——从而招致技术债务。
当然,通过绞拧这只鹅的脖子,威胁它,你或许暂时可以得到更多的蛋,但用不了多少时间,死去的鹅就永远不会再产蛋了。
2.预估大多都是废话
软件开发中的预估大多是废话。
这一点,你知我知,甚至团队可怜的项目经理也知——当然,也有可能他不知道,但是他应该知道。
预估软件开发中的任何事情都是非常非常困难的,因为各种意外会让你防不胜防。
每一个软件项目,每一项任务都是新的。每次你坐下来写代码,总有一些意想不到的狗屎事情发生。
然而,我们依然情不自禁地会去玩这个“预估”游戏。
● “谁谁谁,你建立客户登录页面需要多久?”
“哦……呃……”随便想了个时间,“2 天……哦等等——”忘了 CYA 加倍, “要 4 天。”
● “好吧,那我给你 5 天”。
“好,那就 5 天。”
还有一个很好的解决办法是把任务分解到足够小的程度,将所有的预估控制在 4 小时以内。
经验表明,半天时间内的预估,通常能让你体面地完成工作。超过这个点,那基本就是废话了。
3.今天布置下去,明天马上要看效果
这只能说不管什么事,都有一个过程,开发更是如此。
但不幸的是,很多老板不明白这个道理,恨不得今天刚接了一个项目,明天就能做出来。
同样不幸的是,大多数程序员,当被告知要快点完成任务的时候,往往会选择走捷径,通过牺牲质量来加快进程。
更不幸的是,这样的“代码快手”经常被当作英雄称赞,因为他们能够更快地完成任务,因为他们从不推迟或要求更多的时间。
然而,这些“代码快手”往往会将代码写得乱七八糟,给其他人留下一连串的技术债务。
4.有的开发人员实际上是在帮倒忙
有一个事实是,我们都碰到过那种对团队弊大于利的程序员。
不同的程序员,他们的软件开发领域能力和技能水平有着巨大的差异。
事实上,有些软件开发人员糟糕到他们在工作中写的每行代码都是在浪费公司的时间和资源。
这种类型的开发人员也许应该付钱给公司,而不是公司付给他钱。
比如,有些开发人员只会干些“点金成屎”的蠢事,因为所有他接触的东西都变成了没用的“狗屎”。
所以,总结一句话:软件开发就如同女人生孩子,一个女人十个月生下一个孩子,但是十个女人不能一个月生下一个孩子。说到底,这是个技术活,它需要时间。
有些人可能会说:但老板根本不懂技术啊,更不会明白这些的!
怎么办?
很简单,把这篇文章发到朋友圈去,他自然就会看见!
(来源:JEPaaS云平台)