以终为始:如何让你的努力不白费
今日概念:
1、想象共同体:集体对同一个目标达成的共同想象;程序员做的软件是"集体想象"落地的一个载体。做一个对用户有价值的软件,能够为别人带来价值,自己的价值才能体现出来
2、任何事物都需要经过两次创造:一次在头脑中,一次是付出实践;付出实践成本很高,因此需要在第一次创造花费更多的时间和精力。
3、遇到事情倒着想,"以终为始""可以帮助我们在软件开发中规划工作和发现工作中潜在的问题 。从结果开始倒排开发,先确认明确清晰不含任何二义性的需求和结果,然后再倒推软件的设计架构,再动手编码,在开发过程中不停调整和反馈,最终达成目标
今日总结:
以终为始就是终局思维,这种思维方式会强迫我们的大脑去做计划。借用工具将想法表达出来更是有利于发现潜在问题,创造出“想象共同体”;
实际操作:
排工作计划表,计划倒排!先定截止时间,然后看功能是不是做的过来,是否需要砍掉部分!人力是否充足,是否需要补充人力!提前预知规避风险
DoD:尽可能消除不确定性
今日概念:
1、DoD(Definition of Done):完成的定义,DoD是一种思维模式,是一种尽可能消除不确定性,达成共识的方式;
- DoD 是一个清单,清单是由一个个检查项组成的,用来检查我们的工作完成情况;
- DoD 的检查项应该是实际可检查的;
- DoD 是团队成员间彼此汇报的一种机制;
2.、任务开发只有两种状态:完成/未完成;
今日总结:
1、使用DoD可以事先将需要做的事量化;
2、 一件事用了DoD之后,就确定了需要完成的具体事项,不会觉得自己有很多时间,提高效率;
3、 使用不同“粒度”定义DoD有助于换位思考,也可以加深对系统的理解;
接到需求任务,你要先做哪件事?
1、信息传播论:信息的传递是有衰减的,所以你不可能百分之百的把你的需求传递到位。
2、日常需求描述方法缺点及改进方法
缺点:简单的功能列表或者是需求列表是缺失上下文的,是碎片化的,不能很好的看到全局,容易丢失信息。对程序员来说,要想真正的理解需求是有困难的。很多时候并不知道这个要开发的功能是谁在什么场景下使用的。一定要让程序员知道为什么要开发这个功能。
改进方法:使用“用户故事”来描述需求
它是站在用户的角度来描述了一个用户希望得到的功能,关注用户在系统中完成一个动作需要经过怎样的路径。既然它是“故事”,它就需要是一个完整的场景,可以讲述出来,能将各个功能串联起来以便做场景化的思考。如果没有用例或者用户故事加以说明,那么很有可能就导致理解的差异。最重要的是它能确定验收标准,这将作为后续开发的准绳;
3、 验收标准:规定以终为始开发的结果
验收标准,它可以清晰地定义出需求边界。其非常重要的一环是异常流程的描述。验收标准给出了这个需求最基本的测试用例,它保证了开发人员完成需求最基本的质量。
今日总结:
1、当拿到一个需求的时候,你要做的事不是立即动手写代码,而是扮演产品经理的角色,分析需求,圈定任务范围。(需求的串讲与反串讲)
2、程序员的核心职责是如何实现产品功能,怎么实现功能;前提是理解产品功能,需要实现哪些功能。
3、确定验收标准,以终为始。开发中的许多问题都是由于思考不够深入,沟通不够细致造成的,对任务完成定义的不同,这就是扯皮的重要起因。所以,关键的一点,一定要编写验收标准,程序员和产品根据验收标准检验是否完成任务。
尽早提交代码去集成
今日概念:
1、集成:将各个独立部分组合在一起使其成为一个新个体的过程;程序员最终交付件应该是可运行的软件,而不是某个独立的库
2、每日集成:每天进行一次集成,它和持续集成只有时间间隔上的差别;
3、持续集成:每日集成推演到极致的结果,将开发和集成合二为一;
今日总结:
集成本身就是写代码的一个环节,持续集成已经有了很成熟的体系与实现,早点使用持续集成吧;(持续集成服务器)
默认所有需求都不做,直到弄清楚为什么要做这件事
精益创业:它要解决的是面向不确定性创造新事物。IT 行业中大多数人的专业程度是不够的,我们必须要有自己的独立思考,多问几个为什么,尽可能减少掉到“坑”里之后再求救的次数。
精益创业提供给我们的是一个做产品的思考框架,我们能够接触到的大多数产品都可以放在这个框架内思考。
“ 在动手做一件事之前,先推演一番 ”
今日概念:
最后一公里:指完成一件事情的时候最后的而且是关键性的步骤,比如完成需求后的上线工作
首先我们接到一个任务后,要做的不是立即埋头苦干,而是要学会思考,找出真正的目标。然后要在具体动手之前,把实施步骤推演一番,完成一次头脑中的创造,也就是第一次创造或智力上的创造。
在软件开发过程中,我们就假设软件已经就绪,看就绪之后,要做哪些事情,比如,如何上线、如何推广等等,这样的推演过程会帮我们发现前期准备的不足之处,进一步丰富我们的工作计划。为了不让我们总在“最后一公里”摔跟头,前期的推演是不可或缺的,也是想让团队进入有条不紊状态的前提。
文章来源:极客时间《程序员10x工作法》