企业没有技术能力,慎买源代码
在一些数字化项目商务谈判阶段,是否提供源代码可以说是甲乙双方的重点博弈,提供源代码意味着该软件供应商比竞争对手略胜一筹,增加了胜出的希望,不提供基本上意味着被出局。因为源代码对于一些甲方企业来说是“香饽饽”一般的存在,那么企业为什么这么钟情于源代码?
大部分的原因还是出于技术方面,企业不希望被软件公司技术绑架,或者说是被软件公司的技术壁垒搞怕了,源代码在别人手中,企业做接口要钱,少许功能改动要钱,加多少,软件公司说了算!从商业角度讲这些费用无可厚非,但对于不懂技术的业务领导来说,需求的变动时不时的加钱让其烦不胜烦,因此企业领导更希望将源代码抓在自己手工,以后业务需求变更了,可以不用找软件公司,自己就可以做修改,省了“二开的费用”,至此“一劳永逸”。
而对于一些不差钱的企业来说要供应商提供源代码其实也是另做他用,除了以后在技术上的方便外,还是为了作为自身“能力与业绩”的体现,比如某企业领导就毫不避讳的向软件供应商说:购买你们的源码就是为了日后向上级主管部门说这是我们自己开发的产品!就是为了“邀功”获取更多的经费支持。而一些企业内部的数科公司,购买源代码就是为了节省自身管理与软件开发成本,会将购买来的源代码去申请软件著作权,以体现所谓的表面“实力”,当然这必须是在与供应商提前协商的情况下进行。
那么企业购买了源代码是否真的如想象中的一般美好呢?
不可否认企业拥有源代码在后期系统的运维效率方面会大大提升,不会被一些拉胯的软件厂家服务拖后腿,但前提是:你得看得懂代码!说个真实的案例吧,某企业采购系统时一同购买了源代码,但问题时该企业当时只有一名软件开发人员,只负责一些简单接口的对接,但企业领导却认为既然懂开发,那么后续功能调整自然也不在话下,结果半年后系统功能需要调整了,该开发人员却看不懂代码结构不敢修改,然后一个月后该开发人员顶不住压力离职了,结果企业花重金购买的源代码成为了硬盘里的一堆字母!所以企业没有技术能力,购买再多的源代码也不过是占用硬盘空间的英文字母而已!
从以上案例我们不难看出得到系统的源代码看起来是想象中的美好,但也存在着诸多风险:
第一,代码缺乏注释、变量命名混乱,会导致代码可读性差,估计除了原开发者能看懂之外没有其他人可以看懂,这就大大增加了后期的开发难度与成本,随着开发人员的更替,该代码随时会变成一堆没用的字符;
第二,采用过时技术栈,与企业现有技术生态不兼容,后期能不能修改都是问题;
第三,太多的不稳定因素,由于代码质量问题在后期修改过程中,修改一处引发多处连锁bug,大大增加了后期的运维难度;
第四,除了系统本身的稳定性问题外,最关键的是数据安全问题,比如代码存在未修复的安全漏洞或供应商预留“后门”可能导致数据泄露或系统被控制;
第五,代码交付完整性的问题,比如供应商仅提供部分核心模块代码,但关键功能仍为二进制文件,无法修改。
所以企业购买源代码并非“万能钥匙”,其风险与价值并存,企业除了要考虑技术风险外,同时不要忽略后期的运维成本,这直接影响着数字化的价值体现。比如源代码架构复杂(如单体应用无分层设计),修改一个功能需牵动整个系统,这就会导致后期开发周期与成本直线上升,可能比购买一套系统的价格还高,如此源代码是否还有购买的需要呢?更重要的是大部分传统企业无专业的软件开发管理能力,甚至一些企业内部的数科公司代码管理也是一塌糊涂,更不会说花很长的时间去审核软件公司交付的源代码了,同时人员更替是源代码管理最大的风险,一旦有与源代码管理或熟知其结构的技术人员离职,那么源代码也就即将无用。比如某企业信息部门负责人吐槽说:开发部门被优化了,留下了一堆看不懂的代码,有自己开发的,也有找第三方购买的源代码,找专业软件公司接手都摇头,表示代码很难看懂,源码存在何处都不知道,且技术栈老旧,现有的工具都没法去编译代码,建议还是重构吧,这样还节省成本。看到如此结果,我想每个人心里估计都在万马奔腾。
企业向软件供应商购买源代码,最终目标是将源代码从“供应商交付物” 转化为企业可自主掌控的技术资产,在降低对外部依赖的同时,最大化代码的二次开发价值。但在购买前还是需要做认真的价值评估,对于战略级系统,源代码是长期保障;对于标准化工具,需谨慎评估成本收益。关键在于通过合同条款和技术规划,平衡 “自主可控” 与 “合作效率” 的关系。如果企业没源代码的评审与管理能力,建议不要买,不然源代码很快就会由想象中的“香饽饽”变成一坨任何人都嫌弃的狗屎!
本文来自微信公众号 “湘江数评”(ID:benpaoshuzi),作者:老杨,36氪经授权发布。