区分敏捷开发中过早出现的和可预见的问题
极客时间编辑部
讲述:丁婵大小:6.76M时长:04:55
敏捷的力量在于应对未解决的问题,但同样的力量也会导致技术债务和产品价值的减少。资深创业者巴斯·格罗特(Bas Groot)认为,根据本质的不同,未解决的问题应该分为两种:过早出现的和可预见的,二者之间的区别在于强调重要性还是可能性。以下是格罗特对过早出现的问题和可预见问题的阐述,有助于你在问题发生前更好地解决它们。
过早出现的问题
过早出现的问题是当下不需要担心的问题。现在去管它们就是浪费时间。可以确定的是,等时机合适,它们自然会再度出现。
根据预测,过早出现的问题有四种:
无关紧要:比如一个脚本运行起来很慢,但很少运行,几乎无人注意。它是没有解决,但不值得任何时间的浪费。
保持不变:比如改变窗口大小就会持续闪动的 UI 界面,确实不好看,但不会阻碍关键流程,而且不管什么时候解决它,整体的工作量都不会有变化。
变得容易:比如复杂的配置 UI 界面,随着你对项目越来越深地理解以及有了更多可重用的 UI 组件,原本难度很大的 UI 配置会随着项目发展降低难度。
消失不见:比如某个复杂的功能特性需求,你不确定再过几月用户是否还需要它,所以不需任何工作就能解决此类问题。
总之,对于很多过早出现的问题,先放在一边是正确的选择。
可预见的问题
可预见的问题是会随时间推移变得更难处理的问题,技术债务和烫手山药就属于它们。
越早处理此类问题最好,如果你总是无视它们,总有一天,可预见的问题会变得过于庞大而无法解决。
经验表明,在一定时间内,难度会缓慢增加,当环境发生变化,问题难度就会陡增。
可预见的问题有两种:
直接:问题本身就是造成问题的根本原因。比如执行缓慢的门户初始化脚本,在不断增长的数据库中费力地运行。
间接:根本原因不在于造成问题的本身,而是导致其它地方问题恶化。比如侵入式框架(intrusive framework),依赖它的代码越多,它导致的冲突越多,以后就难以去掉这个框架。
要想判断一个问题是否可预见,需要一些预测技巧,如:
对于表面原因和根本原因的感觉
理解为什么某些模式会在以后导致特定问题
考虑各种场景,估算它们的概率
预测哪些环境有可能变化,以及何时变化
在问题达到可行性边界之前,你还有多少时间
可预见的问题有一个或是多个可预见的场景。你可以预测到:如果不行动,情形会如何恶化;当特定条件变化时,它如何跨越可行性边界。
架构师的职责,就是要判断哪些问题是过早出现的,哪些是可预见的。
敏捷角色中的信任
但是,敏捷的本质缺点在于:所有未解决的问题都被视为过早出现的问题,不存在可预见的问题。
架构师应该选择最迫切的、可预见的待办任务列表条目,并产出可以解决它们的设计。然后将这些设计扼要转化为日常工作任务。设计应该足够成熟,可以切分难点,变为能够直接动手开工的任务。
为可预见的问题排定优先级很复杂,涉及到多个层面,包括:价值、工作量、破坏程度、达到可行性边界的概率和剩余时间。这些参数很难量化,最好由经验出发加以评定。
一条根本原则是:最“间接”的可预见的问题应该首先解决,因为它们造成的麻烦最严重,而且到处都是,先解决它们可以释放出资源,以解决优先级稍低的问题。
同时,程序员应该相信、支持架构师。唯一要注意的是,程序员不能过度依赖架构师,不能把待办任务列表当成垃圾堆,把所有尚未认真想清楚的问题都丢进去。
以上就是今天的内容,查看完整分享可点击文末的原文链接。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- 阿玛铭有、意思。比如拔智齿,医生总是建议一次拔一边上下颌的两颗,一个月内全部拔掉,永绝后患。但是拔牙是要钱滴,我穷啊。所以我第一次只拔长歪后续影响的附近牙齿的那颗。健康机构相对医院真的死贵要2500,但服务确实比正规医院好多了。下次拔牙的话把另一边疼过的那颗。就跟华佗与他的两哥治病能力的对比一样,因为资源有限,全方位看的话其实各有妙处。
收起评论