2019-11-20 从回顾交流到敏捷开发

前言


在一家传统的互联网公司要实行敏捷开发是一个非常困难的事情。不管是企业管理者还是研发人员,如果准备选择去使用敏捷开发去管理项目流程,推进软件活动,那么他们必然对敏捷开发抱有极大的信心或者是带有很高的期望。不得不说,敏捷开发确实是一种非常先进的软件活动实践,但是很多公司都没有成功的实行敏捷开发,反而因此拖慢了项目进度。


我经历过的各种开发模式


经历过边做边改的开发模式,也用过瀑布模式,敏捷开发,总的来说,不管使用哪种开发模式,还是成功交付的项目居多。但是交付的代码质量跟整个交付过程的区别还是很大的。下面就我的经历说一下这三种软件开发模型

1. 边做边改的开发模式

在做某一个官网时用法了该种模式,客户并没有明确需求和想法,只是简单的告诉我们需要做成跟某某网站差不多一样的,然后我们就先模仿着做了,照猫画虎,后来客户说这里需要改一下,那里需要改一下,这里换张图,那里改行字,布局变一变,反正就是说哪里改哪里。项目不大,一堆杂乱无章的代码最终也是交付了,弄得很是心力交瘁。

2. 瀑布模式

用的最多的也是这种开发模式,之前在外包公司做项目,都是先跟客户签订合同,拿到需求文档,然后开始项目,如果客户的需求不会发生变动,那是最棒的,一次性设计,一次性编码,一次性交付。但是如果发生用户需求要变动的情况就比较麻烦了,先是互相扯皮,看对方是否会妥协,对方如果不妥协,那就接着谈增加或者变动需求的价格,然后根据新功能重新设计代码,有的需求变更是牵一发而动全身的,所以只要需求一发生变动,结果往往是不尽如人意的。要么是开发人员坚决不同意修改,这会导致客户不满意,会没有后期合作。要么是开发人员的工作量会因为需求变动的变得很大,此外,客户还需要多付一些钱。

3. 敏捷开发

敏捷开发我在一次较大型的项目中应用了,进行了一些诸如头脑风暴,用户故事编写,每日站会,迭代,评审,回顾交流等活动,但是效果并不是很理想,最大的感觉就是项目进度的严重拖延,原本只需要至多一周就能完成的功能模块,在一些乱七八糟的要求下,会变得异常复杂,我在项目中所应用到的敏捷并不是纯粹的敏捷开发,公司出于某些原因,要求每一个人都是产品经理,所以我作为开发人员,需要参与到用户故事的编写当中,此外,担任产品经理这个角色,出完用户故事,还需要出业务流程图,草图或原型图,项目字典,输入输出的控件规范,如果跟谁沟通了需求,还需要有沟通记录。出完这些文档,担心有所缺漏,还得去跟领导沟通一下。
产品要出的东西出完了,还需要去找设计,沟通一下草图,让前端按照草图去设计页面,还需要去找前端去沟通接口文档,给前端把接口文档写好并保证前端可以看得明白。
好不容易进入到了编码环节,还得要有概要设计,详细设计,伪代码,这样才能正式开始编码,不然一旦编码中出现了什么问题,领导就会管你要概要设计,详细设计,没有的话,就只能自己背锅了。写代码的时候也是分了好多层级的,Controller,Service,Repository,Model,Validate,当时对代码的规范性跟代码质量也是有很高要求的。
这下耽搁了一大堆时间,终于可以开始正式打开编辑器写代码了,写完代码测好接口,提交到线上,前端可以愉快的调接口了,这个时候问题来了,我当时项目是五个后端,一个前端,距离上次对接完接口文档有几天时间了,前端可能把当时对接的内容也忘的差不多了,再给讲一遍。而且如果接口写完,发现没办法按照预先的数据结构返回数据,也不知道前端到底开始对接了没,没对接还好,再重新讲一下接口格式,如果已经完成了对接,或正在对接,这个时候要改,前端是非常不情愿的,因为一个前端,要同时对接五个人的接口,忙的不可开交。有时候前端不对接接口,后端在开发其他的模块了,这个时候前端才去对接之前的接口,如果对接出现了问题,后端还需要再回到之前的模块里面去,极大的拖延了项目进度。因为前端太忙,所以我们写接口文档的时候需要万分小心,不能出现一点错误,真是看了一遍又一遍,就怕出现一丝丝的问题。
好不容易完成了对接,到了代码评审的时候,领导说人人都要有产品意识,现在做的这个还有哪里哪里没考虑到,哪里需要变动,这下好了,敏捷的核心就是迭代,迭代的意思就是重复之前做过的,紧接着,漫长的一轮又来了。
给我的直观感受就是天天加班,还没有成果,没有成就感,苦不堪言。除此之外,还有每日站会,因为前端不能及时完成后端已经完成的接口,所以后端在做其他模块的时候,还得催促着前端及时调接口,催来催去,矛盾也是日渐加深,更加难以沟通。矛盾加深带来的后果就是站会可能会吵起来,或者沟通一些没有意义,鸡毛蒜皮的小事,陷入自行车棚问题中去。最后由于项目周期实在过长(多达七个月),团队问题太多,这个由一个产品,一个前端,一个设计,五个后端,两个测试组成的项目组被迫宣布停止该项目的研发。


