明白你下一次提交什么
我曾轻拍了三个程序员的肩膀,问他们正在做什么。“我在重构这些方法,”第一个回答。“我在为这些web行为加一些参数,”第二个回答。第三个回答说:“我在处理这些用户故事。”
可能看起来像是前两个程序员太专注于他们的工作的细节了,而只有第三个看得更全面一些,也就有对工作有更好地专注。然而,当我问到他们要提交什么时,就有了些戏剧性的变化。前两个非常清楚接下来一个小时内会涉及、完成哪些文件。第三个回答说:“噢,我估计应该会在几天内准备好。我可能会加一些类,并可能对这些服务器做某些修改。”
前两个程序员并不缺乏对整体目标的见解。他们选择了他们认为产出性的任务,而且一两个小时内可以完成的。一时他们完成了这些任务,他们又会选择一个新的功能或者重构工作。在头脑中的一个清晰的目的和一个有限的、可达的目标的指引下编写所有的代码。
第三个程序员没有能够将问题分解,而是在一次性地解决所有的问题。他没有想清楚要做什么,基本上是在做一些投机性的编程,希望达到某些目标以能够提交。很可能一开始写的代码与最终产出的代码是南辕北辙了。
如果任务需要不只两个小时的时间,前两个程序员会如何做呢?在分析发现他们要做的太多之后,他们很可能会放弃他们的修改,定义一些小的任务,重新来做。继续的话可能会使注意力分散,导致一些投机性的代码进入资源库;相反,抛开修改,心里就能清晰明了。
可能看起来像是前两个程序员太专注于他们的工作的细节了,而只有第三个看得更全面一些,也就有对工作有更好地专注。然而,当我问到他们要提交什么时,就有了些戏剧性的变化。前两个非常清楚接下来一个小时内会涉及、完成哪些文件。第三个回答说:“噢,我估计应该会在几天内准备好。我可能会加一些类,并可能对这些服务器做某些修改。”
前两个程序员并不缺乏对整体目标的见解。他们选择了他们认为产出性的任务,而且一两个小时内可以完成的。一时他们完成了这些任务,他们又会选择一个新的功能或者重构工作。在头脑中的一个清晰的目的和一个有限的、可达的目标的指引下编写所有的代码。
第三个程序员没有能够将问题分解,而是在一次性地解决所有的问题。他没有想清楚要做什么,基本上是在做一些投机性的编程,希望达到某些目标以能够提交。很可能一开始写的代码与最终产出的代码是南辕北辙了。
如果任务需要不只两个小时的时间,前两个程序员会如何做呢?在分析发现他们要做的太多之后,他们很可能会放弃他们的修改,定义一些小的任务,重新来做。继续的话可能会使注意力分散,导致一些投机性的代码进入资源库;相反,抛开修改,心里就能清晰明了。
第三个程序员可能会一直猜测并拼命地尝试着将各种修改凑在一起直到有了什么可以提交的东西。毕竟,不能丢掉所做的代码修改,那太浪费了,是吧?不幸的是,不抛开修改会导致有点古怪的代码,放入代码库时缺少明确的目标。
有些时候专注提交的程序员也会发现原以为在两个小时完成的东西并没有什么用。接着,他们会直接进入猜测模式,琢磨代码,当然,在想到什么主意时他们也会抛开原来的修改。即便是这些看起来没有条理的行为也是有目的的:学习代码以便能够定义一个可以有持续产出的任务。
明白你下一次提交什么。如果不能完成,抛开修改,用你已获得的见解重新定义一个新的可信的任务。需要时,做一下猜测性的实验,但不要让自己滑入没有目的的随机模式。不要提交凭猜测得到的东西到代码库中。
有些时候专注提交的程序员也会发现原以为在两个小时完成的东西并没有什么用。接着,他们会直接进入猜测模式,琢磨代码,当然,在想到什么主意时他们也会抛开原来的修改。即便是这些看起来没有条理的行为也是有目的的:学习代码以便能够定义一个可以有持续产出的任务。
明白你下一次提交什么。如果不能完成,抛开修改,用你已获得的见解重新定义一个新的可信的任务。需要时,做一下猜测性的实验,但不要让自己滑入没有目的的随机模式。不要提交凭猜测得到的东西到代码库中。