`
阅读更多

一、分析设计阶段

1、被“CNFM支持子账号”这个名头束缚了思想,没有充分意识到“CNFM升降级”在整个项目中对WS影响的严重程度。这一点,不仅之前的QA同学疏忽了,我自己也有不可推卸的责任。事实证明,在后续的开发和测试过程中,该处的处理成本要远远大过于“支持子账号”的处理成本。

根本原因:对整个系统的熟悉程度不够,还不能够在一定的项目背景下,充分的分析和预测系统真正可能收到的影响和应该做出的调整。

2、项目组的其他成员介入太晚,导致从开发阶段开始,WS线除我之外的几乎所有开发同学,对整个项目的改动点从宏观上根本没有一个清晰的认识。甚至还不清楚自己所作的改动究竟会影响到哪里,以及应该怎样去改。前期的QA同学对项目也没有一个充分的认识。当然,这点在客观上来说,也跟资源的实际情况有关,貌似WS这边的资源安排也确实不怎么给力。

3、对卖家线的后续开发进度做了比较详细的计划,但是对Escrow和买家线的关注不多。当然这个也跟当时对整个项目的理解有关(还没有充分意识到整个项目的影响范围),同时客观上也跟Escrow和买家线的资源介入有关,当时两边都没有投人进来,跟谈不上充分的评估了。

二、开发阶段

1、卖家线在开发初期还是基本按照计划来走的。为了留有充分的自测时间,在前期我甚至留了充分的buffer给每位开发人员,目的是希望大家能够在完成功能开发本身之后,抽出相应的时间进行充分的自测。但事实证明,这点在当时执行的还是有点问题,现在看来,我领的这个小团队,新人貌似还不能完全按计划胜任开发任务,会出现延误现象。老人也故意卡时间完成任务,没有真正有效的利用当初希望预留出来的一段时间。以后对于这种情况,可能需要提前制定一些对策。交叉review和交叉自测可以是一种方法,但是如何有效的执行,还是值得商榷的。

2、都某些不是很熟悉的功能点,过于相信当时的开发人员。比如图片银行容量的变化这个点。当时只是尽量去找到当初做这个功能的人,咨询在哪里使用,影响范围是什么这些。其实任何一位开发人员(包括我自己)也不可能在写完一段代码之后,一段时间之后,还能清楚的记得代码所塑造的业务逻辑和可能影响的范围。这个时候,找到相应的开发时必要的,但是了解了基本背景之后,适当的阅读代码,并且充分grep才是解决问题的最安全方法(至少目前没有发现什么更安全的手段),机器毕竟比人犯错的几率小很多。

3、各条线的开发资源投入时间不等也是一个非常严重的问题。卖家线整个项目受影响最为严重的产品线(也是WS方的主导方)是WS方3条线中最早投入这个项目的一条线。起初重资源、时间的评估上,一直认为卖家线是WS这边最大的瓶颈,总觉得其他两条线再怎么折腾也有足够的buffer可用。但实际上,其他两条线都有自己的问题。资源紧张是共同的问题,但对于买家线,本身自己还没有梳理清楚供级会员的子账号前台逻辑,这不得不说是个不小的问题。对于Escrow来说,开发人员过于自信,轻视了整个项目的影响范围,或者说也不是很清楚整个项目的影响范围。比较杯具的是,我也比较相信两边的开发同学,认为他们有能力并且真正理解了项目的内容。而事实上,我确实有必要在那个时候统一叫上几条线的开发和测试,大家在一起过一遍整个项目的改动点,让各条线的开发和测试充分意识到,项目可能带来的风险点。

三、测试阶段

1、测试前期在系统环境搭建上着实浪费了不少时间。让QA同学弄清楚用分支搭建测试环境和用tar包搭建测试环境没有本质的区别还真不是一件容易的事情。在这个阶段,还因为这个问题跟某位愚昧开发吵得面红耳赤(当时比较生气的是作为一名开发人员,居然不知道两个有什么区别,还理直气壮的认为就应该用tar包搭建环境,也不知道tar搭建环境到底会带来多大的合并分支的时间开销)。别人的问题不多说了,自己的问题是自己没有充分意识到这个问题可能给QA同学带来的困扰。毕竟人家不是干开发的,所以并不会理所当然的知道二方库的release顺序(事实上某些开发也搞不清楚)。这种情况下,其实我应该和所有不理解这个方式的人说清楚,我们为什么放着模式最简单的tar不用,非要用分支。并且让相关各线的人员给QA同学列出相应的二方库顺序非常重要,否则QA同学也不知道应该用什么样的顺序,用了错误的顺序环境搭建的有问题了,也不知道到底啥情况,只能找开发再去搞环境。这个过程就造成了环境搭建的耗时、低效。

2、开发和测试投入时间不连续。这个问题体现的最明显的就是买家线。当时开发完成之后,过了相当一段时间之后,才有相关的QA同学介入测试。当时出现问题了,开发已经无法完全想起当时的情景,QA除了抱怨测试进度的delay,似乎也没有什么方略可以应对了。同时因为开发此时已经投入另外的项目,测试同学在遇到问题时,不能及时找到相应的开发获得帮助也是个问题。当时买家线因为环境搭建问题居然整整耽误了一天的测试工时。但是那边的开发除了质疑我为什么不用tar包搭建环境之外,根本没有提供任何有用的帮助给QA同学,那是我只能牺牲自己的时间来帮QA搭建Escrow环境。这样不仅耽误的买家线的测试进度,也耽误了卖家线的测试进度。

3、测试期间,卖家线抽走了两名其他的开发。主管的意思是他们可以暂时抽出去做别的项目,有问题是也可以再回来fix bug。因为他认为测试期间已经不应该有太多的问题了。但实际上,指望被抽出去的资源再回来处理问题,是非常不可靠的。因为他们已经被其他项目或需求占用,主客观上,都很难及时抽身fix他们搞出来的bug。为了不耽误项目进度,我能做的就只有整日忙碌于测试环境的搭建和各种奇怪的bug fix。加之那段时间故障猖獗,居然照成连续3天没有时间修复bug。当时我最大的问题就是没有充分意识到这个问题的严重性,并主动提出这个问题给主管和项目大的PM,不然这个问题可能通过协调其他资源能够更好的得到缓解。自己也不用搞得焦头烂额了。

4、QA同学的水平也确实是个问题。这个不是针对某个个人,但客观的说,测试阶段确实浪费了我不少的时间在帮助QA重复搭建环境上。面对这种情况,下次再有类似场景的时候,可以考虑抽出一定的时间,写写帮助文档之类的,做些一劳永逸的事情,可能才是磨刀不误砍柴工根本解决方案。

四、发布阶段

1、发布计划制定,当时过于相信Escrow某开发,造成发布计划评审时,才由opps指出Escrow通过vip方式调用RMI的配置项错误。如果当时没有发现,后果会很严重。事实上,到后面,发生在这位开发同学身上的问题还层出不穷。在这里我不想一一列举了,但是这个问题却始终有点困扰我。对于这种情况,我作为WS方的PM,同时兼任卖家线的主力开发,是否需要样样细节过问,事必躬亲。如果是,我哪里有那么多的时间和精力。如果不是,我又能通过什么方式更好的规避这类事情发生呢?

2、发布前一周,进入大联调,细心的汪汪还是发现了一个之前遗漏的ME中价格问题。这个问题,当时我处理的非常不理智。事实上,老姚作为这块的原创作者和最为熟悉的人,以及WS这边的PLA,我最该首先请教的就是他。但我还是做了一个自以为比较负责任的决定,就是从根本上改掉价格的费率不对的问题。这个问题耗费了我大量的时间,因为越做越发现,需要考虑的点其实不仅仅是修改个数据那么简单。DB和存储都必须考虑周全。于是在最后非常宝贵的时间里,我不仅花费了将近两个晚上的通宵时间来实现这个功能,同时也严重影响了QA同学整体的测试进度。在后续自己的精神状态不是很好的情况下,如果不是汪汪及时提醒自己找老姚review这部分代码,还真不知道这么仓促写出来的上千行代码会给QA同学造成多大的负担,以及在预发布或者发布中,抽不抽风。这点必须注意,自己作为PM,在项目的这个阶段,必须学会评估风险!

3、预发布过程中,也问题不小。最为严重的一个问题,就是之前测试好的用户降级之后的产品下架逻辑突然不好使了。这个问题一直折腾我们到了半夜。最郁闷的是,预发布环境timer需要回滚,我们没有第二次线上测试的机会。于是带着这个问题,是否需要在继续深究,我自己也有些摇摆不定了。但是最后关头,还是聪妈严肃要求一定要搞清楚这个问题,不然到第二天正式发布就来不及处理了。于是在预发布当晚,我们几乎采用了各种手段,终于找到了问题。在几乎度过了一个不眠之夜之后,查出来的问题,竟然是因为消息发送方发给我的数据类型变了!我晕倒。这个问题为甚么测试的时候没暴露?因为测试的时候她还没改。又是一个典型没有按照流程走的案例,杯具楽。

4、预发布当天,还有生产环境没有建表的情况,更不用说sql review了,我汗啊。就连sql review都是当天那么紧张的发布环境下临时做的。

5、正式发布当天,又出现了没有提前做数据订正的问题。这个情况,最大的问题,不是忘记了做数据订正,而是当时记得了,但是开发人员因为不熟悉某些表的含义,而错误的进行了线上查询,认为不需要进行数据订正,而实际上他遗漏了9W多条数据。后果还是很严重的。

总结

项目总算发布上线了,带着些许遗憾,带着某些风险,当然还是带着一丝我们努力付出之后看到的收获的喜悦的。零零散散的写了好多,算是做个祭奠。回头想想,其实还是对那些在这个过程中帮助我一起成长的人心怀感激的。

谢谢汪汪在最后关头临危受命,帮我分担了好多工作,并为整个WS这边的项目质量保驾护航。

谢谢刚哥神经半夜,大老远的从家来跑来公司陪我排查问题,真讲究!

谢谢聪妈严谨的态度,不息通宵达旦的帮我review代码,陪我一起分析、调试,让我看到什么才是工程师应该具有的品格。

谢谢彬哥关键时候,跟我一起合作,一句“江湖救急”真的有种为朋友两肋插刀的感觉。

谢谢那些曾经让我觉得很不爽的甚至鄙视的人,是你们让我知道了,很多事情还是需要自己认真考虑的,完全的相信别人还是靠不住的。

最后也得谢谢亲爱的GF在这顿时间的理解。这段时间,确实疏忽了你好多。希望后续你的项目也能顺利上线,同时也不要太辛苦了。。。。。。

最后,希望这次经历能够带给我更多成长,在下一的项目管理中做的更好吧。

 

分享到:
评论

相关推荐

    两个数据库比较(SQLServer版)

    * 假设:库CNFM1与CFR1是一个项目不同时期的版本数据库,由于整合的需要,那么下面的功能可能有用 * 使用:将CNFM1、CFR1库的名称替换成你需要对比的两个即可F5 * 作者:黄顺龙 * 联系:huangshunlong@139.com */

    西门子FDA221-CN/FDA241空气 采样吸气泵说明书

    总结来说,西门子FDA221-CN/FDA241空气采样吸气泵是一款关键的消防安全设备,它在抽吸式烟雾探测系统中发挥着至关重要的作用。为了确保其有效性和安全性,用户必须按照指定的安装指南进行操作,并时刻注意设备的正确...

    移动梦网短信业务信令流程规范V3.0

    #### 七、总结 《移动梦网短信业务信令流程规范V3.0》是中国移动通信集团公司为了保障移动梦网短信业务的高效、稳定运行而制定的一项重要技术规范。通过对SCP、ISMG、SMSC及SP之间交互的信令消息流程进行详细描述,...

    docker配置mysql主从复制.docx

    - 创建目录 `/usr/local/mysqlData/master/cnfm` 和 `/usr/local/mysqlData/master/data`,分别用于存放配置文件和数据库数据。 - 编辑配置文件 `/usr/local/mysqlData/master/cnf/mysql.cnf`,设置 `server-id=1`...

    (源码)基于QT框架的云存储系统.zip

    # 基于QT框架的云存储系统 ## 项目简介 本项目是一个基于QT框架开发的云存储系统,旨在为用户提供一个安全、高效的文件存储和分享平台。系统采用CS架构,客户端通过QT框架搭建,服务端运行在Centos 7环境下。用户可以通过系统进行文件的上传、下载、分享,以及与好友的私聊和文件分享。 ## 项目的主要特性和功能 好友管理支持添加、删除好友,私聊好友,以及分享文件给好友。 文件管理提供文件夹的创建、删除、移动、重命名操作,支持文件的上传、下载、移动和分享。 用户界面使用QT框架搭建用户界面,提供友好的交互体验。 网络通信通过自定义的交互协议实现客户端与服务器的高效数据交互。 并发处理服务器端采用多路复用、内存池、线程池等技术,确保在并发环境下的稳定运行。 ## 安装使用步骤 1. 下载源码从项目仓库下载源码文件。 2. 配置开发环境 服务端安装Centos 7,并配置vim、G++、gdb等开发工具。

    2010-2023国自科立项名单管理学部.xlsx

    1、资源内容地址:https://blog.csdn.net/2301_79696294/article/details/143636809 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 3、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理

    二、现有一份上市企业年度财务报告文本中管理层讨论与分析文本大数据,请测度以下相关的数据(60分)

    二、现有一份上市企业年度财务报告文本中管理层讨论与分析文本大数据,请测度以下相关的数据(60分)

    多个SVCTTS的C推理库.zip

    c语言

    1991-2022年国家社科基金项目数据公布.xlsx

    1、资源内容地址:https://blog.csdn.net/2301_79696294/article/details/143636809 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 3、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理

    B.5-本科毕业生就业满意度分析.pdf

    B.5-本科毕业生就业满意度分析.pdf

    (源码)基于Spring Boot和JWT的饮品管理系统.zip

    # 基于Spring Boot和JWT的饮品管理系统 ## 项目简介 本项目是一个基于Spring Boot框架的饮品管理系统,主要用于管理饮品分类、商品信息、员工登录及权限管理等功能。系统通过JWT(JSON Web Token)实现用户身份验证和授权,确保系统的安全性和可靠性。 ## 项目的主要特性和功能 1. 商品管理包括商品的添加、编辑、删除和查询功能,支持分页查询和按分类查询。 2. 分类管理支持饮品分类的添加和查询,方便用户按类别浏览商品。 3. 员工登录与权限管理实现员工登录功能,并根据员工角色分配不同的菜单权限。 4. 图片上传与管理支持商品图片的上传和更新,确保商品信息的完整性。 5. 验证码生成与验证提供图形验证码的生成和验证功能,增强系统的安全性。 6. JWT身份验证使用JWT实现用户身份验证和授权,确保系统的安全性和可靠性。 ## 安装使用步骤 1. 复制项目 bash 2. 配置数据库

    基于PythonSnort入侵检测IDS系统 框架 html + css + jquery + echart + python

    基于PythonSnort入侵检测IDS系统 框架 html + css + jquery + echart + python + flask + snort + snortrules(支持webtop10,cve检测配置规则就行) + mysql 用户类型 管理员 admin 123456 模块介绍 登录注册 Snort系统首页 Snort入侵检测 (Snort辅助检测) Snort策略配置 Snort历史日志 Snort密码重置 退出登录 数据库设计SnortInfo Admins Idsni pip install -i https://mirrors.aliyun.com/pypi/simple Pillow

    yolov8 瑞芯微 rknn 板端 C部署.zip

    c语言

    一个用于解析世界各地街道地址的C库,由统计NLP和开放地理数据提供支持.zip

    c语言

    佳能打印机清零软件和教程

    佳能打印机清零软件和教程

    (源码)基于Python的船舶轨迹与波浪模式分析系统.zip

    # 基于Python的船舶轨迹与波浪模式分析系统 ## 项目简介 本项目是一个基于Python的船舶轨迹与波浪模式分析系统,旨在通过雷达图像数据(DAS数据)分析船舶的航行轨迹,并模拟和可视化船舶产生的尾波如何被DAS系统感知。项目包含了数据读取、滤波处理、轨迹绘制、模拟数据生成与可视化等多个功能,并使用了TDMS文件格式的读取和处理,以及Radon变换等数据处理技术。 ## 主要特性和功能 1. 数据读取与预处理项目提供了读取TDMS文件格式的雷达图像数据,并进行了滤波处理和下采样,以便于后续的数据分析和可视化。 2. 雷达图像分析通过Radon变换将二维雷达图像数据转换为一维正弦图,便于分析船舶的航行轨迹和速度。 3. 模拟数据生成项目模拟了船舶在海上行驶时产生的尾波,并模拟了这些尾波如何被DAS系统感知。 4. 可视化展示通过matplotlib库将处理后的数据和模拟数据可视化,方便用户直观地了解船舶的航行轨迹和波浪模式。

    【9464】基于Springboot+vue的大学生计算机基础网络教学系统.zip

    技术选型 【后端】:Java 【框架】:springboot 【前端】:vue 【JDK版本】:JDK1.8 【服务器】:tomcat7+ 【数据库】:mysql 5.7+ 项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧! 在当今快速发展的信息技术领域,技术选型是决定一个项目成功与否的重要因素之一。基于以下的技术栈,我们为您带来了一份完善且经过实践验证的项目资源,让您在学习和提升编程技能的道路上事半功倍。以下是该项目的技术选型和其组件的详细介绍。 在后端技术方面,我们选择了Java作为编程语言。Java以其稳健性、跨平台性和丰富的库支持,在企业级应用中处于领导地位。项目采用了流行的Spring Boot框架,这个框架以简化Java企业级开发而闻名。Spring Boot提供了简洁的配置方式、内置的嵌入式服务器支持以及强大的生态系统,使开发者能够更高效地构建和部署应用。 前端技术方面,我们使用了Vue.js,这是一个用于构建用户界面的渐进式JavaScript框架。Vue以其易上手、灵活和性能出色而受到开发者的青睐,它的组件化开发思想也有助于提高代码的复用性和可维护性。 项目的编译和运行环境选择了JDK 1.8。尽管Java已经推出了更新的版本,但JDK 1.8依旧是一种成熟且稳定的选择,广泛应用于各类项目中,确保了兼容性和稳定性。 在服务器方面,本项目部署在Tomcat 7+之上。Tomcat是Apache软件基金会下的一个开源Servlet容器,也是应用最为广泛的Java Web服务器之一。其稳定性和可靠的性能表现为Java Web应用提供了坚实的支持。 数据库方面,我们采用了MySQL 5.7+。MySQL是一种高效、可靠且使用广泛的关系型数据库管理系统,5.7版本在性能和功能上都有显著的提升。 值得一提的是,该项目包含了前后台的完整源码,并经过严格调试,确保可以顺利运行。通过项目的学习和实践,您将能更好地掌握从后端到前端的完整开发流程,提升自己的编程技能。欢迎参考博主的详细文章或私信获取更多信息,利用这一宝贵资源来推进您的技术成长之路!

    (源码)基于嵌入式系统的Greenhouse环境监测系统.zip

    # 基于嵌入式系统的Greenhouse环境监测系统 ## 项目简介 本项目旨在通过嵌入式系统监测温室内的环境参数,包括空气温度、湿度、地面温度和湿度以及光线强度。通过连接多种传感器到Nucleo微控制器L432KC,收集数据并通过Sigfox模块进行网络传输,用户可以在网站上查看这些数据。此外,数据还会实时显示在OLED屏幕上,方便用户直接观察。系统通过光伏电池和电池供电,实现了自给自足的能源管理。 ## 项目的主要特性和功能 1. 传感器数据读取通过DHT传感器(温度和湿度)、DS18B20温度传感器、光传感器TSL2561等读取环境参数。 2. 数据处理和传输通过主程序(main.cpp)处理读取的数据,并通过Sigfox模块进行网络传输。 3. OLED屏幕显示实时显示环境参数数据,包括空气温度、湿度、光线强度等。 4. 开源和可扩展性项目基于开源平台开发,可方便地集成更多传感器和功能。 ## 安装使用步骤 1. 下载并解压项目源码文件。

    (源码)基于QT的景点管理系统.zip

    # 基于QT的景点管理系统 ## 项目简介 本项目是一个基于QT框架开发的景点管理系统,旨在帮助用户管理和查询旅游景点的信息。系统通过图形界面展示景点之间的连接关系,并提供景点推荐路径、最短路径查询、深度优先搜索遍历等功能。 ## 项目的主要特性和功能 1. 景点管理 插入新的景点和边,构建景点图。 获取景点信息,查找与指定景点相邻的边。 2. 路径计算 计算并显示景点之间的推荐游览路径,基于最小生成树算法。 计算并显示两点之间的最短路径。 3. 景点遍历 提供深度优先搜索(DFS)功能,从指定景点开始遍历所有相关景点。 4. 信息展示 显示所有景点之间的连接路径。 显示指定景点的详细信息。 ## 安装使用步骤 1. 环境准备 确保已安装QT开发环境(建议使用QT 5.12.10及以上版本)。 确保已安装MinGW 32位编译器。

    简单的系统智能黑白棋小游戏

    简单的系统智能黑白棋小游戏

Global site tag (gtag.js) - Google Analytics