最近我亲身经历的一件事,不吐不快。
公司斥巨资买了F开头企业的商业软件,授权签了,功能齐全,安全有保障,售后也跟得上。
结果某位铁憨憨一看,"这玩意儿我也能做"。拉了个开源项目就开始二开。折腾了大几年,人力搭进去不少,做出来的东西跟商业版一比,功能缺失且不论,安全毫无保障。
最绝的事情来了。这位憨憨还特自豪,汇报的时候拉踩就不说了,还扯什么"我们这个比商业的好,安全有保障"。
安全?有保障?大哥,你好歹扯个灵活性我都认了,你扯啥安全?还保障,先过了审计再说吧。
这事也不是个例。只要在企业IT圈混过几年,一定见过。授权都买了,不用,偏要自己搞。搞完了还觉得自己的好。为啥?我查找了资料分析了些案例总结如下:
一、NIH综合症
心理学上有个名词,叫NIH综合症(Not Invented Here Syndrome),"非我所创综合症"。
人天然排斥不是自己发明的东西。别人做的,总觉得不行,不够好,不放心。自己做的,哪怕漏洞百出,也觉得"我理解每一行代码,我心里有底"。
这跟禀赋效应一个道理。同样的杯子,自己"拥有"的就觉得更值钱。程序员对代码更是如此,代码即自我,你说他的代码不如商业产品,他听到的不是技术批评,是人身攻击。
所以你跟他讲ROI、讲安全审计,他根本听不进去。他脑子里就一句话:我的东西我信得过。

二、达克效应
达克效应,简单说:能力越低的人,越容易高估自己。
康奈尔大学Dunning和Kruger在1999年就证实了这一观点。成绩排在倒数25%的学生,普遍认为自己水平在中等偏上。
这跟那个说"我也能做"的铁憨憨是一个路子。
他知道怎么搭个开源项目跑起来,知道怎么改改界面加点功能,但他不知道商业软件背后几十人甚至几百人打磨了什么:异常处理、性能调优、安全加固、合规适配、灾备方案……
他不知道自己不知道。这才是最可怕的。
就像你学会了换灯泡,就觉得自己能装修整栋楼。不是你不行,是你根本不知道装修还涉及水电、承重、消防。

三、组织层面的利益驱动
重复造轮子不光是程序员一厢情愿,背后有组织利益推手。
麦肯锡的研究指出过大企业里的创新悖论:规模越大越该享受创新规模效应,但现实中各部门各自为战,信息不通,经常为同一个问题重复投入。
利益驱动。技术团队用商业软件就是"成本中心",自己搞一套就是"项目",有人头,有预算,有话语权。哪个leader愿意把自己从"做项目"变成"用产品"?
考核机制。很多公司考核看的是"产出了多少代码""上线了多少系统",而不是"业务问题解决了没有"。这种考核天然鼓励造轮子。
说白了,不是不知道商业方案更好,是知道了也要装不知道。承认别人更好,意味着自己没价值。保住项目就是保住饭碗。
那真实账怎么算?
授权费已经付了。商业软件买都买了,不用,再花一拨人去搞二开,纯属人力成本的浪费!

有企业算过,开源二开初期投入38万,每年追加15万,配2个运维,年人力成本54万以上,故障损失另算。一年综合隐性成本超过80万。而直接用已经买了授权的商业软件?0额外开发成本,1个运维就够了。
安全呢?开源项目你改了源码,安全补丁跟不跟?跟不上就留漏洞,跟上了二开代码跟新版本又不兼容。商业软件的安全更新是厂商的事,开源二开的安全更新是你自己的事。生产真出了事儿,开源只能团队自己兜底,商业软件人家厂商给你兜底。
审计合规更不用说了。商业软件操作日志、权限管理、审计报告开箱即用。你自己搞的,这些功能要么没有,要么"做了但没完全做"。审计一来,现补都来不及。
当然,也不是所有二开都没意义。有些业务场景确实很特殊,商业软件覆盖不了,那自研合理。但大多数企业的需求,商业软件其实都能覆盖,只是你不愿意承认罢了。
总的来说一句话:已经买了商业软件还要二开,不是技术选择,是认知偏差加利益绑定。花了授权费又搭人力,安全审计两不顾,图啥?图个"我做的,我心里有底"的心理安慰罢了。
个人观点,仅供参考。盼经过的大神留下宝贵意见。
夜雨聆风