质量问题不是不爆,时候未到

没有质量,哪来效率,谈什么成本;

最近大半年,团队以极其曲折的方式,将一个支离破碎的应用从重构的边缘给拉了回来,最终项目回到了正常迭代的节奏中;

年初的时候,运营系统相关人员离职,然后经过决策层考量之后,统筹到一个业务线维护;

问题的关键在于,这套运营系统刚开发完成,还没有全面进入使用阶段,到底有多少坑在前面闷着谁都不知道;

以维护的定调将任务安排过来,通常意味着既不能影响负责的业务线开发,同时还要保证这套新的运营系统正常运转;

还好队友对此事都能勉强理解,没有过多评论,不然会显得没礼貌了;

再来回顾这件事本意并不在于吐槽,而是复盘一下这套系统从垮掉到最终支棱起来的全过程,总结一下复杂问题的解法;

运营系统进入使用阶段后,符合预期成功垮掉,短短半个月的时间,产品和项目经理就收到了过百条的使用问题,优化迫在眉睫;

经验老道的队伍中:轻易不提系统级的重构二字!老底掀翻了也说是优化;

好消息,运营系统名义上已经开发完成了; 坏消息,运营系统刚开始进入全面的使用阶段;

好消息,没有突破队伍刚接手时的心里预期; 坏消息,运营系统名义上确实开发完成了;

跳坑不问原因,如果能绕开谁都不跳;挖坑不看深度,挖的人知道自己不走回头路;问题已经明显的摆出来了,最好的办法就是尽量一次彻底的解决它;

那么矛盾点就来了,在不过度影响主线业务的前提下,用什么方式来解决运营系统的问题,这就很考验管理和协作的流程;

显然在开发主线业务的同时,随意穿插运营系统的问题,这样很容易导致两边都吃力不讨好,整个队伍会更加被动,先看看应对方式;

首先使用方将问题全部对接给产品和项目经理,做好问题的优先级定性,并且在优化池文档中做好主流程与模块化维度的分类管理与场景描述;

然后将问题交由测试人员进行开发环境的复现,并简单输出一些问题的原因和异常日志,同样需要在优化池中做好整理记录;

最后由开发同学进行问题解决,再提交到测试验收的环节,问题解决后发布上线,上述流程中问题已经有了一份比较详细的描述文档,所以协作的效率很高;

从整体的流程看,与常规的协作差异并不明显,那是如何处理过程中的矛盾与时间冲突的,此时就很依赖管理策略了;

解决运营系统主流程的问题会集中在一个周期相对较短的高强度版本中,人力投入也很全面,以此保证系统前期的稳定和可用性;

需要优化但相对边缘的问题,采用宽松的方式推进,主线业务的研发周期中,安排在开发和测试相对空闲的时间段内;

如果出现流程中断的问题需要紧急处理时,会将主线的排期时间适当推后;解决完再回归到主线开发,并且会占用晚上和周末的时间来尽量避免延期;

因为运营系统而额外加班的队友,空闲节奏中会安排休假;过度忙碌会导致队伍的状态和情绪低落,部门经费上给到福利倾斜,毕竟人间烟火气最抚凡人心;

当然,在问题解决的过程中,并没有再次引起关联的问题,这与队伍的整体素养偏高有最直接的关系;

最终在历时六个月之后,整个运营系统实现服务的稳定可用,并且没有对业务主线产生明显的进度影响,后续的维护和开发落到版本排期即可;

有个三五年开发经验的同学都会遇到类似问题,躺平的老六以离职的方式甩出一个坑坑洼洼的系统,接手的队友秒变大冤种;

站在项目管理的角度来看,质量、时间、成本是需要平衡的,但从实践经验所得,没有质量,时间与成本确实无解;

对于产品研发部门来说,到底如何定义质量的标准,在原则上退好多步来说:稳定、少出错;

有几年开发经验的同学,尤其是后端,都深刻的知道系统的稳定和少出错,在实际研发中是多么有难度的要求;

很多隐藏的问题,或者逻辑不严谨,虽然在当时没有显露,但是这些麻烦就像水杯中的沉淀物,稍微晃一晃,就会原地起飞;

问题轻则甩锅大戏,问题重则离职一片,在质量问题上有多少挖坑的老六,那埋起来的大冤种只会远大于挖坑的老六;

质量问题随着产品迭代的推进,是会产生裂变的,如果出现数据层面的问题,那就是核裂变,而且不会挑选爆发的时间;

版本求快可以理解,因为很多业务都是有时效性的,即要快又要高质量也能接受,毕竟需要所谓的竞争力;

追求质量的门槛并不高,团队可以多码点人或者排期多给点时间,流程把控严谨是可以实现的;

但是成本与时间都不想付出,这就多少有点不懂理了;时间、质量、成本的三角形想要实现真正平衡,这绝非易事;

在研发管理中,经常出现排期紧急,应付式的开发一下,等出现关联问题时,再考虑下个应付的方法,持续性挖坑,间歇性摆烂;

等到问题多到无法应付时,可以换个地方接着玩,这可能或多或少都成为过职场生涯的跳槽原因,最终结果是没有赢家;

