如何落地业务建模
徐昊
Thoughtworks 中国区 CTO
24830 人已学习
新⼈⾸单¥68
登录后,你可以任选2讲全文学习
课程目录
已完结/共 32 讲
如何落地业务建模
15
15
1.0x
00:00/00:00
登录|注册

说点题外话03|银弹可以杀死狼人,但你怎么知道狼人不是你呢?

解决附属性工作
帮助完成本质性工作
技巧
理念
思考题

该思维导图由 AI 生成,仅供参考

你好,我是徐昊。今天我们再来专门说点题外话。
在软件开发的黑话里,有一颗银色子弹(并不是滚筒洗衣机)可以解决一切问题,而我们一代代软件人,都在苦苦追求它。每当有新技术出现的时候,就会有人问,XXX 是不是银弹啊?比如说啊,云计算是不是银弹,DDD 是不是银弹,RESTful API 是不是银弹,低代码是不是银弹(并不是,这是行业毒瘤)。
然而有意思的是,银弹这个隐喻被引入软件开发领域中的时候,是源自 Fred Brooks 经典的软件工程论文《没有银弹:软件工程的本质性与附属性工作》No Silver Bullet—Essence and Accidents of Software Engineering)。
简而言之,Fred Brooks 将软件开发中的工作分为本质性工作(Essential Task)和附属性工作(Accidential Task)。所谓本质工作,就是解决本质性困难的工作。而软件的本质性困难就是:如何从抽象性问题发展出具体概念上的解决方案。也就是如何理解我们要解决的问题,并选择恰当的解决方案。
与之相对的则是附属性工作,也就是将寻找到的解决方案,转化为电脑可执行程序的工作。而在这个过程中遇到的困难,就是附属性困难。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

徐昊在本文中讨论了软件开发中的银弹概念,指出银弹并非解决所有问题的神器。他引用了Fred Brooks的软件工程论文,强调了软件开发中的本质性工作和附属性工作的重要性。他提到,理解问题并寻找解决方案的本质复杂度难以降低,因此即使附属性工作降低到零,也无法获得十倍的效率提升。他强调了对本质性技能和附属性技能的重视,并分享了培养高效能软件人的经验。此外,他警示不要盲目追求将附属性工作的比例提高,而忽略本质性工作,否则会导致项目超期、失控和事故。最后,他提出了思考题,邀请读者分享对旧约部分内容的理解和想法。文章强调了软件开发中的本质性工作和附属性工作的平衡,以及对技能培养和问题定义的重视。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《如何落地业务建模》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(17)

  • 最新
  • 精选
  • 码农戏码
    置顶
    可怜之人必有可恨之处 我们当前就是100%的投入附属性工作,还在加量加码,甚至整个行业风气都是,别人吹的牛,我们得实现了 业务价值是啥,谁去关心,我们要的就是高并发,高性能,高可用,要24*7,要5个9 能不能达到业务价值不知道,但我知道面试必备,那就得这么实现,看过的理论得套上,听过的中间件得用上 to c行业还好些,至少每人都可能是用户,量级也得确会见到,to b行业就比较突显,不关注领域知识,一味追求技术,三位数的QPS都达不到,架构却要支撑七位数,造成不必要的复杂,交付缓慢,质量下降 老板各种diss技术,花高价招更牛的技术引入更高的复杂性,彰显各自的英明神武 老师课程是要正本清源还本归宗,解决问题前先理解问题,定义问题,不追求模型的完美,而是通过建模迭代试错,知识消化,技术方与业务方达成一致,找出最本质的业务诉求,再找到对应解决方案,这些都是本质工作;再通过各种适当的模式做好附属性工作 每个技术人成长阶段不同,关注重点不同,低段位时重心还是追求实现的术,高段位时得回归业务价值的道,只是在术上走远了,不能忘了出发时的目标 老师你们的小巨人计划可不可以多透露点,让我们也能一个打十个

    作者回复: to b复杂性反而在逻辑 to c在容量

    2021-07-26
    3
    19
  • 爱睡觉
    置顶
    很有意思的是,“没有银弹”成为了一种银弹。 那就是面临任何一个不熟悉、不适应的方法,都可以高瞻远瞩的说一句“没有银弹,这个xxx不是万能的”。然后心安理得的继续原本的做法。 没有银弹就成了杀死一切改进建议的银弹

    作者回复: 没有银弹给的建议非常具体 解决本质性困难 除此之外别无他法

    2021-07-25
    6
  • Oops!
    again, hard to sleep at night. 本课用了很多笔墨讲述两关联一循环的知识消化过程就是用来指导我们更好完成本质工作的。其他各类模式、分层和restful api 等都是解决附属工作中的一些技术性难点。

    作者回复: 会心不远

    2021-07-24
    8
  • 狩月
    所以,低代码是行业毒瘤的原因也是不定义问题,随意归因,和迷信复用吧

    作者回复: 逻辑上说 低代码过分强调附加性工作 回避回答是如何简化问题定义的

    2021-07-25
    2
    3
  • 马若飞
    本质性困难源于业务复杂性。如果业务极其简单,是否可认为银弹存在?

    作者回复: 知识的传递也是本质性工作 所以也没有那么简单

    2021-07-27
  • 云师兄
    再来一波题外话吧。

    编辑回复: 周二见

    2021-07-25
  • 下弦の月
    补充适用于程序员的财务知识,有什么推荐的书籍或者学习套路么?

    作者回复: 随便哪本都可以 貌似没有专门给程序员写的

    2021-07-24
  • HoshinoKanade
    能多說一下漸進增強嗎
    2021-07-24
    4
  • 陈小虎
    看到这里明白为啥专栏感觉没那么长了。。花里胡哨的其实就是天桥卖艺的。。真东西不会太复杂
    2021-11-24
    2
  • escray
    当我发现自己是狼人的时候,就会偷偷把银弹破坏掉。 软件开发中的本质性困难在于,如何发现问题、理解问题,并选择恰当的解决方案。而这个本质性的困难是永远存在的,不会因为人工智能、知识图谱、机器学习、区块链、数据中台、低代码……而变得简单。事实上,因为可选择的技术过多,也许会变的更加困扰。 虽然现在不写代码的,不过还是有机会锻炼自己的 Essential Ability,比如理解问题、定义问题。 我觉的倾听、写作、演讲这三样,虽然算不上核心技能,但是如果掌握的好,也能增色不少。 我自己的时间管理,或者说是任务分解,做得并不好,比如现在已经是我预计睡觉的时间了, 可是还在写日更的文字。 把测试开发称为“人格分裂性多人运动”,这个真是一言难尽,当然我也不太熟练。 前司可能就是在使用“不定义问题、随意归因和迷信复用”的开发方式,作为项目经理的我,主要的职责是文档开发,而不是去需求调研。 对于思考题,我觉得可能“两关联一循环”,以及关联对象、角色对象、上下文对象……这些都集中于学习领域知识,并且理解业务,这些应该有助于完成本质性工作。 而类似于测试驱动、持续集成、重构……这些方法论上的东西应该是有助于附属性工作。
    2021-08-15
    2
收起评论
显示
设置
留言
17
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部