基本情况(截止2021-12-08):
开发环境:VS2010工具集
代码量(.c;.h;.cpp,不含第三方库和基础库):285万行
工程个数(不含第三方库和基础库):200个
SVN分支数:107个
让人诟病的问题:
- VS2010工具集对C++11不够友好。但由于个别项目依赖了旧版本lib,一直没有升级工具集。
- 编译环境搭建过于复杂。以至于同事们都只能从官网下载之前的安装包,解压后覆盖到生成目录,才能保证编译出的程序能正常启动。【离谱】
- 基础库管理混乱。不同项目依赖的基础库略有不同,但脚本工具都将其从svn拉取到同一位置,导致同一台电脑无法同时参与两个项目的开发。
- 代码冗余度极高。预计285万行代码中有1/100之一是重复代码。比如下图一个封装好的控件可能被复制到各个工程下进行使用。
- 代码规范堪称肆无忌惮。从图中可看到注释只占代码的1/40。从其他图中也可以看到工程命名极为随意,硬编码随处可见。
- 数据存取令人苦不堪言。采用了NoSql的思想,但字段并非json,而是风格因人而异的各种特殊字符作为字段分割,例如'@','★','◎'等。
- 版本控制技术落后且混乱。多达107个分支,但仅有不超过3个为活跃分支,且每次分支合并都会丢弃之前的日志。
- 没有代码审核机制。每个人都可以随意提交代码,没有统一的命名规范,注释规范,提交日志规范。对于一个以计算和建模为核心的软件,维护起来难度可想而知。
- 部门只有2个测试,2个产品(其中1个是测试兼任),从来没有需求评审环节,导致总是程序做着做着发现存在需求不和逻辑,改了又做做了又改。
- 代码历史长达15年,期间没有经历过真正意义上的重构,解决方案中的200个工程,存在多个不再使用的工程,有相当一部分工程是基于其他工程代码复制过来的。
以上这些问题对一个技术团队来说已经很严重了,然而这还不是我们团队面临的最大问题。我们最大的问题在于研发策略,领导们总是试图用最少的人力,开发出最勉强能用的软件,从而使团队能够不亏损。
这是什么策略?分明就是不思进取,坐以待毙!
可曾想竞争对手与我们同一时期创业,20年的发展,对手早已是市值800亿的上市公司,而我们最多也就预估20亿。7个开发干着至少需要20个人才能干的活,而我们还自我感觉良好。代码在几款产品中搬来搬去,面目全非,维护成本早已远远超过开发成本,领导却很淡定……
唉……
记得曾经刚入职时,hr和总监告诉我公司不缺钱,将会在2年内上市。
但这样的研发实在让人堪忧……