标签:比较 水平 系统 宏定义 一个 没有 div mil ext
进了公司半年,老大离职后,我被指定接手开发团队,压力有点大。刚开始这个项目算是失败了,客户都不是很满意。我总结了一下问题,杂七杂八的,总结起来就是
- 由于软件需要根据不同的客户来进行扩展子功能,没有设计好框架导致扩展性不够。
之前的开发团队是直接把所有的功能都塞进了一个软件里面。给不同的客户的软件只是把客户端上的界面也隐藏掉(通过宏定义或者配置文件)。
这个也不是只有在这个公司才遇见,在上家公司就有了。我感觉这个应该是大部分企业的通病,软件的核心功能是针对于该行业的所有用户的,但是却需要针对不同的用户进行定制开发修改
- 开发人员水平不够。各种传参使用值传递,强转都是乱强转,崩溃都不知道崩溃在哪里。数组各种越界,指针各种野指针,在遍历list的时候,各种这种 std::list<int> copyed_list = src_list 这一种代码,qt的水平也是半桶水。一份代码写个四遍也很正常
我浏览了一下代码,软件是有进行简单的分层和功能抽象的,后面越来越失控,有几点原因
- 开发人员的流动和功能的迭代,产品没有规划好
- 赶时间和进度
- 开发人员的随意,毕竟项目做了两年多也没成果,很多人已经不耐烦了,离职的离职,怠工的怠工,还有人都是在做自己的事情
- 开发人员的水平所限,这个是中小公司的问题,毕竟预算就那些,也没什么名气,能招到人就不错了。
到我接手软件组的时候,整个系统基本上没有什么框架可言了,团队也已经比较散了。所以在开发的时候,不能仅仅从技术上考虑,还需要考虑到开发人员的心理状况以及开发水平。
开始的时候老板跟我说即使把整个软件推翻重写也没问题,该把人换掉就换掉。我想了下,还是想在原有的软件上开发下去。当时考虑的主要还是公司预算的问题。
- 在我接手前,项目已经做了四年多了,换了好几任的技术主管,基础已经都有了
- 已经错失了最佳的发展时机了,市场已经越来越小了。不能再慢了
- 小公司,没有那么多预算,从成立软件部开始一直在亏钱,我还是挺希望部门能在我手上开始给公司盈利的。这个是很重要的一个原因
- 我对自己比较有信心,因为这些问题我在第一家公司都有遇到过,都在着手想解决方案,想要试一下是否可行
软件开发方面:
- 建立编程规范,比如将所有的强转改成dynamic_cast,将void* 改成variant,保证类型安全。数组改成vector等等,具体在另外一篇文章里面
- 整理通用代码,优化工程结构
- 着手设计插件框架
- 自动化检查代码
- 查找所有崩溃的问题。这一点真的很吐血,C++崩溃真的很难找,用了很多工具以及修改了很多代码来查找,牺牲了好几个假期来弄这些
- 舍弃界面的细节,优先保证稳定和功能。这点争议很大,为此跟产品闹了几次矛盾。考虑到开发人员的心理,毕竟CPP程序员很不喜欢对这界面调一个像素两个像素,很多界面细节调整我都拒绝了
- 开始独立部分服务,比如图像处理服务,视频处理服务,后期往微服务方面调整。独立的原则主要有两个
- 是否吃性能
- 服务的功能是否可以做成通用,单独成一个产品,后期是否需要添加太多的功能
人员管理方面:
- 清退了做私活的人
- 一些老员工很难处理,毕竟呆了三四年,我来了半年的人也不好管,有时候我说他们,他们都不理我。但是事情还是做的,所以这些人基本就是我下发任务后就不管了。有问题来问我,没问题我偶尔催催进度,也算是得过且过了。总算没拖后腿
- 支持我的员工,就比较好办了,该怎么做就怎么做了,核心的功能也会给他们做
其他方面:
- 关于进度,刚开始压力真的很大,产品天天催进度,我自己又不喜欢加班,后来还是在没有强制施行全员996的情况下完成了任务,还是挺开心的。当然这点跟上面那些支持我的员工关系很大,他们做不完要嘛自己加班,要嘛远程解决
- 人员流失。有一个员工离职跟我讲我不重视和信任她。原因是我从不分配给她重要的事情,只是让她改BUG。我想想也对,因为她经常抱怨太麻烦,太累,所以我也不想把重要的事情给她,更多的是分配给比较积极的人。想想自己,有时候虽然会抱怨累,但是解决了还是很有成就感
- 跟产品的冲突,有时候确实不理解产品的想法,很容易陷入细节里面,导致一直改来改去,后来很多东西都被我拒绝掉了,研发团队还是不能当做产品的下属,而是要有自己的意见,否则很容易让研发团队离心,毕竟现在研发还是比较好找工作的
经历过半年总算把公司产品弄上了正轨,感觉还是挺开心的
不过这半年真的发生了很多事情,会发现一个产品真的不止是技术问题,还有销售问题,还有产品问题,还有管理问题,以前想问题太单纯了。
这半年的一些事情
标签:比较 水平 系统 宏定义 一个 没有 div mil ext
原文地址:https://www.cnblogs.com/linyilong3/p/9599293.html