淘客熙熙

主题:【讨论】开楼试论J-20、腾讯的螺旋式开发 -- 从周

共:💬8 🌺23 新:
分页树展主题 · 全看首页 上页
/ 1
下页 末页
  • 家园 【讨论】开楼试论J-20、腾讯的螺旋式开发

    日前我又被震惊了,这个震惊并非来自于什么产品的问世,而是这篇文章《中国歼20采用螺旋式开发完成只需5年》。

    螺旋式开发这个概念我是比较熟悉的,大概10年前在南半球上学时,就接触过这个概念——核心是采用了数学里的迭代法。但因为我的数学水平很差,脑仁里只记得在赛车、软件、飞机等领域中,这个开发方式是很时髦的。多年后,我碰巧听了腾讯的一番讲话,才知道他们也采用了螺旋式开发法,最近的一次,是读了那篇文章,才知道新款式的J20战斗机也用了这个模式。

    在当今世界,软件、产品的开发广泛的受到诸多因素的制约,其中最大的制约条件就是市场的剧烈变化。比如国内的互联网业,10年前还是搜索引擎为王,今天热门的电商、团购、物流、移动互联网、社交还连根毛也没有呢,那个时候的应用开发,更多的是传统的瀑布式开发,他的模式是这样的:

    发现需求->出项目需求报告->细分需求->给各部门派活->所有团队等着->产品到了->测试上线->

    结果A,跟目标有差距,经过debug还能用;结果B,开发得驴唇不对马嘴,失败;结果C,比较完美,直接能用。

    结果A占到了开发结果的60%,然后这个debug过程在不断的重复,而且往往bug会影响核心用途的体验,完全没有问题之日,必然是产品淘汰之时。结果C也比较常见,尤其在中国,这往往是针对成熟产品逆向工程即抄袭的结果,其实问题也很严重,因为推出之时已经过时。

    而螺旋式开发,明显可以规避上述瀑布式开发的几个致命问题:受现有技术能力限制;开发过程中无反馈(尤其是千变万化的市场);采买浪费;满足客户需求难上加难。

    螺旋式开发的模型放大点是这样的:

    外链出处

    这个模式并非是万金油,之所以采用这种模式,是人们在长期的工作中总结出来的一些问题,比如:

    1、项目经理和其团队的素质,是千差万别的,结果也是千差万别的。

    2、设计的结果往往和想象差距较大。

    3、思考总有盲点,而盲点往往致命。

    4、预算永远有限。

    5、需求永远变化。

    ·

    传统瀑布式开发模式上,这5条里的任何一条,就足够要命:

    1、人的因素过于重要,任命了一个白痴和任命了一个性格怪异的天才,结局一样悲惨。

    2、没有反馈,修改细节难上加难。

    3、所有需求永远在现有技术水平之上。

    4、按照需求文档去做,必然会在一些设计细节上浪费过多的时间(举个例,《七龙珠》里给悟空设计的飞碟交工严重停滞,悟空作为客户询问进度,才知道卡在了机内安装音响的问题上)。

    ·

    因为这些问题的致命性,传统工业化大生产开发模式的瀑布式开发,显然不合适了,更加灵活的螺旋式开发问世了,模块式设计也随着这种新型开发模式普及了。

    • 家园 硬件和软件的不同

      硬件的限制是物理,化学,空气动力学之类的客观限制,尽可能逼近理想状态是机械设计师的追求,不知道外在限制去追求永动机的那是民科,飞机性能上挖出5%的优化就是拿奖金评级别的水平了。软件的限制是人,90%的人最多用到10%的功能, 10%的人会觉得100%的功能还不够, 需要更多的改善. 编程员大多就是属于10%的那种. 但是从总体效率提升上, 让90%的人利用上20%的功能比让10%的人提升200%要高得多. 微软和教主就是靠提升90%的人一统江湖的.所以让软件人多接触用户反馈的螺旋开发比光让软件人自己解决自己想像出的需求要实际的多. 软件方面解决清晰定义的问题相比定义出需求问题要简单. 能量化的问题都能找出对应的数据解法, 问题是你怎么量化用户对iphone感觉用得舒服自然. 这个感觉来自各人的习惯和整体使用经验, 头绪太多. 每个人都能说出两三件他觉得不错的地方. 但项目管理不可能对所有说出来的地方都进行改善, 贪多嚼不烂的道理. 其实J-20也有这个发展头绪太多的问题, 能和F-22对抗的基本要求下包含了超巡,隐身, 电子战,信息战各方面的整体素质要求. 不是一个数据上超出就算项目成功了.苏联靠T-34能堆死老虎,黑豹一群大猫,赢得不是赢在单位数据上. 战术使用上, 有些进步会导致量变引起质变,有些只是让数据好看点. 把资源投在哪里同样需要及时反馈.

    • 家园 这个螺旋式开发可不可以理解成小步快跑

      每一步的工作目标都比较简单明确。

      每一步安排的时间都比较紧凑。

      每一步完成之后马上进入下一步。

      • 家园 螺旋式开发的精髓是尽早地与用户交互

        从而尽早发现需求的细节

      • 家园 不是我的理解,螺旋式开发的问题是整体缓慢
        • 家园 你说的是敏捷吗

          J20不懂

          软件开发中迭代有方法可以控制的,通过测试驱动开发方式(TDD)来保证可控,尽早的用功能有限的版本接触用户反馈,反映到下个迭代中。

          当然真要做,什么时候迭代什么还有有个考虑的,尽快小步反馈到迭代中是需要,至少客户能看见进步,团队信心有保障。

          我想不出来J20怎么去迭代,软件不是发动机这些硬家伙,你要是说他的软件系统是迭代开发的,我倒还是能理解。

          • 家园 有一个特征,就是逐步完善

            现有的不完善版也能凑合用,符合文档要求即可。这个东西的优势是能少付出错误的代价,自然就快了。

            但相比传统的瀑布式开发,绝对速度应该还是不行的。

            • 家园 你的理解一定程度上是可以认为是正确的

              相比传统的瀑布式开发,绝对速度应该还是不行的。

              这是理所当然的,完美的瀑布式开发如果不遇到需求变更和技术障碍,那几乎就是按步就班的过程,将在准确的时间和地点击中目标。

              迭代是为了解决上述过程中的严重干扰因素,尤其是需求变更。

              技术障碍可以诱发需求变更,用户反馈也可能带来需求变更。

              每一步都需要搞出个可以‘看’的东西来推进下一步计划,自然不如一口气到底的速度来得快。

分页树展主题 · 全看首页 上页
/ 1
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河