"没有银弹"再思考

《人月神话》到目前为止,是对我职业生涯影响最重要的一本书之一,“没有银弹”在我各个阶段都影响着的开发思路。

一、什么是“人月神话”

“人月神话”这个标题在中国有很强的迷惑性,但是其英语还是简单明了的:The Mythical Man-Month(说到这个,还想吐槽《深入理解计算机系统》这本书名的翻译)。简单来说就是,在软件工程不能简单用人月来换做成工作量,里面有一个很悲观的结论:向进度落后的项目追加人力,只会使进度更加落后。具体原因,在这里不再赘述,可以参考原书。

当然里面提了很多其概念,我是在工作第二年的时候看了这本书,对我影响比较深的主要有三个点:人月神话外科手术队伍以及没有银弹

如果是软件工程师的话,最希望的是一件事情能够自己一个人来完成,因为可以省去沟通、交流的成本,所以围绕成本计算时,使用人月是危险和带有欺骗性的神话,因为它暗示人员数量和时间可以相互替代。人月神话既是从这入手说明为啥:向进度落后的项目追加人力,只会使进度更加落后。所以,在我自己需要做项目管理、作为team leader安排任务时,会经常考虑到这点。

外科手术队伍,其实讲的很大,但是我自己从中深刻认识的只有一点:同样是两年经验而且在受到同样培训的情况下,优秀的程序员是较差的10倍;在软件工程中,架构(师)对项目的影响最大。这篇文章对于影响最大的是,团队的每个人都是合理存在的,不管优秀与否,如果你只是盯着比你差的人看,并且感到不爽,那就意味着其实你跟他没有区别;所以到了工作第三年以后,我基本能够平常心的看待每一位团队成员,并且帮助自己所认为差劲的成员以及向优秀成员学习。

而没有银弹是我重新思考的一个点。

二、银弹是什么

银弹这个词,属于直译了,其实是来源国外的故事,隐藏了美国人可能都听说过的狼人故事:

狼人(werefore)是所有怪兽故事中最恐怖的角色,狼人平常看起来像是一个人,但是会在月圆之夜成为一只凶狠的狼。“They transform unexpectedly from the familiar into horrors”。在一些故事中,被狼人咬伤的人也会成为狼人。在一些电影中,silver bullet(银弹)被视作能迅速杀死狼人的武器。为什么是银弹?也许银色被视作是月亮,子弹是快狠准的武器,狼人在月圆之夜变身,那么银弹作为杀死狼人的灵丹妙药也就解释的通了。

所以如果想要一个词语替换银弹,我觉得用捷径可以一定程度来替代。

而书中对没有银弹的定义是:在未来的十年内,无论是在技术还是管理方法上,都看不出有任何突破性的进步,能够保证在十年内大幅度提搞软件的生产率、可靠性和简洁性

作者对技术的认知绝不是我这种level的人可以比的。但是没有银弹的一小部分理念,早已被我应用到了自己的开发思路。如果从0开始开发一个项目,很多人会犹豫不决,不知道从哪里下手,因为我们都想设计、开发一个“完美”的软件,我们可能会设想n多种实现方式,当我们选择一种方式时,途中经常遇到困难,会选择改变自己的思路,选择另外一个思路又从头开始,但是往往又会遇到新的问题,如此循环往复,时间过去了很久却进度感人。上面正是我自己曾经经历过的困惑。而没有银弹给我带来的启发是,我应该尽可能思考多的情况下快速将功能个实现,然后后续来持续迭代、持续改善。很多人会觉得这就是“代码屎山”的来源,但是别忘了还有持续迭代和改善。应用这个理论上后,我已经独立从0到1做过两个软件模块的开发,并且无论是自己还是外部的评价,还是不错的;尤其是在NIO工作期间的重构,这个理念是我落地、并且不算太差的最重要保证,所以即使在00.05.00第一个版本上线后,我还做过两次代码几千行以上的模块内重构(当然要考虑软件管理了)。所以每次自我介绍时,我都写上:不是在重构就是在写bug的路上。

 

而今天想谈的没有银弹是在周五的例会上,自我介绍时,我说:来到这里,学涛画了一个很大的“饼”,我的目标是给这个“大饼”贡献自己的成果,让这个“大饼”能够落地。下台后,我一下想到了没有银弹。结合在NIO的重构,感觉一下想通了没有银弹的很多结论(暂且先不论对错)。