可能导致推行敏捷失败的原因分析


个人觉得,敏捷开发之所以会失败的原因有以下几个方面:

  • 1.人们很难从一种习惯变更为另外一种,或者说是人都是不愿意改变习惯的。比如敏捷开发中提到的站会,即使只是短短的几分钟的一个交流,也会让不熟悉的人比较难以适应,或者觉得多余(已经有日报机制了,为什么第二天还要重复汇报)
  • 2.完全不同与以往的新软件开发模式,头脑风暴,用户故事,迭代会议,回顾会议,代码评审会,Sprint Backlog, 由于是从国外引进的一种软件开发模式,所以还是比较难以理解的。
  • 3.敏捷更多的是一种理念,但是更多的软件公司还是拘泥于形式,完全照搬敏捷的各种会议,各种表现形式,而忽略了敏捷的真正内涵。很多公司一上来就全盘否定之前的开发模式,开始生搬硬套,最终非但没有让开发变得更容易,反而增加了工作内容。
  • 4.还有其他种种的原因,再次就不一一列举了。比如把回顾会议开成了批斗大会,把站会开成了工作汇报会,由于对敏捷没有清晰的认知,还会产生各种各样的争执。

敏捷的原则与核心价值观


敏捷开发的核心价值观:

  • 个体和互动高于流程和工具
  • 工作的软件高于详尽的文档
  • 客户合作高于合同谈判
  • 响应变换高于遵循计划

敏捷开发的12原则:

  • 1.通过早期和连续型的高价值工作交付满足“客户”。
  • 2.大工作分成可以迅速完成的较小组成部分。
  • 3.识别最好的工作是从自我组织的团队中出现的,
  • 4.为积极员工提供他们需要的环境和支持,并相信他们可以完成工作。
  • 5.创建可以改善可持续工作的流程。
  • 6.维持完整工作的不变的步调。
  • 7.欢迎改变的需求,即使是在项目后期。
  • 8.在项目期间每天与项目团队和业务所有者开会。
  • 9.在定期修正期,让团队反映如何能高效,然后进行相应地行为调整。
  • 10.通过完成的工作量计量工作进度。
  • 11.不断地追求完善。
  • 12.利用调整获得竞争优势。

公司现状


基于以上种种可能会导致敏捷失败的原因,企业在实施敏捷开发的时候不应该盲目进行,而应该根据企业的具体情况,小步迭代,逐渐引入敏捷的概念,实现从传统模式到敏捷开发的平缓过渡。
形式不重要,重要的是发扬其核心价值观与原则。目前我在新的一家公司做技术总监,我想要吸取以前的不足,结合各种软件开发模型的优点,不走形式主义,不关注于使用的软件开发模式, 力求用最小的成本解决问题。

