本文转自台湾李智桦老师的博客,原文地址

这篇文章;已经梗了我三个多星期了。这期间飞了二次大陆做演讲、往返几个大城市做教授敏捷开发运用在精实创业的课程。教材内容都是简体的,它们始终没有机会在国内用上,心理常想着;无论如何我都要把它们翻成繁体中文,虽然国内没有人找我讲这个课程,没关系。就把它登在大众媒体,跟大家分享。(哈哈! 写了几回草稿,但旅行中杭州的云雾缭绕还有茶香美景并没有帮上忙,文章架构依然凌乱,倒不是没有头绪而是头绪太多。最后我决定改用分段的方式来跟大家分享,希望你能接受。)

【 看见的利器 】

※「看板方法」Kanban Method

可以让我们看到工作流程,然后依据半成品的理论来持续改善、管理流程。

※「用户故事地图」User Story Mapping

可以帮助我们阶层化使用者故事并整理出需求的全貌,让我们知道该从哪里开始来解题、动手实做项目。

※「影响地图」Impact Mapping

可以把业务目标跟产品功能串接起来,然后让客户、分析师及开发团队都能看见撰写的产品功能对业务的影响在哪里。

好了;这一系列文章就是在谈上面这三个东西,三个可以协助我们看清楚需求的工具(方法)。标题似乎可以改写成:如何运用这些方法来看见需求的本质。而想谈的问题是;藉助可视化 Visualize的力量来解决项目开发时需求变来变去的困扰。用一张图示,来说明这几个工具的运用时机。(一下子;轻轻松松便可以画完的图,但改用文字来描述起来还真是有一点麻烦。我想用如何思维解题,到过程的描述分析,然后在对应到想要完成的目标,最后是拿来辅助的工具来探索它。顺序就是依照下图最左侧的那一行【思维
– 过程 – 对象 – 工具】)作为一系列文章的起头。

第一排;思维的方式

由「极度抽象」到「抽象」再到「明确」最后写成程序代码,达到「极度明确」的解题方式。

这是我惯用的一种解题方法。解题;一开始;要先后退个几步,让自己跟问题对象的距离先拉远一点,减少一些讯息数量的干扰,让自己的视野再加大一些,能看得更全面一点。目的是;设法看见全貌。这可是自己花了好多年的时间才纠正过来的习惯,避免患了一看到问题就急着思考如何解题的习惯,就是俗称的「工程师的视野」。

在抽象与明确之间徘徊解题 –持续优化

想办法先看到。当你经常受到需求改来改去的残害时,最好的解决方法便是让它提前优化,运用paper prototype 或其他成本较低的方式先行对问题的解答进行验证,针对产品功能是否解决了真正的业务需求进行模拟或假设式的确认。我习惯在这里来回穿梭,宁可多花一些时间在抽象与明确之间徘徊,也不愿意太快进入程序的撰写阶段(你可以先做未来展示时会用的PPT,或就手头的需求先整理一些Spec,不要急着收敛),这倒不是在逃避写程序,而是担心一旦开始写了些程序代码,要回过头修正假设错误的地方,就要多花一些功夫在修正程序逻辑上头,这要赔上许多时间,有些划不来。而且程序一旦改来改去,总让人觉得好像有一种坏味道油然而生(有些不卫生,不干净的感觉),还是慢慢来,一次做对比较干净舒服些。

倒推的方式是最常用的手法。也就是所谓的从最后开始(Start at the End)。先想象你已经完成文件上所陈述的功能了,然后回过头来看看问题是否真的被解决了吗? 试着问自己;用户因此就可以如同用户故事上所描述的「因为获得了他想要的功能,从此以后便能获得这样的利益了」。(当然,用影响地图在这里最为受用,请容我下次再补做说明)

针对较头痛的问题,我通常会采用寄信给自己的方式,用email藉由时空的延迟隔离,来和自己交谈(一种自己给自己的回馈方式),用说交谈的方式来进行自我回馈,用这种稍稍客观的形式来提醒自己,让时间带来多一点的信息获得,也就是依靠延迟决策的方式(Decide as Late as Possible),让思维更为成熟一些(哈哈!很难说这种方式会有用,但一经养成习惯,心态便会稳定需多)。

明确到极度明确

第一步;先确认文件规格是正确的。我习惯先整理足够用来做coding用的文件规格(可以用测试案例(Testcase)或是单元测试来当作文件),先把测试的方案开起来做好命名,最后才是建立主程序项目,这里才是接下来的战场,这种方式有人就认为是TDD了,但我实际上只是要透过预做准备的动作,来多思考一次也就是击发二次思维(2nd thought)的动作而已。接着才是兴高采烈的进入coding 阶段。期许自己能够一次做对,让coding
变得更有趣,让code变得越简单越好(侦错)。

小结

针对上图所示,我们先谈第一排、所谓的「解题的思维」。解题;它没有标准,上面是我长期以来一直依据的Mary shaw 抽象解题法的使用心得。提供大家做参考,下一篇就会开始描述处理需求的「影响地图 impact Mapping」。会这么做,是害怕自己没有足够的时间做长篇大论,就以这种分段描述的方式,尽量抽空来做作功课了。


