ChengXuYuan.com
程序员的职场第一站

为什么打断15分钟的代价是60分钟?

过去一个月里我一直在为生产力的问题奋斗。整体而言感觉自己产出不够多。我开始探索原因,找出工作时发生的状况,或者到底是什么阻止了我在项目上有不错的进展。这项研究最终富有成果。

mo·men·tum (mōˈmen(t)əm,məˈmen(t)əm/)动量,动力,势头

一个移动中物体的动力的总量,通过该物体的质量与速度之乘积来测量。

当我坐下来准备编写项目代码,是无法直接进入状态的。如果是从项目起始点开始,或从工作日开始,我不得不先加载很多数据到大脑里。你可以把它想像为大脑内存。

  • 这个部分是用什么语言写的?
  • 该语言的所有语法
  • 目前手头项目的目的是什么?
  • 这是解决这个问题的有效方法吗?
  • 这会导致我以后欠下技术债吗?
  • 这会影响到应用的另一个部分吗?

如果你是领导,你还必须考虑这些:

  • 这是能赚钱/好的商业决策吗?
  • 这是可以复用的吗?
  • 这真的就是最好的用户体验吗?

这些都还只是元细节,都还不涉及手边具体的问题。实际情况是,你遇到的有数学、 标准的编程实践、 业务逻辑、 数据库查询、 插件的细微差别、 自己的代码细节以及更多的问题。

最佳的动量是以伏笔的形式到来的。即你已经在脑海中勾画出了短期的路线图,并且已经准备好为接下来的两个步骤编码。我最喜欢的方式就是以注释的方式来提早写好步骤。

//链接数据库

//获取客户端信息

//创建数据缓存

//连接到UPS的接口

//使用数据包来创建一个预测

//验证预测

//生成传输标签

//使用 graphicsmagick(此处原文中笔误写成了graphicsmagik)转换原始数据为PDF

//整合多个 PDF 为一个单独的页面

//呈现 PDF 给用户

我喜欢类似这样的清单。它具有挑战性并让你有事可期待。当你知道如何去完成每一项,你的动量会成指数级增加。这些任务被你越发快速、高效地完成,超过你不写清单时的表现。

1

注:要想直奔主题地考虑可以在哪儿写下上面的清单,你必须至少已经在脑海中完成了任务中基本的部分。

打破动量

有三种情况可以彻底毁掉你的动量。它们可以让你完成任务的能力降低两三倍。

  1. 有些事情没有按照预期进展。
  2. 有人干扰了你(比如:邮件、Skype、消息、同事、社交网站)
  3. 时间到了(回家,睡觉)

有些事情没有按照预期进展

这一点甚是烦人,但是却非常常见。想象一下,你以为知道该如何使用 UPS 的接口,但是它莫名其妙地就是不管用。你之前也曾使用过,非常清楚它应当是如何操作的,然而当你测试的时候,出现一片空白。假如你足够幸运可以得到明确的错误消息反馈,通常还不会失去太多的动量。不然,你就会相当受挫。此时你有如下几个选择:

  1. 寻找一些正常运行的代码然后对比差异
  2. 在 Google 上搜寻
  3. 在 Stackoverflow 上提问
  4. 跟一个朋友咨询,去骚扰他们
  5. 发布一个问题到 Github,期待有人尽快回复
  6. 想出一个新办法

所有这些都只是在彻底毁掉你已有的工作动量。忘掉那个清单,忘掉你要尽快解决掉它,从现在开始你必须全身贯注到这些从未计划会消耗超过两分钟的随机事件上。

对于此,我的解决方案是积累经验。你拥有的经验越多,解决的问题越多,你不能解决问题的机会就少。学会 debug!经验同样能教你如何更有效地Google,以及更快速地查找答案。

打断/中断

各种打断是最大的时间杀手。你的老板、同事、会议,都特别碍事。他们可以让你无法集中精力,并且你离开手头项目的每一分钟其实等同于失去三个小时的动量。

假如你现在正准备编写一个循环来检查所有数据包的大小,内容以及或许还要计算一下体积重量。然后有人问你:“你能快点从数据库抓取一下 XYZ 给我吗?” 我会回答说“好”然后拿到这个数据。但这估计会花掉 4 分钟,因为可能我需要查找一下 SQL 命令或者回忆一下有些数据表的结构。谨记对于任何项目而言(甚至是这个半路杀进来的任务)我都需要加载如上所述的整个清单。此时,第一个项目的大脑内存正在衰减。

编程

(图:典型的朝九晚五)

当你重新回到这个项目的时候,不得不重新加载部分大脑中的数据,然后弄清楚之前中断的位置。很可能你就找不到了,这个循环我刚才写到哪个位置了?空间重量的算法是什么?

我的解决方案就是对中断做出优先级的反馈。“你现在就需要这个吗?不需要?那给我发封邮件。” 如果你在一个小任务上需要花费 10 分钟,你就失去了一个半小时。

如果你在一个会议上需要花费 1 个小时,那么你就失去了 3 个小时的编程时间。

 

程序员

时间到了

生活也在妨碍你的代码。你不得不放下工作,你需要睡觉,你的男朋友/女朋友等希望与你共度一些休闲时光。

你备受折磨因为你想要做这些事,但是你又清楚如果你停下工作会失去多少。假设你从未持续工作过10个小时,你是体会不到那个感觉的。不过相信我,一旦你做得很顺,连续工作10个小时是很轻松而且超高效的。

如果你希望在工作中被视为产能超高的,那就每周争取到一两个这样不被打扰的长编码时间。

不过要小心,你得适可而止。如果你开始在犯真正愚蠢的错误,或者碰到一个看似无法解释的问题,你必须停止。放下问题然后回家。也许明天你就能马上解决了。

我认为这个有关干扰的想法在非程序界也能引起共鸣。大部分人在他们朝九晚五的工作中都不是高效的。那是因为人们整天都在被岔开话题和分心。这就是程序员们为何喜欢晚上工作的原因,那个时候没有任何人打扰他们。(注意此文中第一张图的时间)很有可能你在 3 天内就完成本来试图 5 天完成的任务量。

关键就是要聚精会神,划分周围人的优先级,并且努力创造出不被打扰的工作时间。

编程

文章来源:并发编程网

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址