`
庄表伟
  • 浏览: 1145704 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

知易行难的软件开发风险管理——发表于2007-02《程序员》

阅读更多

  前段时间我写了一篇blog,叫做《小游戏,大道理》。是关于一个叫做“ColorLinez”的小游戏的。虽 然表面上是总结的游戏策略,而我心里一直在琢磨的,还是开发管理的事情。这回《程序员》杂志向我约稿关于项目管理的经验,我就想到拿这篇文章来做基础,谈 谈我对软件开发风险管理的看法。

  这个ColorLinez,是一个非常简单的游戏。通过移动小球,连成5个以上的一排直线或斜线,就可以消去。每次移动一个小球,如果没有消球,电脑就会再向棋盘投入三个小球。等到棋盘被铺满,则游戏结束。

  令我相当沮丧的是,这么简单的一个游戏,我却始终玩不好。为什么呢?我开始带着思考去玩这个游戏,一边玩,一边总结,越是总结,就越是发现,这些道理与风险管理中的道理,大有相通之处。

  1、不要过多的猜测
  电脑每次向棋盘中投入三个颜色的小球,可能颜色相同,也可能各不相同。我们能够知道的,只有一点:下一次投向棋盘的,将是哪三个颜色的球。我们无法判断再下一次的小球,任何过多的猜测,都是错误的。

  从开发管理来说,我们能够获知的,只能是目前用户所提出的各项需求。我们无法猜测,用户下一次会提出什么需求。 也许有人会说,我们可以做计划呀,不是有“长期、中期、短期”诸如此类的计划么?问题在于,大多是开发计划,都一定会改变。越是长时段的开发计划,越是有 可能变动得面目全非。猜测和提前准备,最不坏的结果是:“做了无用功”。更糟糕的可能是:“当初花了多少时间去走的歪路,还要再花那么多时间走回来,才能 继续前进。”

  所谓“KISS”原则,讲的就是这个道理。如果有人希望通过预测需求的变动,以减小风险,那就是缘木求鱼了。

  2、过多的依赖,往往会失败。
   玩ColorLinez的时候,往往会出现环环相扣的情况,如果我能够消掉左边的红色的五个球,就能够继续消掉被红色球挡住的蓝色球,进而再消掉被蓝色球堵的黄色球......这要的局面,除非运气非常好,一般都会死得很难看。

  在源代码的层次,我们把这种情况,称之为依赖,一个函数依赖于另一个函数,一个类依赖于另一个类,一个模块依赖于另一个模块。一个项目中的代码依赖情况越是复杂混乱,这个项目失败的可能性就越大。

  再上升一层,说开发管理。当我布置一个任务给“小王”,然后这个任务其实仅仅靠“小王”并不能够完成,在我或者 知道,或者不知道的情况下,他需要寻求“小张”的部分帮助。而“小张”在这个事情上,还不能自作主张,他还要先问问“大林”对这个方案的意见。而“大林” 觉得,这个问题,最好和新来的一个做兼职的同事商量一下。而这个做兼职的同事,是通过email和我们联系的,过来一趟不容易。

  我以为这个任务的工期,是由我给“小王”布置的。到后来发现事情拖了很长时间都没有完成,才知道原来这个任务背后有这么复杂的依赖关系。正确的解决办法是,一开始就搞清楚这个任务究竟和多少人有关系?然后想办法集中起来沟通协调,然后分头进行,齐头并进。

  再上升一层来看这个问题,这其实是风险管理的一个重要组成部分。开发中的各个环节之间的依赖关系,如果过于繁杂,就会包含巨大的风险。要化解这样的风险,及时理顺关系,促进有效沟通,是非常必要的手段。

  3、要给自己留下退路
  ColorLinez的电脑算法,相当恶 毒。我猜他是这么干的,估计你的目的,然后伺机堵死。面对这种风险,你不能假设电脑是仁慈的,或者赌自己足够幸运。千万不要赌,十赌九输。正如前面所说 的,不要猜测。但是,却可以通过合理的移动,使得接下来投入棋盘的小球,总不会制造灾难。这就是留有退路。

  再说软件开发管理中的风险管理,我们无法预测需求的变动,我们能够控制的,只是这个开发团队。那么,要减小风险,其实就是两个办法:一个是上面讲的,不要给自己制造风险。另一个就是,通过合理的调度、安排,以缓冲或者规避,需求变动可能带来的风险。

  更加直接一点,就是说,在制定项目计划的时候,一定不能只做乐观估计,更不能天真的相信,一切都会顺利。必须考虑各种可能的风险,并且为这些风险,留出合理的缓冲时间和后备资源。发现一种方案行不通时,一定要尽快另谋出路。

  4、小心,再小心一些
  ColorLinez,是一个完全没有时 间限制的游戏,每一步你都可以思考无限长的时间。但是,一旦移动了小球,就无法再后悔了。往往会出现这样的情况,一步走错,满盘皆输。漏看、点错、突然的 乐观、一时兴起、思维定式等等,都会把你带向深渊。大好的局面,一下子就不可收拾了。

  软件开发管理,就更难了,一方面,工期要求向来是越快越好,容不得你拖拖拉拉,细细想来。另一方面,又和游戏一样,不能悔棋。如果公司经得起折腾、吞得下苦果、信得过你,也许会再给你一次机会。但是......很难......

  风险管理,最为重要、也是最困难的一点,是具备足够的风险意识。这个风险意识,还不是简单的,知道有多少风险, 然后就去防范它。首先要有大局观,能够常常关注全局的风险,而不是局限于自己的思维定式。要始终理性的思考和判断,而不是受一时一事的影响。要养成良好的 工作习惯,以避免忙中出错。要常常自我反省,以便更好的改进管理方法。

  总之,要慎之又慎,以免一失足成千古恨。道理就是那么简单的道理,要始终记得去防范风险,就难了。所谓知易行难,正是这个意思。

分享到:
评论
6 楼 dearwolf 2007-03-05  
嗯,生于忧患死于安乐的道理,被异常讲的更通俗易懂了
5 楼 抛出异常的爱 2007-03-05  
dearwolf 写道
第三条死活都看不懂,也许是因为我没有玩过这个游戏?


守规则:
一个好规则在于每个人都会去守
不守规则的"好办法"
说明不是规则错了
就是办法是错的...
一次破了规矩那么以后又会有破规矩的地方
所以
规矩不是讨价还价


看风险:
时间还有...上网看看?
每一分钟的浪费都不能真正浪费掉
总有你还回来的时候
两个工作先作哪个?
那个都可以?不是...
好选择的时候不考虑清楚
到不好选时靠急智?
那时就没的可选了....
时刻要
有危机感才可能活的比别人更久一点



舍得放弃?
一个无理要求,时间还够作,要不要答应?
要作?不要作?哪个风险更高
这不是1+1=2的数学题
庄表伟 100%失败来自于自已.....
你在一开始就没有
选择一个可以打嬴的游戏

放弃一个公司为什么?
你无法得到你想得到的那就是失败
放弃它
不放弃一个公司为什么?
你可以改变它让它带着你达到你的目标
(如果不用改变就能达到更好了)

你的目标太高就失败
定的低成功可能性高...
但真的成功了么?
浪费了人生如果也算进来....

几乎所有的人都在最后的失败中渡过一生....
4 楼 tuti 2007-03-05  
小平 曰:
冷静观察
稳住阵脚
沉着应付
善于守拙
3 楼 dearwolf 2007-03-05  
第三条死活都看不懂,也许是因为我没有玩过这个游戏?
2 楼 抛出异常的爱 2007-03-05  
我手机上正好有这个游戏
看了你的BLOG
玩了整整两个多月
浪费了两个多月在地铁上看书的时间....
总结出来的意义
1不要等一切不可收拾了才去寻找办法,没有办法
看出来所有的棋只能走XXX步时
那么风险就已经很高了,
一切只能看电脑会不会发善心了
2机会=风险(但不是在最后)
决定你会不会死亡的棋
其实是在二百分左右的时候
当时的选择很多
每当你有很多选择时
那么你的机会来了
同时风险也来了
选对了你可以再多支持二百分
选错了你就可以在挣二百分时死
所以在一切大好时要多想多考虑
因为这是决定你死亡的时间的棋
3选择什么样的路走?
如果有很多选择时要选哪个?

规则
就是看到如果有不规律的可能
那么就把它们给消灭
不要等他们成型

风险,
就是看如果现在不管他
他可能被堵住的可能性有多高...
如果有5个格子是必经之路
那么下一回合,被堵上可能性会达到空前的高
如果有N条路那么,被堵上可能性就是很少

放弃
如果一个路被堵了
很多人会把路搬开
其实不然
应该去算算是不是这条路还值得去搬
算算是否有比这个风险还大的应该去走.
1 楼 dearwolf 2007-03-05  
发明KISS原则滴人简直就素额滴神哪

相关推荐

    项目管理案例

    **标签解析**:“project2003”标签则直接指明了文章讨论的核心工具——Microsoft Project 2003,这款软件是项目管理领域的经典工具之一,被广泛应用于企业级项目管理和个人项目规划。 #### 二、项目管理流程概览 ...

    知易行难辩论稿.doc

    知易行难辩论稿.doc

    品牌战略管理知易行难的SBU品牌战略管理.pdf

    品牌战略管理是企业在市场中建立和维护品牌影响力的关键环节,尤其在SBU(战略业务单元)层面,这一管理显得尤为重要。品牌战略管理不仅涉及到品牌定位、形象塑造,还包括了品牌推广、价值提升以及顾客关系管理等多...

    项目管理之于安全开发.pdf

    随着信息安全的重要性不断被认可和提高,安全开发也日益受到软件研发管理者的重视。但是安全开发不仅仅是流程、意识和技能的问题,它也是一个工程性问题,安全开发是需要成本的。如何避免安全开发成为压死骆驼的最后...

    大数据知易行难.docx

    企业不仅要在硬件和软件上投入,还要进行深层次的改革,包括培养大数据思维,接纳数据的不精确性,以及调整内部架构以适应大数据时代的需求。只有这样,才能真正把握住大数据带来的机遇,将其转化为企业的竞争优势。

    知易行难:探索券商数字化转型成功之路.pdf

    知易行难:探索券商数字化转型成功之路.pdf

    德勤:放眼当下、造福未来:ESG助力企业在投后整合中释放价值.pdf

    德勤发布的这份报告——《放眼当下、造福未来:ESG助力企业在投后整合中释放价值》深入探讨了ESG如何成为企业价值增长的新引擎,并提供了实施策略和案例研究。 #### 观念重塑:ESG引领价值增长新航向,企业管理变革...

    等级保护知易行难_银企IT主管把脉银行业信息安全等级保护整理.pdf

    等级保护知易行难_银企IT主管把脉银行业信息安全等级保护整理.pdf

    api manager, php接口管理工具,php api manager工具,php api工具

    在软件开发过程中,API(Application Programming Interface)扮演着至关重要的角色,它允许不同的应用程序之间进行数据交换和功能调用。API Manager 的目标是帮助开发团队更便捷、规范地管理这些接口,提升开发效率...

    bitnami-redmine-3.4.4-3-linux-x64-installer.run

    Redmine是用Ruby开发的基于web的项目管理软件,是用ROR框架开发的一套跨平台项目管理系统,据说是源于Basecamp的ror版而来,支持多种数据库,有不少自己独特的功能,例如提供wiki、新闻台等,还可以集成其他版本管理...

    德勤:放眼当下、造福未来:ESG助力企业在投后整合中释放价值(1).pdf

    - **风险预防**:将ESG纳入日常管理有助于企业规避潜在的社会和环境风险。 - **人才体系建设**:重视ESG的企业能够吸引更多优秀人才加入,建立稳定的人才队伍。 ##### 1.2 ESG在中国资本市场的作用 在中国资本市场...

    高级java笔试题-learning-java-bible:Java宝典--实战及解析

    Kerievsky(本书荣获2005年《软件开发》杂志图书通用类的效率大奖) 当一头牛拉不动车时,很少有人去找一头更大更强壮的牛,而是找来更多的牛一起拉。 -- 《Hadoop权威指南》 一个字:拆。 256K is OK.(256K应该足够了...

    麦肯锡:知易行难:探索券商数字化转型成功之路.pdf

    行业报告

    Api manager for php,Api 管理工具,php api管理工具

    API Manager for PHP是一款专为PHP开发的API管理工具,它旨在帮助开发者更加高效地管理和监控他们的API接口。本文将深入探讨API管理的重要性、API Manager for PHP的功能特性以及如何使用这款工具来优化API开发流程...

    Hyper-V-Winows10.7z

    总之,“Hyper-V-Winows10.7z”压缩包提供的工具和脚本旨在简化在Windows 10上安装和管理Hyper-V虚拟机的过程,这对于开发者、系统管理员和测试人员来说是一个非常有用的资源。正确地以管理员权限运行该脚本,可以...

    教导主任述职报告模板集锦六篇.doc

    - 知易行难:理论与实践之间的差距,需要不断思考和探索如何将理论转化为有效的实际行动。 - 面临的问题:如何在提高课堂效率的同时减轻教师负担,平衡课程改革与传统文化的传承,以及如何确保教学效果。 3. **...

    教导主任个人述职报告.docx

    - **知易行难**:理论上的计划与实际操作之间的差距。 - **提高课堂教学效率**:在保证教学质量的同时减少教师负担。 - **平衡现代课程与传统文化**:在教学内容中融入传统文化元素,同时保持与时代同步。 ### 二、...

    教导主任述职报告模板九篇.doc

    教育主任是学校管理层中的重要角色,主要负责协助校长进行教育教学管理工作,确保教学质量和校园秩序。以下是对教育主任岗位职责的详细解析: 1. **校长助手**: 教育主任应成为校长在教育政策执行、教学规划和教师...

    教导主任述职报告汇编6篇.docx

    【教导主任述职报告汇编6篇.docx】的文件是一个包含教导主任工作反思和总结的文档,主要讨论了教导主任的职责、工作挑战以及...通过反思和规划,教导主任致力于不断提高个人能力和管理水平,以更好地服务于学校和学生。

Global site tag (gtag.js) - Google Analytics