请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息

看见的力量 – (I) 解题的思维的更多相关文章

  1. 【思维】The Four Dimensions of Thinking :长线思维的力量

    "经历过这些苦难之后,我拥抱了一种新的人生哲学,就是更多地关注在那些长期可以获得复利的小收获上,而不是那种频繁的短跑冲刺和精力消耗". 斯坦福教授,著名的心理学家Philip Zi ...

  2. 书单BookList

    1. <代码大全> 史蒂夫·迈克康奈尔 (Code Complete) 2. <程序员修炼之道> Andrew Hunt [读过了,非常好的一本书] (Pragmatic Pr ...

  3. July 30th, Week 31st Saturday, 2016

    No matter how far you may fly, never forget where you come from. 无论你能飞多远,都别忘了你来自何方. No matter how fa ...

  4. (10.16)java小作业!

    相信大家刚刚学习java多多少少都会写一些java的基础编程来练练手感,我也不例外!今天想和大家分享一下我最近所接触到的比较有趣的java小编程! 已知a已被赋值,b已被赋值,请编写java程序实现a ...

  5. 《决战大数据:驾驭未来商业的利器》【PDF】下载

    内容简介 大数据时代的来临,给当今的商业带来了极大的冲击,多数电商人无不"谈大数据色变",并呈现出一种观望.迷茫.手足无措的状态.车品觉,作为一名经验丰富的电商人,在敬畏大数据的同 ...

  6. [HNOI2002]跳蚤 【容斥】

    题目描述 Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个自然数.其中最 ...

  7. GITHUB一个新的项目发布

    经过一段时间的积累,写了一些代码,发现好多功能有好几个系统都在用,但是公司的开发过程中,并没有一个对通用功能提取整合普遍化的一个流程,所以就自己将在项目开发过程中遇到的一些功能提取出来,并尽量做到普适 ...

  8. 2019计蒜之道初赛3 D. 阿里巴巴协助征战SARS(困难)(大数取余+欧拉降幂)

    阿里巴巴协助征战SARS(困难) 33.29% 1000ms 262144K   目前,SARS 病毒的研究在世界范围内进行,经科学家研究发现,该病毒及其变种的 DNA 的一条单链中,胞嘧啶.腺嘧啶均 ...

  9. beta冲刺总结那周余嘉熊掌将得队

    作业格式 课程名称:软件工程1916|W(福州大学) 作业要求:项目Beta冲刺 团队名称: 那周余嘉熊掌将得队 作业目标:beta冲刺总结 队员学号 队员姓名 博客地址 备注 221600131 J ...

随机推荐

  1. [HNOI 2018]排列

    Description 题库链接 给定 \(n\) 个整数 \(a_1, a_2, \dots, a_n, 0 \le ai \le n\) ,以及 \(n\) 个整数 \(w_1, w_2, \do ...

  2. [POI 2007]ZAP-Queries

    Description Byteasar the Cryptographer works on breaking the code of BSA (Byteotian Security Agency) ...

  3. [POI 2015]Kinoman

    Description 共有m部电影,编号为1~m,第i部电影的好看值为w[i]. 在n天之中(从1~n编号)每天会放映一部电影,第i天放映的是第f[i]部. 你可以选择l,r(1<=l< ...

  4. hdu4729 树链剖分+二分

    An Easy Problem for Elfness Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 65535/65535 K (J ...

  5. POJ 3276 Face The Right Way

    Description Farmer John has arranged his N (1 ≤ N ≤ 5,000) cows in a row and many of them are facing ...

  6. Delphi Inputbox,InputQuery用法

    Delphi :InputQuery,InputBox用法及区别 function InputQuery(const ACaption, APrompt: string; var Value: str ...

  7. Quartz + Tablesaw 报表统计

    场景 在12 月份做的报表功能中,直接从 ES 查询一个月的数据.当数据量特别大时,查询速度会非常缓慢甚至查询失败.解决方案是使用定时任务,在每天凌晨指定时间自动查询前一天的数据,然后写入 CSV 文 ...

  8. jquery easyui combobox 从指定位置开始模糊查询

    $("#bzr").combobox({ url: "ClassSave.aspx?opt=bzr&bzr=<%=arrbj[2]%>", ...

  9. http协议无状态中的 "状态" 到底指的是什么?!

    引子: 最近在好好了解http,发现对介绍http的第一句话[http协议是无状态的,无连接的]就无法理解了:无状态的[状态]到底指的是什么?! 找了很多资料不仅没有发现有一针见血正面回答这个问题的, ...

  10. for循环&len函数和range函数的运用

     函数:len() 作用:返回字符串.列表.字典.元组等长度 语法:len(str) 参数: str:要计算的字符串.列表.字典.元组等 返回值:字符串.列表.字典.元组等元素的长度 实例 1.计算字 ...