没有银弹在《人月神话》中有两章,但是不知道是不是翻译的原因,我看起来都不是很流畅。暂且先看我自己对没有银弹的总结:

  1. 应该快速构建原型
  2. 区分根本任务和次要任务,次要任务除非占了所有工作的9/10,否则即使次要任务缩减到0,也不会带来生产效率的提高----精炼需求
  3. 造还是用现成的需要权衡
  4. 优秀的设计师和管理人员十分重要
  5. 增量开发

第1点其实就是前面以我自己经历所提到。当然快速原型对于团队来说也是很重要的,旨在验证方案的可行性和弄清楚实现过程会遇到大致问题。让我重新思考的是2,3,4点。

当然是以我过去一年多甚至未来较长一段时间为核心的诊断来阐述。

三、优秀的设计师和管理人员十分重要

学涛画的饼很重要,如果没有学涛的饼不会让我意识到,对于真正的重构,应该是车端、云端一起来做的,而不是局部或者单侧重构。坦白来说,学涛并没有提出的具体落地方案,但是他见过诊断从传统到车云一体化的变革,见证了很多产品的迭代,在我看来他提出了很好的产品设计(或者是概念),从设计端解决了后续开发端需要承担的。比如:

  1. 远程诊断,诊断指令怎么定义,怎么保证后续需求来临时能够很好的拓展
  2. 诊断数据如何管理,云端和售后如何共享和同步
  3. 智能诊断的设计,如何与传统的uds相结合
  4. 用户习惯收集是否也能通过诊断来做
  5. ......

在我之前,我一直忽略了优秀产品经理(学涛当然不仅是这个角色了)的重要性,我一直错误的以为有好的架构设计师就能保证软件项目顺利的展开,在加上优秀的开发人员,就一定能够很好的落地,从来没有意识到产品设计是一个软件架构设计师更加前期、同时也是更加重要的角色。

 

四、造还是用?

刚来到新公司的特别不适应,因为跟同事沟通的过程中,总是能听到,我们应该找供应商看看能不能提供现成的解决方案。但是经历过ET7整个量产的我来说,我是一个自研无脑吹,正是由于很多软件是自研的,所以在应付多变的需求时,依然可以快速的实现,所以我还是就经验主义的认为,我们自己应该多开发以应对后续不可预知的需求。可是我没有考虑过,正是由于自研才带来较多的问题,导致很多设想没法按时、按设计落地;又因为自研,产品经理不考虑需求的长远性,反正自研,我们总是能够实现。如果是用现成的,设计产品时,我们总会以现有的产品的特性来展开需求设计。曾经我对很多车企自主开发AUTOSAR CP平台有很高的评价,经历过NVOS(NIO Vehilce OS )CP的人来说,现在我不会一味的以为自研就是高大上,是实力的象征,会更加深层次的去考虑自研到底带来什么好处,另一方面是否又带了兄弟部门的996?

五、精炼需求

在NIO时,我经常抱怨,为啥要用python来实现诊断相关的呀,而且还用在了量产项目,每次新需求来了就是改改改,总是担心牵一发而动全身。在做team leader的半年里,我一度认为很多甚至所有问题都是来源python实现。所以我总是跟项目、领导提到,如果使用C/C++来重构一定能够解决我们现在遇到的诸多问题。但是真的是这样的么?现在想想重构就能解决问题真的是有点马后炮了,因为现在这个阶段是已经把大部分需求都精炼出来了,相当于已经站在了巨人的肩膀上了,所以无论用什么语言来实现,都能避免之前的问题。

软件本质上是需要建立概念模型,而概念模型来源需求,如果这个根本都错了,那么后续再怎么高手如云,用什么语言,甚至什么CMMI、敏捷、持续交付以及Devops都是于事无补。软件仅仅是实现需求的一种工具,而不是需求本身,如何精炼需求成为了提高生产力的关键。

软件工程的终极解决方案(银弹),还是卓越的设计(Great Design)。

目前的软件工程,从“设计”到“构建”,这个期间需要投入大量的工作量。很多的情况是,构建完了,才发现当初的设计有问题。当然,有时候设计也会认为是构建环节出了问题。如果做到了“设计”即“构建”,减少了中间环节,的确是可以提升生产率。   这项技术的发展,如果真的产生了“突破”,可能会引发有两个方面的变化。

  1. 真正拥有、产生、处理信息的客户,会“摆脱”对传统的软件开发组织(码农们)的依赖。类似于:PC以及个人文档处理工具的普及,使得原来专业的“打字员”迅速消失。
  2. 有想法、专业的设计师,可以方便地搭建自己的方案。现在觉得,新能源车的“第三条赛道”会是一个很好的方向。

六、写在最后