我公司是初创公司,用的是传统的瀑布开发模式,甚至可以说是瀑布模式都算不上,就比边做边改的那种模式强一点吧。造成这样的原因一方面是初期各岗位人员不足,二来是需求变化的太快,随时可能改变,无法写出来确定的需求文档。后来经过三个多月的磨合,以及人员补充,逐渐变成了正常的瀑布模式,会出需求文档,原型图等。就这样,磕磕绊绊完成了公司电商小程序两个版本的迭代。每完成一个版本迭代,我们都会有一个回顾会议,在第一次回顾会议上,开发团队普遍提出了需求不明确的问题,还有诸如没有提前定义好接口文档,代码不规范,产出效率低的问题。在会议中,就这些问题,也给出了一些针对性的解决方案,针对需求不明确的问题,让大家多站在用户的角度去思考,要有用户思维,必要时邀请非开发人员参与体验,产品经理需要出具需求文档,流程图,确保大家对需求的理解无异议。在第二次回顾会议上,大家没有再提出代码不规范,产出效率低等问题,但还是有人提出需求不明确的问题,或者说是需求明确了,但有些细节我就是没想到。比如需求文档里说明,用户可以管理自己的简历,然后开发人员这边做了简历的添加,编辑,但是没有做简历的删除,后来经过反馈,增加了简历删除的功能,经过测试发现,用户可以删除别人的简历,这里就产生了一个bug,用户应该只能删除自己的简历。这种类似的问题可以归集到需求不明确,需求中没有明确的告知用户可以删除自己的简历,也没有明确的告知用户不可以删除别人的简历。这个问题也可以归结为是开发人员考虑不足的问题,开发经验不够丰富,所以没有想到可以有删除的功能的存在,或者没有验证是否是自己的简历就可以删除。单总的来说,如果在需求阶段就明确好要有简历删除的功能,并且用户只能删除自己的简历,那么也能在很大程度上去避免类似的错误的产生。所以在第二次回顾交流会后,我对需求文档的要求是尽可能的详尽,越详细越好。


如何在公司实行敏捷

针对公司现状,以及最近两次回顾交流所反馈出来的问题,结合敏捷开发的理念,我做了如下调整

与项目经理跟产品经理讨论前

  • 需求问题,需求尚存在不明确的地方
    • 解决方案
      • 由产品经理带领客户团队(项目经理,设计,文案,实际客户)共同研讨用户故事与需求
      • 座位调换,项目经理与产品经理处于同一位置,便于需求的接收和意见的交换
      • 其他方案待定
  • 日报内容与实际完成出现较大的偏差
    • 解决方案
      • 技术部分为产品团队与研发团队,日报统一由各组员发至经理处,经理统一在工作汇报群汇报整体进度
      • 产品组负责产品需求,设计图,文案,测试,研发部负责项目的开发,部署
      • 产品团队每周至少进行一次项目效果展示评审(评审时间由双方经理协定)

11/19/2019 12:26:47 PM

与项目经理跟产品经理讨论后

  • 需求问题
    • 项目经理先跟业务对接,由项目经理担任真实客户,避免产品团队频繁与业务团队频繁接触,造成需求的混乱
    • 将项目经理与产品经理安排在一块,便于需求的沟通
    • 尽可能详尽的需求文档
  • 应对需求变更
    • 小步迭代,两周为一个迭代周期
    • 需求排列优先级,每次在需求池中挑出一两个高优先级的做(开发团队应该总是先开发的是对客户具有较高价值的需求)
  • 敏捷方法
    • 建立公共代码库,可复用的构件
    • 回顾交流会至少一月一次
      • 不要在项目回顾会议充满抱怨和指责
      • 以提高团队生产力为目的
  • 质量保证
    • 开发组完成后提供测试地址给产品部,由产品成员进行评审

11/20/2019 2:04:24 PM


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342