Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
事件溯源
Kafka消息
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
人工智能
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
更多话题
解决问题的两种方式:阻击手和将军 | Jose
22-10-11
banq
现在我们有两种方法来解决同一个问题:
一种是可以逐一消除可能的根源的狙击手方法,
另一种是喜欢从大局出发,发挥分化和征服敌人的策略的将军方法。
猜测和狙击策略:工程师充当狙击手,选择一个目标(猜测),然后将其移除(狙击)。如果直觉很好,这种技术可以在创纪录的时间内提供解决方案。但如果不是这样,它可能会以一系列尝试、浪费时间和挫败感而告终。
另一种解决复杂问题的方法,即分而治之的策略:它包括查看系统和所有涉及的部分,并考虑我们可以做的检查,以消除大部分部分(划分)。我们继续划分,直到剩余区域小到可以识别问题(征服)为止。
狙击和划分之间的主要区别在于调查的目的:狙击时,我们会寻找错误的地方;划分时,我们寻找可以确定一侧或另一侧是否受到影响的东西。
让我们比较一下这两种方法,看看它们的优点和缺点。
如果所做的猜测是正确的,狙击手策略可以非常快。猜测正确的可能性有多大。
我们的人在系统中的资历越深、经验越丰富,猜测正确的可能性就越大。
系统越复杂,猜测正确的可能性就越小。
他们在尝试解决方案时迭代得越多,猜测正确的可能性就越小。也就是说,第一个猜测比下一个猜测更有可能是正确的。只要我们尝试的东西被证明是错误的,新的东西就越不可能是根本原因。
前两点是很明显的,但第三点值得更深入地解释。团队要看到问题,并思考一些可能的根本原因。不自觉地,他们会选择最可能的选项。随着他们的尝试和失败,从统计学上看,团队所做的猜测将不太可能是根本原因。
另一方面,“将军”的方法是比较安全的。可能需要一些时间来控制局面,但花费的时间越多,我们就越接近解决方案。这与狙击手的方法相反,花的时间越多,我们就越远。
如何选择?
最佳做法是查看是否有明确的狙击候选人。
如果有,第一个选项很可能是正确的选项。尤其是在处理我们的员工掌握的系统时。
但是一旦我们发现第一个选项被证明是错误的,我们就需要坐下来,分析大局,然后将方法转变为将军的方法。
思维训练
复杂性系统的系统思考
架构师观点