软件开发的那些坑-目标的重要性

项目上线有一段时间了,上线后大家忙着改bug,忙着汇报,忙着二期的规划,一直没有坐下来一起聊聊。

上周,我还是决定花费大家半天的时间,组织开了迭代回顾会。

迭代回顾会对于敏捷来讲,是一个很重要的实践,但其实不提敏捷的时候,我们也在做,只是有个更普通的名字,叫项目总结会。(迭代回顾会的实践方法见文章最后)

会上,当我们回顾了项目过程时,发现一个重要问题,这个问题就是:经常性的,我们忽略了或忘了目标,这里的目标应该有但不限于以下内容。

一、 业务目标

说出来,大家可能都觉得不可思议,没有目标,那项目组最终要交付什么样的系统?项目组又在为了什么而忙?

可事实就是如此,很多时候,我们盲目的就开始了一个项目,然后盲目的就做出一堆功能。

真实情况是这样的,我们的研发团队不是一个真正的互联网产品团队,虽然有产品经理的角色,也基本是技术主管或经理担当的,结果就是我们更关注的是要做哪些功能。

例如,我们规划要做一个公有云系统,产品经理就会看世面上的公有云产品:华为云,阿里云,亚马逊等,然后去参考他们的界面,去试用他们的功能,恨不得copy一个类似的产品出来。

实际上,我们并没有想清楚,华为云,阿里云已经做起来了,我们为什么还要做这个系统?我们是比他们有更强大的技术能力,能快速的仿造出一个公有云系统,跟他们抗衡或分一杯羹?还是我们的资源比人家便宜?还是我们的安全性或服务可以做的比他们好,让客户觉得更有保障?

可是,至少从目前看,我们的技术实力并不比人家强;据我了解,亚马逊本来就是因为那些资源闲着也是闲着,才做了个公有云来处理闲置的资源,其他的市面上单独卖I层资源的,都是在做赔本生意;还有,公司内部的环境还存在各种单点,无容灾系统等问题;

那我们为什么要做这个系统?我们的客户是谁?客户的使用场景是什么?我们能为他们解决什么问题?这点就决定了我们的业务目标是什么、产品和服务是如何定义的,也决定了我们的产品跟其他的竞争对手的差异性。

所以,做一个产品,我们核心要明确业务目标,确定目标用户、梳理业务场景并进行产品定义。

开发都启动了,才有人点拨我们,我们差不多花了整整一个月才从想到想明白,造成了部分返工。

二、进度目标

需求清楚了后,技术负责人将需求转化成开发计划,接下来就可以开发了。

开发计划的坑同样很多,完全依赖于技术负责人对需求的理解,以及将需求转化为开发的设计能力。对需求的不理解或理解偏差,以及较差的设计能力导致系统扩展能力不足,都会导致不必要的返工,并且可能会低估工作难度,导致计划评估不准。

于是,在开发阶段,又有一个很容易迷失的目标:进度目标。因为以上主要原因,就算计划做的再详尽,人员再稳定,计划和实际执行也是很难一致。

加上公司内部的系统,没有客户抽着鞭子催你,项目经理也很容易做着做着被现实屈服,做到哪,算到哪,不停的变更发布计划。

首先,要解决的是需求到设计的转化,形成双向评审机制。产品经理除了输出业务流程和原型外,还要输出需求文档,并且需求文档要能细化到功能点,包括界面的字段说明,长度等,技术负责人评审确认;而当技术负责人完成设计后,产品经理要反向的参与进来评审。

然后,要严肃计划,计划是每个人的承诺,不是完全不可变,但是一旦定下来,大家就要严格执行,无法完成的就自己想办法,要不加班,要不优化提高个人生产率。

三 、测试目标

很多系统测试,最注重的还是功能测试,而且偏向于功能点的测试,忽略了贯穿测试。

所以,一开始就要确认测试的目标,要包括功能测试,安全测试,静态代码扫描等,还要有兼容性测试,一开始在ue开始做静态页面的时候就要明确好要支持的浏览器版本,省的理解不同,还要做改造才能向下兼容。

