现在的位置: 首页 > 综合 > 正文

程序员的生产效率 – 打扰、会议和远程工作

2013年12月06日 ⁄ 综合 ⁄ 共 6253字 ⁄ 字号 评论关闭
文章目录

Programmer Productivity – Interruptions, Meetings and Working Remotely

程序员的生产效率 – 打扰、会议和远程工作

Posted on
April 2, 2013
|
2Comments

In my previous post on
what programmers want
, I rankedworking from home low on the list. Several commenters value working from homehigher, and
K (not hisreal name) added a link to a great TED talk given by

JasonFried
(of
37signals
) onwhy it is hard to get any work done atwork. Jason starts with the observation that programmers need
longstretches of uninterrupted time in order to get stuff done, and goes on torecommend avoiding meetings, and minimizing interruptions by using chat ande-mail instead of direct communication. While I agree with the meetings part, Ithink there is more to consider
regarding interruptions. I also value face toface interactions more than he does.

在上一篇文章里,我把在家工作放在了最后,有些人给在家工作的排名很高,K给了Jason Fried一个的TED链接,讲述了我们为什么很难在上班时间搞定所有工作。Jason从他自己的观察开始,程序员需要一个很长的不被打扰的时间来搞定工作,然后推荐我们避免会议,通过聊天工具和email减少被打扰,而不是直接交流。然而我同意他会议那部分的说法,但是关于打扰我们可以考虑更多,而且我觉得面对面交流也比较重要

office Interactions

办公室里的相互交流

The picture Jason paints of working at an office makes you wonder why wework at an office at all. Constant interruptions from bosses, colleagues andmeetings make it hard to get anything substantial done. Why not have everybodywork remotely all the time instead?
For me, the main reason is that softwaredevelopment requires a lot of collaboration. Brain-storming, discussing, andrefining ideas with other developers usually yield solutions much better thanwhat you can come up with on your own. Furthermore, these kinds
of interactionsare much more effective in person, with a whiteboard handy (pretty much alldiscussions benefit from a few quick drawings). Remote collaboration tools trytheir best to recreate the face to face dynamics, but it is never the same asbeing in the
same room with someone.

Jason描述的办公室工作画面不禁让我们会问:为什么要在办公室工作?老板、同事、会议不停地打扰,让我们很难取得实质性的进展。为什么不让大家远程工作呢?就我来说,主要的原因是软件开发需要大量的协作。头脑风暴、讨论和精炼的想法往往会比自己一个人得到方案要好。而且,有白板的时候,我们可以画一些东西来讨论,这些交流在面对面的时候效率更高。虽然远程的写作尽量模拟面对面地交流场景,但是更同一个房间里和一些人讨论的场景还是有区别的。

Jason recommends switching from active communication (face to face or phonecall) to passive communication (e-mail or chat), to avoid interrupting people.This is good advice for avoiding interruptions. But after the initial request,the sooner you switch to
talking, the better. Written communication works wellfor simple questions and answers. However, talking to someone is at least anorder of magnitude more efficient when there is even a little bit ofuncertainty or ambiguity . For example, if I get an e-mail
with the question“Do we support feature XXX?”, most of the time the answer is not a simple yesor no. Perhaps it depends on which other features the customer has. Or we mayhave just developed the more capable feature YYY that they could use instead.Writing
all this down takes time and effort – talking (in person or on thephone) lets you have the back and forth immediately, instead of spreading itout in writing.

Jason建议我们用被动交流(邮件或者即时通讯工具聊天)来替代主动交流(当面或者打电话)来避免打扰别人。这是一个避免打扰别人的很好的建议。但是在初始阶段之后,面对面交谈越快越好。文字的交流对于简单的问题来说效果很好。但是,如果问题有些不确定,谈话的效率会高一个数量级。举个例子,别人给我发个邮件,问“你是不是支持XXX功能?”,大部分时候回答肯定不是简单的事或者不是。也许取决于已经有的功能,或者我们可以开发一个更好的YYY功能来替代。写下这些会花掉很多时间和工作量。谈话(面对面或者电话)让我们可以即时交互而不用来回写一些文字。

Good Interruptions

好的打扰

While I totally agree with Jason that programmers need long stretches ofuninterrupted time in order to be productive, there are cases wheninterruptions should be tolerated. If someone is working on a problem (atester, a support engineer, or another developer),
and has a question I knowthe answer to off the top of my head, I’m fine with being interrupted. Sure, myproductivity takes a hit, but we should optimize for the company’sproductivity, not only my productivity. If one (or several) other people in thecompany
would be stalled, it’s better to ask me and get the answer in oneminute, than to dig around for an answer in the code or in the documentation.