被迫躺平摆烂的搬砖者,主动或被动的在各个平台和产品线中不断横跳,顿悟后就会发现,哪里的代码都一样并不分高低贵贱;

任何工程中的代码出现问题,都会快速的从使用端传递到研发端,解决完还要再次通知使用端,这其中的成本完全是可以计算的,原因是可以分析的,能否避免是值得反思的;

很认同的一个观念是:把事情一次性做好,就是最低的成本和最高的效率;所以 需求再多,也要 质量为王;如果因为产品的体验差影响业务,那么用户、平台、研发谁才是真正的大冤种?

Original: https://www.cnblogs.com/cicada-smile/p/16687510.html
Author: 知了一笑
Title: 质量问题不是不爆,时候未到

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/617290/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 免费正版 IntelliJ IDEA license 详细指南

    一、前言 IntelliJ IDEA 一直是我非常喜欢的 IDE 自从用上之后就回不了头了,但是 Ultimate 版本的费用十分昂贵,其实 JetBrains 自己就提供了6种免…

    Java 2023年6月6日
    0108
  • 家教小程序的设计与实现

    摘要 随着社会和技术的飞快发展,网络逐渐成为人们生活中不可或缺的存在,不管是生活、工作还是学习网络都可以给我们带来便捷。家教程序为学生和老师提供更加快捷的平台,相对舒适的工作环境,…

    Java 2023年6月7日
    082
  • Vue 3-150行代码实现新国标红绿灯效果案例

    昨天刷视频,都是关于新国标红绿灯的,看大家议论纷纷,下班就用150行代码通过Vue组件实践红绿模拟演示,视频也跟大家展示过了。今天接着更新图文版本,大家跟着优雅哥通过该案例实操模拟…

    Java 2023年6月16日
    067
  • 会话技术 cookie 和 Session(1)

    CookieCookie 属于客户端会话技术,它是服务器发送给浏览器的小段文本信息,存储在客户端浏览器的内存中或硬盘上。当浏览器保存了Cookie 后,每次访问服务器,都会在HTT…

    Java 2023年6月9日
    097
  • 接口中的静态方法——模板方法设计模式

    先看一个简单的例子,相信看完下例,你会对模板方法有一个初步的了解 interface Operations{ void execute(); //接&…

    Java 2023年6月15日
    051
  • MyBatis 配置类详解

    核心配置文件中的标签必须按照固定的顺序: properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objec…

    Java 2023年6月7日
    062
  • 待学习

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月6日
    084
  • Spring——注解@Bean和@Autowired的关系

    关系: @Bean 告诉 Spring:”这是这个类的一个实例,请保留它,并在我请求时将它还给我”。 @Autowired 说:”请给我一个这个…

    Java 2023年5月30日
    064
  • 互联网人的命运,就是活到30岁都难?

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处。 想必这几天,大家应该都被28岁的字节…

    Java 2023年6月5日
    082
  • Docker Container 就是一个进程,多新鲜啊?

    大家对 Docker 都应该有了或多或少的认识了,相信大家都是从这两张图来粗旷的理解 Docker 及容器概念的 那我们如何更轻松的理解容器 Container 呢?说白了 Con…

    Java 2023年6月5日
    094
  • 16 张图解 | 一致性哈希算法

    16 张图解 | 一致性哈希算法 16 张图解 | 一致性哈希算法 如何分配请求? 使用哈希算法有什么问题? 使用一致性哈希算法有什么问题? null 如何通过虚拟节点提高均衡度?…

    Java 2023年6月7日
    054
  • springboot对LocalDateTime类型入参和接口返回值格式化

    背景 使用过java8的朋友应该都知道LocalDateTime类型,它作为全新的日期和时间API ,对比Date类型有着很大的优势,极大的方便了我们对于时间和日期的操作。不过,如…

    Java 2023年5月30日
    082
  • synchronized 是可重入锁吗?为什么?

    什么是可重入锁? 若一个程序或子程序可以”在任意时刻被中断然后操作系统调度执行另外一段代码,这段代码又调用了该子程序不会出错”,则称其为可重入(reentr…

    Java 2023年6月14日
    068
  • Java自定义注解使用和详解

    前言 我们在做开发springboot 项目时候会遇到各种各样注解,使用各种各样注解,极大的简便了我们开发流程,方式,从JDK5开始支持 注解是 Java语言的一种强大的功能 可以…

    Java 2023年6月13日
    084
  • windows系统python3.6(Anaconda3)安装对应版本 torch、torchvision

    一、官网下载 .whl 文件 https://download.pytorch.org/whl/torch_stable.html 二、使用pip命令安装 打开你的anaconda…

    Java 2023年6月15日
    078
  • HM2022ssm-mp5【MP代码生成器】

    代码生成器原理分析 1.1 造句: 我们可以往空白内容进行填词造句,比如: 在比如: 再有: 1.2 观察我们之前写的代码,会发现其中也会有很多重复内容,比如: 那我们就想,如果我…

    Java 2023年6月5日
    086
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球