性能测试指标也要一开始就跟测试人员确定好,多少用户量,满足多少tps,响应时间最长多少等必须明确。

四、 个人目标

做每个项目,除了达成项目的目标外,我们也要给自己设定一个目标。比如,我想通过这个项目让老板对我刮目相看,想在公司中扬名立业,让大家都知道,这么牛的系统是我带队开发的。

或者我想通过这个项目达到坚持每日过进度,有效管理项目计划的目的。

或者,我想通过这个项目实践我刚刚学习到的沟通技巧,在面对冲突时,或关键对话时。

或者,我想按照敏捷的方法试一下项目管理过程,更或者特别微小的,就是想试试敏捷的生产率评估或持续集成。

作为开发人员,你可以定的目标是了解整个项目的业务,而不是只关心自己开发的那部分功能,或者是要学会使用一种前台框架,或者熟悉redis,或者学会部署监控系统,日志系统。

附: 迭代回顾

每个迭代完成后,项目经理要组织产品经理以及技术经理在内的项目团队一起进行迭代回顾。

项目经理可以回顾下整个迭代过程,大家轮流发言,每个人都回顾一下他认为哪些是做的好的,哪些可以做的更好, 哪些需要在下个迭代中改变,具体有什么建议。

要注意的是,通过回顾,你会发现需要改进的点很多,都改过来变得很困难,所以,结束前,还是要跟大家一起商量出下个迭代优先要解决的TOP5。

迭代回顾特别重要,否则,你就会发现在下一个迭代中,团队还是在不断重犯同样的错误。尤其提醒的是,氛围也很重要,不要把迭代回顾变成批斗大会,因为我们的目标是为了在下一个迭代能够做的更好,而不是让大家自我否定,退缩,失望。

时间: 2024-11-05 16:00:49

软件开发的那些坑-目标的重要性的相关文章

软件工程:传统软件工程 vs 敏捷软件开发

前言 软件工程(Software Engineering): 是一种层次化技术. 将系统化的.规范的.可量化的方法应用于软件的开发.运行和维护,即将工程化的方法应用于软件. 研究"建立和使用一套合理的工作原则,以便经济地获得可靠的.可以在实际机器上高效运行的软件"的方法. 敏捷软件开发(Agile software development): 一种应对快速变化的需求的一种软件开发方法.基于迭代和增量开发,通过自组织,跨团队,沟通协作完成开发工作. 一.传统软件工程 (一)产生背景 随着

《敏捷软件开发读书笔记之一》

要想成为一名优秀的软件开发者,需要熟练应用编程语言和开发工具,更重要的是能够领悟代美代码背后的原则和前人总结的经验——这正是本书的主题.本书凝聚了世界级软件开发大师RobertCMartin数十年软件开发和培训经验,不仅是一部深入浅出.生动易懂的面向对象原则与模式著作,而且还是一部通俗的敏捷方法导引书和快速实用UML教程.分为敏捷开发,敏捷设计,薪水支付案例研究,打包薪水支付系统,气象站案例研究和ETS案例研究六个部分,包含30个章节.以下是我对前两个部分的认识及见解: 以下六章是对第一部分敏捷

Linus 谈软件开发管理经验

原文出处: linuxtoday   译文出处:CSDN // 伯乐在线转注:英文原文写于 2011 年 导读:没有人比Linus Torvalds更了解软件开发项目管理中的酸甜苦辣了.作为Linux的创建者,Torvalds在过去二十年指导了数以千计的开发者共同改进开源操作系统内核. 文章内容如下: Linus Torvalds说,有两件事,世界上大都数人,无论是独立开发者还是公司级别的开发团队,都有普遍的错误认知. 其一:“大都数人认为可以把事情丢给其他人,让他们帮忙.在你公开你的想法后,你

敏捷软件开发与传统软件开发的对比