周末重读了《人月神话》没有银弹的章节,结合过去一年多在NIO的经历,以及现在ZEEKR的所看到一些做法,让我更加辩证的去看不同形式、不同公司在应对软件定义汽车环境下的做法和方向。以前我认为,在软件领域,造车新势力有绝对的优势,但是现在我不这么认为了;传统汽车所成立的新能源公司---也就是“第三条赛道”在提炼需求以及定义产品上有得天独厚的优势,而这恰恰也是软件开发中很重要的一环。本身以具体案例来举例,但是感觉会可能会涉及信息安全的问题,只能以枯燥的文字来记录了。

评论

  1. 2年前
    2022-7-30 0:41:39

    A fascinating discussion is definitely worth comment. I do think that you ought to publish more about this topic, it may not be a taboo subject but typically people dont speak about such issues. To the next! Many thanks!!

  2. 2年前
    2022-8-18 9:13:05

    There is clearly a bundle to identify about this. I feel you made some nice points in features also. Burl Stickle

  3. 2年前
    2022-8-19 18:47:31

    Beautiful! I am so happy for your family. Wishing speedy recovery for the both of them and God bless you all. Eugene Cianciotta

  4. 2年前
    2022-8-20 0:44:55

    Hi, just wanted to mention, I liked this blog post. Angele Rip Tiphani

  5. 2年前
    2022-8-20 5:30:06

    Well I sincerely enjoyed studying it. This article provided by you is very effective for correct planning. Matthew Linscomb

  6. 2年前
    2022-8-20 11:16:00

    Excellent article. I am dealing with some of these issues as well.. Carson Star

  7. 2年前
    2022-8-20 20:45:48

    I cannot thank you enough for the post. Really thank you! Want more. Harvey Vacarro

  8. Itís difficult to find knowledgeable people about this subject, but you sound like you know what youíre talking about! Thanks

  9. 2年前
    2022-8-23 9:48:18

    Thanks again for the post. Thanks Again. Keep writing. Jefferson Bensley

  10. 2年前
    2022-8-28 0:35:39

    Excellent way of telling, and good post to obtain information regarding my presentation focus, which i am going to convey in university. Nicolas Ripa

  11. 2年前
    2022-8-28 2:42:56

    Thanks for sharing, this is a fantastic blog. Thanks Again. Fantastic. Elden Vansise

  12. 2年前
    2022-9-02 20:31:20

    This is something that will need all of our combined efforts to address. Simon Falchi

  13. 2年前
    2022-9-04 23:27:08

    Say, you got a nice post. Really looking forward to read more. Really Cool. Cornelius Dimler

  14. 2年前
    2022-9-06 20:31:55

    I am truly grateful to the owner of this web site who has shared this enormous article at at this place. Houston Macisaac

  15. 2年前
    2022-9-06 23:01:52

    This is terrific! Appreciation for really being thoughtful and also for deciding on certain marvelous guides most people really want to be aware of. Joel Sweatman

  16. 2年前
    2022-9-07 0:08:34

    Hi mates, pleasant paragraph and nice arguments commented at this place, I am truly enjoying by these. Gordon Holcey

  17. 2年前
    2022-9-07 7:12:12

    I real happy to find this web site on bing, just what I was looking for : D besides saved to favorites. Dana Ricenberg

  18. 2年前
    2022-9-08 3:23:02

    Way cool! Some extremely valid points! I appreciate you penning this post plus the rest of the site is also really good. Ahmed Wickens

  19. 2年前
    2022-9-22 10:06:49

    Good post. I learn something totally new and challenging on sites I stumbleupon everyday. It will always be helpful to read content from other writers and practice a little something from other websites.

  20. 2年前
    2022-10-13 19:46:04

    אני מאוד ממליץ על אתר הזה כנסו עכשיו ותהנו ממגוון רחב של בחורות ברמה מאוד גבוהה. רק באתר ישראל נייט לאדי <a href="https://romantik69.co.il/">https://romantik69.co.il/</a&gt;

  21. 1年前
    2022-12-20 4:15:07

    These are truly enormous ideas in regarding blogging. Deshawn Mirafuentes

  22. 1年前
    2022-12-21 12:18:35

    If you already know everything there is the God of War. Rory Shadd

  23. 1年前
    2022-12-25 2:24:01

    Wow, great blog article. Really looking forward to read more. Awesome. Emory Quails

  24. 1年前
    2022-12-29 18:15:41

    Perfectly pent articles , appreciate it for information . Kelly Lorensen

  25. 1年前
    2023-1-16 22:39:05

    You completed a few nice points there. I did a search on the topic and found a good number of folks will consent with your blog. Mohamed Jabbour

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