虽然我完全同意Jason说法,程序员需要一个相对来说比较长的不被打扰的时间来提高生产效率,但是有些情况还是可以接受的。如果有人遇到一个问题,而我恰好不假思索就可以知道答案,这样被打扰我没问题。当然我的效率会受影响,但是我们可以优化整个公司的生产效率。如果公司里有几个人被问题卡住了,最好是来问我,而不是从代码或者文档里找答案。

Another case where interruptions are acceptable is when there is a troublereport. In my team at work, we have virtually no trouble report back-log. Wetry to finish off trouble reports as soon as we get them. Getting back to thecustomer right away has several
benefits: the problem is fresh in their minds,it’s easy to get additional information if needed, and the customer sees thatwe care about fixing the problem quickly.  The quick turn-around time meansthat no back-log of unanswered trouble reports builds up.
It is also easy tostay on top of what the outstanding problems are at all times, since there areso few of them.

当有故障报告的时候,这也是一个可以被打扰的例子。在我的团队里,我们基本上没有积压的故障报告。我们尽力尽快搞定这些故障。速度回复客户有几个好处:客户们还记得是什么问题,这样就很容易得到我们需要的额外的信息,而且客户也会觉得我们在乎他们。快速的反应意味着不会积压还没有处理的故障,很少的故障让我们很容易掌握还没有处理的故障的状态。

Meetings – Inefficient use of time

会议-低效地利用时间

When it comes to meetings, I agree with Jason: the fewer the better. Havinga meeting is often very poor use of time. When I worked at
Ericsson, we had a weeklystatus meeting for the whole R&D department on Tuesdays at 10 o’clock. Soat 9.30, you don’t feel like starting anything new, since you know you aregoing to be interrupted
soon. Knowing that you will have to attend a meetingsoon causes you to get less done. An unplanned interruption is much better – atleast you don’t know about it beforehand. Another problem with those statusmeetings was that pretty much all information given
could just as easily havebeen sent out in an e-mail.

回到会议,我统一Jason的说法:越少越好。会议一般会很低效的使用时间。以前我在爱立信(Ericsson)工作的时候,整个R&D部门每个星期二10点有个站立会议。那个时间你肯定不会想做什么新的东西,因为你知道马上就会被打扰。知道接下来你马上会参加一个会议,你坐的工作会少于平时。没有计划的打扰会好点,至少你事先不知道。会议的另外一个问题是大部分的信息可以轻松用email发给所有人。

Another reason meetings are inefficient is that often the people therearen’t needed for the whole meeting, so some of their time is wasted. At
Symsoft, I have very few meetings.Instead of calling a meeting, I’ll walk over to the people involved (alldevelopers are a maximum of 5 offices away) and discuss the issue. No meeting,and only
the people directly involved are interrupted. Way better than theoverhead of a meeting.

会议低效的另外一个原因是有些人不用参加整个会议,所以一部分时间就浪费了。在Symsoft的时候,我几乎没有几个会,我会走过去跟相关的人讨论问题。没有会议,只有直接相关的人被打扰了。这种方式比会议的开销要少。

It’s not that hard

没有那么难

The work place Jason describes in his talk is pretty bleak. But it doesn’thave to be that way. I have never worked for a manager that came aroundfrequently for “status updates”, probably because they have all beenprogrammers too, and know not to interrupt.
I hardly have any meetings at allat Symsoft, and it was the same when I worked at
Tilgin. Creating a goodenvironment for software developers isn’t that hard. I do get interrupted,but almost always for the right reasons.
I become less productive, butwe become more productive. And I still have plenty of quiet,uninterrupted time for developing new features and fixing bugs. How about you?

Jason说的那个地方真是相当的不爽,但是我们不一定要那样。从来没有经理会很频繁地跑过来问我现在的工作状态,也许因为他们曾经也是程序员,知道尽量别打扰开发人员。我在Symsoft几乎没有会议,在Tilgin的时候也是一样的。给软件开发人员创造一个好的环境并不是很困难,我也会被打扰,但是那都是有理由的。我一个人的效率降低了,当时团队的效率提高了。除了这些有理由的打扰,其他时间我都可以安静地不被打扰地开发新的功能,或者修改bug。你呢?

【上篇】
【下篇】

抱歉!评论已关闭.