03|通过知识过程重新理解软件工程
03|通过知识过程重新理解软件工程
讲述:徐昊
时长10:08大小9.27M
软件中包含的知识
将软件研发过程构造为知识过程
小结
思考题
软件工程的知识过程重新理解,强调软件本身是知识的载体,而非真正的产品。文章指出软件中包含的最重要的知识是业务知识和架构知识。业务知识描述了软件如何帮助客户解决问题,而架构知识则定义了系统中组件的类型和交互方式。除了软件,人和组织也可以成为知识的载体。通过不同认知行为模式,可以理解整个知识过程的效率。因此,将软件的研发过程构造为知识过程,需要围绕这两种知识的提取与传递构造知识过程。软件研发的过程是一个对于业务知识学习的过程,是复杂认知行为模式。进入到交付过程之前,需要将业务知识转化为软件功能需求,这是目标解决方案的应用,是一个不可言说知识应用的过程,是庞杂认知行为模式。架构知识也可以看作是从技术视角出发的解决方案。在软件构造过程中,功能性和非功能性质量保障措施会带来不同的认知行为模式。理解了软件工程中的知识传递,与它们带来的不同认知行为模式,可以评价不同的研发方法带来效率的差别。文章通过对软件工程的知识过程进行重新理解,为读者提供了新的思考角度,帮助他们更好地理解软件工程的本质。
赞 17
提建议
全部留言(16)
- 最新
- 精选
- 术子米德2024-03-15 来自浙江🤔☕️🤔☕️🤔 【Q】从知识传递的角度,分析所处团队有哪些低效的行为? 【A】首先,缺少一门课程,把行为认知相关的显性知识,清晰无误地分享给团队小伙伴,让大家知道,接下去遇到的文档,基本就是清晰(Clear),各种基于PPT、临场发挥不少的分享,基本就是庞杂(Complicated),实际在推进的项目,经常改来改去的需求,基本就是复杂(Complex),发布后的各种问题,基本就是混乱(Chaotic),运行好好的系统忽然故障,基本就是困惑(Disorder)。 其次,大家要明白,不同的行为认知模式下,不可言说知识所占的比例不同,实际经验是,它的占比越来越高,甚至有天赋和灵感的展现,也无需惊讶,更不要羡慕,这是持续经验在肌肉里积累的记忆。 最后,在行为认知规律下行事,别抱怨这没有那不行,负面情绪是最低效的知识传递行为。 — by 术子米德@2024年3月15日展开
编辑回复: 交流群里老师做了点评,这里也同步一下: chaotic最常见的形式是 没有明确验收条件 只有deadline的需求。chaotic是应激(处在应激的时候是恐惧的,做的行为是为了恢复秩序感),根本解决不了问题,还是提醒:所有对于cynefin的使用,都要按行为模式找,不要对问题分类。 比如同样是看文档,可能是probe,比如不知道怎么做;可能是category,比如线上问题,明确问题等级,寻找应急预案;可能是analysis,对比历史方案;所以,看文档可能是clear,complicated,complex,甚至是chaotic。
共 2 条评论4 - 一只豆2024-03-13 来自广东这一课像是个捧哏,勾的我贼期待下一篇~
编辑回复: 这比喻真酷
- aoe2024-03-13 来自陕西1. 宁可加班找 Bug,也不愿意学习 TDD 2. 宁可加班堆功能,也不愿多理解一点需求 3. 不仅一次因欠费导致服务无法正常运行,偶尔还是会出现 4. 任职期间疯狂复制粘贴代码,运气好点加班改 Bug,运气不好自己都待不下去了 5. 相信产品说:需求不会变了 6. 使用百度搜索问题,看了很多看起来有道理但就是不能解决问题的回答 7. 不使用 AI 辅助编程,坚持纯手工 8. 盲目追求「微服务」,原来很多简单的事情,变的无比复杂 9. 以为用了 K8S 就能各大云厂商一键部署,结果支付给云厂商的费用更多,稳定性、吞吐性能、服务监控都不如云上已有的服务。 10. 时间紧多找几个人一起实现功能,实现的第一版在预期范围内,后面改来改去,谁改谁害怕展开12
- 临风2024-03-13 来自广东我们做事情常常希望能找到第一性原理,这样就能认识到事物的上限和边界,也就不会产生妄念,指望通过低效的方法达到高效的结果。我不知道老师将认知模式运用到软件工程算不算真理,是不是软件工程的本质,但我觉得这个理论至少提供了一个很好的思维框架,帮助我们去理解软件工程的本质。 软件工程在我看来就是为了去解决日益增长的软件规模和逐渐复杂的人员分工之间的矛盾,这个矛盾又集中体现在知识传递的过程。也就是我们常常会发现,一个功能需求,其实不是技术实现上有多难,而是因为软件规模过于庞大,以至于个人不能掌握全部的上下文信息,而复杂的分工,又导致开发者很难串联起全流程,站在客户的使用场景,去开发一个完美解决客户问题的软件产品。 认知模式的分类,给了我们一个很好的认识视角。首先,知识传递的效率,很明显是清晰模式 > 庞杂模式 > 复杂模式 > 混乱模式。回到开发场景,清晰模式就像搜索答案,它效率应该是分钟级的;庞杂模式就像一个老手接到需求,他能很快知道要做什么事情,并分析清楚各个业务场景和边界条件,效率是小时级的;而复杂模式就类似一个新手接到需求,完全是懵的,需要不断的问别人,不断的探测,它的效率常常是按天来算的;混乱模式就更别提了,效率基本未知,完全无法预测需要多长时间,甚至花了很多时间都无法认识到问题的原因。 所以软件工程要做什么,就是尽量把复杂模式变为庞杂模式,把庞杂模式变为清晰模式。我猜老师后续就是要回答,AI时代如何升级认知模式,如何让认知效率产生质变,期待后续的内容^-^展开共 1 条评论10
- 大卫2024-03-17 来自浙江通过代码执行过程来了解软件架构 VS 通过软件架构来了解代码执行过程: 大概每个刚入行的菜鸟都想一头扎进代码,恨不得马上debug起来——不理解架构甚至不理解业务知识,这可认为是最低效行为3
- 术子米德2024-03-15 来自浙江🤔☕️🤔☕️🤔 【R】软件=书籍 is 载体,知识=内容 is 产品。 软件知识 = 业务呈现知识 + 技术架构知识。 业务侧学习过程是复杂认知行为模式,从探测(Probe)已知开始,到感应反馈、再响应改进的复杂过程。 技术侧设计过程是庞杂认知行为模式,从感知(Sense)问题开始,到分析解决方案、再响应软件需求的庞杂过程。 【.I.】所需、所能,面对你所需、看看我所能,所需用软件呈现的业务,所能用技术做出的功能和达到的品质。 假设,面对所需,我因不熟悉业务,也因无人已经为目标梳理通所有的业务所需呈现的样子,那么我能做的就是,从接触到部分开始,先做下去,先呈现出个样子来,基于此从已知向未知探测,或基于此修正对所谓已知的误解,我的情绪主调是紧张。此时,有个隐式的假设,那就是我的所能是个超集,它大于当前已知所需、以及探测出来的新所需,它们已经或即将要的所能,我的情绪主调是烦人。 可实际上我发现,我的所能从未如此。所需越是展开,发现所能越是匮乏,情绪里慌张感逐步积累,跨进慌乱感的时刻,往往是发现原来的业务分析,在新的视角下看来,其实都不合理,甚至可以说全是错的。推倒重来,继续糊墙,这就是个问题。 如果在此之前,只有实现代码,那绝无重来的勇气;如果有实现代码、还有验证代码,即所谓TDD的践行者,那么心理上可以推倒,实际无力重来;如今LLM based Coding Assistant上场,说来一起先审阅一下验证用例,再一起加固下验证代码,然后直接删除旧实现代码,由它,AigCoder来没日没夜重写实现,只要符合验证用例,至少会有一份功能一致的新代码,这就是开发新范式的诞生。 【Q】不可言说知识的应用,是否在每个认知行为模式下都存在,只是比例多少的问题? — by 术子米德@2024年3月14日展开2
- 需要练习的码农2024-06-12 来自北京代码审查对于不同团队有可能处于不同的认知行为模式么?例如庞杂模式,感知-分析-响应。
- 范飞扬2024-04-18 来自广东目标解决方案的定义是:为实现目标做的方案,包含整体解决方案和用户旅程。 请教一下老师和各位同学,我这样理解对嘛共 4 条评论
- zenk2024-03-23 来自上海告警规则设置,不同服务业务不一样,需要不同的告警,缺少服务的slo明确定义,先定义一个再说,爆出来来了再调整。。。
- Jaising2024-03-23 来自浙江1、代码写注释,尤其是写大量的注释 2、部分代码红网管控,只允许代码在少部分人之间流动,对外部一概不透明,甚至没有 API 3、基于流而不是基于主题、实时(响应更快)优于异步(吞吐量更大、方案更优)的协同软件,微信群一样的组织工作,消息与文档散落各处,反过来又使协同软件支持富文本全文检索、一键呼叫、已读这样的功能 4、没有时长限制、没有会议议程预审的会议软件来组织跨部门会议