敏捷软件开发与传统软件开发的对比 最早了解敏捷开发是通过大二的一次博雅课堂,一位在百度工作的北航学长跟我们分享了他近年来从事敏捷开发的经历.印象最深的一句话是一个延迟3个月交付100%功能的软件和一个按时交付75%核心功能的软件,敏捷软件开发者更愿意选择后者.本学期的软件工程基础课又向我们讲授了传统软件开发,经过课上和课后的学习,对于敏捷软件开发和传统软件开发有了浅显的认识和理解.由于课上学习的重点是传统软件开发,所以课下对敏捷软件开发进行了更多的涉猎,本文以敏捷软件开发为主体,来分析其与传统软

定论——软件开发的方法论探讨

http://www.jianshu.com/p/9593bd7b28d9 一.消除隐喻 1.隐喻 软件开发这件事情,出现得很晚.距今只有几十年的时间,关于它的定义,我们可以简单地说:"就是把软件做出来." 这基本上等于什么都没有说.而软件开发究竟是怎么回事,大家也没有搞明白,于是隐喻就派上用场了.当你要向一个完全没有概念的朋友,解释什么是软件开发的时候,你无法向解释建筑工程那样把他带到现场去看--案件开发的现场,你的朋友会以为软件开发就是一群人坐在电脑前面打键盘--你只能打比方:它就

让你提前认识软件开发(39):软件研发之殇

第3部分 软件研发工作总结 软件研发之殇 在经典著作<人月神话>中,作者提出了一个观点:绝大部分的软件研发项目都不能按期完毕.我工作也有一段时间了,发现这确实是一个不争的事实.我所从事的项目中,能按期按质完毕的还真的非常少.这是什么原因呢?我工作不够努力吗?非也.为了完毕任务,我也是常常加班加点地工作,生怕惹恼了上司而饭碗不保. 软件研发是一个系统的project,是由非常多环节组成的.你一个人把自己那部分工作做好了,还不足以保证整个系统能正常运转.在本文中,我依照软件的生命周期(例如以下图所

软件开发流程(转载)

软件开发流程 迭代化软件开发技术 1. 传统开发流程的问题 传统的 软件开发流程是一个文档驱动的流程,它将整个软件开发过程划分为顺序相接的几个阶段,每一个阶段都必需完毕所有规定的任务(文档)后才可以进入下一个阶段. 如必须完毕所有的系统需求规格说明书之后才可以进入概要设计阶段,编码必需在系统设计完毕之后才可以进行.这就意味着仅仅有当所有的系统模块所有开发完毕之 后,我们才进行系统集成,对于一个由上百个模块组的复杂系统来说,这是一个很艰巨而漫长的工作. 随着我们所开发的软件项目越来越复杂,传统的瀑

软件开发进度管理

一.什么是软件项目管理 软件项目管理是按需求确定范围.按目标制定项目计划.按计划执行管理的过 程.对软件开发各阶段加强项目管理的根本目的在于增强对软件开发的控 制能力,提升软件开发的质量.软件项目的建设按软件工程的生命周期法可分为项目立项.启动.需求分析.系统设计.系统开发.系统测试.系统上线.项目验收 和上线后评估等9个阶段进行. 加强软件项目管理,就是以软件工程的各个环节为管理主线,将动态项目管理贯穿其中,通过对软件开发的项目范围.项目进度.项目质量.项目沟通.人力资源.项目成本六大核心要素

为什么需要软件开发报告

由于需要交软件开发报告的作业,没办法,硬着头皮写了.本文主要讲讲我在写这篇报告过程中的一些感悟. 在公司,我主要负责技术实现的,也就是标准的码农.平时我很少考虑文档的重要性,当然,我自己也很少写文档,一直都觉得写文档很浪费时间.在仔细地分析了各种软件开发报告后,我发现我彻底地错了.程序功能的实现并不难,只要掌握了相关技术,或者说即使不会,网上也有很多参考资料.而文档的编写却是真正考察一个人的能力,它体现了一个人思考问题解决问题的能力.可以毫不含糊地说,要写出一份好的文档比开发一个好的程序难多了.