本文意在尝试性总结一下传统业务软件企业在软件研发流程中可能遇到的各类问题。

0. 清单

  • 1. 公司背景
  • 2. 不同视角
    • 2.1 产品侧
    • 2.2 开发
    • 2.3 测试
    • 2.4 运维
  • 3. 最后
  • 4. 参考

1. 公司背景

  1. 传统业务软件企业。
  2. 强势的甲方,卑微的乙方。
  3. 产品项目化,需求产品化。
    a. 最终生产的软件需要进行多地区实地部署,且各个地区针对软件又有自己特定的需求。
    b. 因为进度原因最终造就打着"做产品"的口号开始,但在落地过程中针对每个地方的需求进行跟进式开发。
    c. 因为缺乏需求分析导致没有一个需求类别认定的流程,又因为监控的缺失导致无法提供充分的日志数据进行决策分析,最终只能依靠产品经理个人当时的理解进行需求归类。
    d. 因为代码分支管理的缺失造成制品包没有回退修复机制,研发之路上只能进行没有回头箭式的夺命狂奔。

2. 不同视角

2.1 产品侧
  1. 同时负责多个产品,精力被过度分散。
  2. 因业务的特殊性等原因导致对于产品需求的来源和进度几乎没有控制权。
  3. 产品采取"分区域"的方式进行销售,并有着比较长期的个性化需求更新和BUG维护的要求。
  4. 专业性缺失。大部分产品经理并未接受到专业的培训,绝大部分属于从事相关业务多年从而成为了"产品经理",细数之前的履历,有"测试转产品",“开发转产品”,“售后转产品”,“项目经理转产品”。
  5. 产品经理之间缺乏沟通,互为黑盒,很少进行信息的共享。直接结果就是除非存在联结点,否则相同的功能会在不同的产品间进行重新实现。
2.2 开发
  1. 专业性缺少。公司业务背景决定了大部分研发人员并没有接受过专业的计算机基础训练,且缺乏这方面的意识。(不少开发人员甚至连堆栈都不会看,复制错误提示信息到百度中是其最显著的排错能力。)
  2. 公司业务特性决定了一个研发人员需要同时承担多个项目/产品的开发维护工作,人员更迭相当快,紧急的项目救火时有发生,导致出现低级问题出现概率较高,职责无法溯源,等问题。
  3. 相关技术管理的缺失。缺乏变更控制,缺乏版本管理,研发流程中只存在前进的方向,没有回退机制;研发部门的各个小组之间技术栈的不统一导致人员调动摩擦成本高,破窗效应严重。内部技术栈培训短缺或者效果不明显。
  4. 技术历史债较重。新技术和规范的引入瞻前顾后,导致最终或圈地自萌,或不了了之。
  5. 持续开发能力缺失。开发环境千差万别,工具版本各有千秋,无法实现快速验证,甚至或有意(如因为懒于自测,直接将问题抛给测试,甚至生产环境)或无意(例如本来应该采用单元测试的验证,却选择必须将前后端同时搭建起来之后从浏览器端开始)地人为延长验证时间间隔。
2.3 测试
  1. 专职测试人员数量稀少,且仅集中在性能测试或安全测试。
  2. 持续测试能力缺失。环境的准备到系统的部署全程基本为人工完成,低级错误频发,测试缺乏可复现性。
  3. 验收测试,冒烟测试以"猴子测试"的形式完成,严谨性缺失的同时无法对全流程进行复盘和审计。
  4. 与研发之间缺乏有效的沟通反馈机制,双方互为黑盒。
  5. 管理缺失。缺乏基本的量化指标。
2.4 运维
  1. 地方项目经理兼职运维人员,除了运维之外,还要身兼收集局方需求的职责,但往往只是个传话筒,缺乏"需求分析能力"。
  2. 待遇低,专业能力缺失。导致的直接结果就是 "将WAR包丢进Tomcat目录下,然后启动起来"都可能存在问题。更不谈避免端口冲突,收集问题及相关场景都存在问题等等。

3. 最后

任重道远,但正面问题是开始改变的第一步。我们需要就问题先达成一致,否则只能在各奔东西式的努力中耗尽所有人的心力和热情,爱因斯坦曾说过"当问题清晰之后,解决方案自然就出现了"。

引用一段从微信推文看到的文字,相信很多人都会感同身受:

我在某金融软件公司工作,随着客户数的增多,成本与效率/质量的矛盾日益凸显。

~
设想下,从一波人维护一套代码,渐渐变成一波人维护几套代码,这样一来,Bug增多,效率下降,抱怨也随之变多,再加上甲方挖人,最后人员离职,团队土崩瓦解,Game Over……
~
在这种情况下,一般公司会采取三种应对措施:

  1. 一对一服务 - 项目制:多个团队,多套代码,多套标准,服务多家客户,但这样一来成本又难以承受,时间一长,肯定资不抵债。
  2. 一对多服务 - 标准化:一个团队,一套代码,一套标准,服务多家客户,但客户不买账,客户说我的需求都是个性化的,你别拿某某标准来引导我,叫你咋做,你就咋做,不愿意?那您走,我找别人家做。
  3. 一对多服务 - 产品化:一个团队,一套代码,多套标准,服务多家客户,通过技术与配置化的手段,利用SOA思想,打造自己的产品化平台,但对技术投入要求较高,尤其是核心人才的依赖较大,中小型企业一般都很难留住这些人,只要他们一走,公司基本完蛋。

最后总结一下部分最佳实践:

  1. 离问题越近,修复成本越低。所以快速部署是需要一个能让各方收益的需求,而不仅仅"这是运维/售后的问题"。
  2. 我们信任的是测试结果,不是所谓的口头承诺。而这同样需要快速部署的支持。

4. 参考

  1. 《凤凰项目 : 一个IT运维的传奇故事》
  2. 《看板方法 : 科技企业渐进变革成功之道》
  3. 《持续交付2.0》
  4. 《持续交付 : 发布可靠软件的系统方法》
  5. 《持续集成 : 软件质量改进和风险降低之道》

【DEVOPS】传统业务软件企业之痛相关推荐

  1. 优秀的软件企业为何倒下?

    最近不到一个月,就看到两家著名公司--SUN公司和Borland公司相继被收购,引起IT界不小的震动,让人感慨万分.在此之前有北电(Nortel).摩托罗拉的衰退,再往前有 美国数字设备公司Digit ...

  2. erp框架 saas_传统ERP软件和SaaS管理软件的区别

    SaaS的出现是ERP发展至今的一个必然产物.ERP,这款软件大致经历了几个阶段的变革:从70年代的"软硬一体化"(即软件和硬件一体化)开始,到2000年以后软件产品成为独立销售的 ...

  3. 传统业务上云:跨AZ容灾架构解析

    本文由 网易云 发布 数字化转型浪潮之下,采用云计算服务提升业务敏捷性.降低运维成本,成为了传统企业的优选方案.网易云资深解决方案架构师张亮通过某物流企业客户的实际案例,分享了传统业务系统在云上的架构 ...

  4. 分析国内IT各领域软件企业的挣钱实力

    http://wenku.baidu.com/view/932bc26fb84ae45c3b358c39.html 今天看到<程序员>杂志上的<软件中国2009年大势图>,有一 ...

  5. 数字化转型2020,如何加速传统IT到企业云的过渡?

    在诸多分析机构和媒体的2020展望中,数字化转型和数字经济无疑是2020的关键词之一.联合国贸易和发展会议于2019年发布了首份全球数字经济报告指出:根据不同定义,数字经济占全球GDP的4.5%到15 ...

  6. 数字经济时代,软件企业的出路在哪里?

    作者:吴梦雄.曹开彬 8月6日,在离澳门只有一线之隔的美丽的珠海横琴湾酒店,中国软件网参加了疫情之后IT.企业服务领域第一个大型的线下活动--2020商业创新大会(南方峰会). 这个由用友网络主办的. ...

  7. 自助式BI与传统BI软件相比有什么优点?

    自助式BI是当前比较流行的一类BI软件,也就是自助分析平台.与传统的BI软件相比,自助式BI软件有许多优点,下面小编就来给大家介绍下,自助式BI软件相比于传统BI软件最显著的3个优点. 第一,部署周期 ...

  8. 安防软件企业受扶持 成长之路举步维艰

    中国安防行业发展了40多年,重视硬件轻视软件的现象就一直存在.说到安防行业,很多人的反应往往是摄像头.对讲机.显示器等等硬件设备,很难想到软件在其中的作用,软件总是作为安防硬件产品的附属品出现.在过去 ...

  9. 安防软件企业得到扶持正在破茧成蝶

    中国安防行业发展了40多年,重视硬件轻视软件的现象就一直存在.说到安防行业,很多人的反应往往是摄像头.对讲机.显示器等等硬件设备,很难想到软件在其中的作用,软件总是作为安防硬件产品的附属品出现.在过去 ...

最新文章

  1. Silverlight实例教程 - Out of Browser开篇
  2. BP撰写新攻略----投资人告诉你如何拿投资人的钱
  3. 放置奇兵 算法 月度活动 破碎时空记录 第四关 双树精(大树)(格鲁)
  4. 长春理工大学计算机学院分数线,2021长春理工大学录取分数线-长春理工大学分数线-2021长春理工大学录取查询网址...
  5. 扔掉,MySQL!性能被 MariaDB 吊打…
  6. 对Group_concaT函数利用剖析 (转)
  7. monkeyrunner脚本的录制和回放
  8. 帕累托最优生活例子_创业者:用博弈解决生活的难题
  9. 渗透测试入门23之OSCP渗透测试认证经验分享
  10. python编写函数showmsg(n、name)_Python语言答案
  11. svn拷贝一个项目作为新项目
  12. Android系统信息获取 之四:系统语言信息获取
  13. CSDN账号被盗了吗?
  14. 【数据挖掘】鸢尾花分析实验与数据降维
  15. 【办公自动化】探秘少了22种用地的空间规划新国标并更新国标相关内容
  16. 别愁了,预测模型这样做!
  17. 机械臂示教轨迹参数化方法 DMP, Dynamic Movement Primitive (一)
  18. java int 传引用吗_Java值传递还是引用传递?
  19. STM32F4 IAP学习笔记
  20. 下三角矩阵线性方程的求解

热门文章

  1. 理解计算机的特性性能和应用,计算机系统性能评价认识与理解.doc
  2. 计算机毕业设计之java+springboot基于vue的网上书城管理系统
  3. 丰田一绝 - 28万行代码竟有1万多全局变量,庞大的bug培养基地
  4. 仿新浪手机浏览器www与wap跳转提示
  5. 现在, 500张UBDC免费门票等你来抢!
  6. win7本地连接状态信息空白的解决方法
  7. 实现cf外挂_CF 5中的HTTP实现草图?
  8. 我用JS做了一个记账本 [数据可本地存储] 附万字详解
  9. python亚马逊运营工具_使用亚马逊云服务必备的八款SaaS工具
  10. 电商4.0来了,你看懂了吗,通证经济又是一个大的风口红利