有关技术管理的一些思考

标签: 技术 管理 思考 | 发表时间:2011-07-31 13:17 | 作者:Wang Jinbo zhangyijun
出处:http://www.cnblogs.com/

这些天里工作的环境发生了一些微小的变化,可能以后对基层开发的程序员也会有更加具体的影响。上周参加 Open Party 时,重点听了《那些失败的项目们》,分析了一个项目的提出、实施,直到最后失败的过程。我也在想一个技术团队究竟应该用怎样的一种管理方式,才能让技术团队的效率达到更优。

我分了几个小主题,下面一一讲来。

一个程序员一天有多长时间在高效率地工作?

虽然现在绝大部分 IT 公司都声称是 8 小时工作制,但作为开发一线的程序员们一天里真正在高效工作的时间,绝少能超过 4 个小时,甚至一般只有两个小时左右。这是我这两年半以来对我自己和跟一些朋友交流得到的结论。而对于一个有经验的程序员来说,高效率时段和心不在焉的情况下,工作效率可以差上10倍或者20多倍。我曾经有过用两个多小时的时间把半个星期的任务都完成的经历。

因为真正高效的时段非常少,所以加班在我看来是根本不必要的。如果团队里的人个个都精力十足,能力超群,一天能高效工作4个小时,那是非常了不起的。不过这样就引出了下一个问题,既然加班是不必要的,那为什么会时常不得不加班呢?

为什么要加班

一句话来概括,之所以需要加班,是因为白天的时候程序员们都没有好好干活。

那些主管、老板们听到这话时先不要着急去找程序员算账,先想想自己的管理方式有没有问题。程序员们的工作特点是,他们要面对各种细节问题、权衡各种实现方案、测试已实现的功能。这是一种很需要细心和耐心的工作,典型的脑力劳动。要让程序员们进入这种状态,你需要为他们提供必要的条件。在我看来,这条件是如此地简单,那就是:不去打扰他们。

当你全神贯注地做一件事的时候,有人跑过来问了你一个问题,你花了5分钟去给他讲,等你讲完时,却发现很难再进入到刚才那种全神贯注地状态了。有些程序员们对这种事情极为反感,有些则是会用极简洁的语言给对方讲,因为一旦啰嗦起来,程序员们可能就再也做不下去了。也因此,这些人经常会被人认为是“缺乏沟通能力”。依我看,这不是沟通能力的问题,这反而是对工作负责任的态度。

做为程序员的上司,应该想想,在你的公司里,程序员的工作是支持别人(为别人答疑解惑),还是开发产品。如果是后者,你是否又过于强调了沟通能力?要知道如果程序员的工作是做出高质量的软件产品,那你就应该让他专心做好这一件事,别让他又写代码又当客服。程序员不专心,白天的沟通太多,就不能做完工作。只好等到晚上加班,别人都走了,他在没有干扰的情况下才有可能进入高效的状态(注意我说的是有可能)。

我所理解的“沟通能力”

我不认为仅仅能够耐心地给别人讲问题就算是沟通能力强。我认为对于程序员来说,沟通能力首先表现在你写的代码要容易读懂,当别人接手你的代码时,不至于让对方过于旨解。同样地,你也要善于读懂别人的代码,程序员的思维、设计全部都体现在代码里。可以说,只要你有代码,你就应该尽量自己弄明白原作者的意思,尽可能不去动不动就问别人。理由同上面所说,减少对他人的干扰。

其次,沟通能力还应该体现在所写的文档中。如API接口文档,把每一个API的功能、参数类型、返回值类型、异常情况等等都用简洁的、没有歧义的语言描述出来。这样让后来的人有据可查,不用到处咨询他人就可以在你的基础上开发。对于程序员来说,文档不要求生动形象,但必需要没有歧义。有这样的文档,当有人再来回跑来跑去问你问题时,你可以直接让他去看代码或者文档,你需要专心地做手头上的工作。

少开会

我曾经参加过一个兼职的项目,项目的负责人找来的几个人也都是兼职的,在不同的公司工作。有一次商量设计方案,负责人说要聚在一起讨论,也就是开会。对于我们这些人来说,从不同的地方坐半天地铁跑到一块,就为了开一个1小时的会,这实在太不合算了。我当时说其实根本没有必要让大家抽出晚上的时间跑过来,直接在网上说就足够了。不过那个负责人说面对面的沟通效率高。呃……我为了过来和你面对面的沟通1小时,要花1个半小时的时间在路上,反正我是不相信这种方式的效率会高……

在《Rework》里看到一种观点,说你把10个人叫到一块,开了1个小时的会,就相当于浪费了10个小时。其实远不止10个小时。参会的人要准备,听会的人被打断工作,加起来有可能浪费超过20个小时。

关于结对编程

结对编程是在敏捷开发中提到的一种编程方法,即两个人共用一台电脑,一个人写代码,另一个人对他的代码实时检查。我一向不主张这种做法,在我看来,这种做法有两个弊端:

首先是违背了我前面所说的,不要去打扰工作中的程序员。结对编程恰恰是对工作中的程序员不停的打扰。试想一下,当你在实现一个比较复杂的逻辑时,你旁边的人不停地在说“可能有更好的办法……”、“变量名写错了”之类的话,你还能专心地写下去吗?反正我是觉得不能了。我甚至感觉,如果在我写程序的时候背后有人在盯着我,我都没办法写下去。

另一个弊端是,在旁边监督的人往往不如亲自写代码的人想得仔细,因为他不写代码,没有亲自参与到开发一线中去,就不会很专心,容易形成敷衍于事的情况。搞结对编程,不仅极大降低了其中一个程序员的开发效率,还几乎白白浪费了另一个程序员的人力。

不要以加班为荣

领导往往容易认为,肯加班的员工就是好员工。要我说,完全不是这回事。首先加班是不必要的,前面已经说过。如果出现了不得不加班的情况,那就是领导没当好,程序员没几个愿意晚上加班的。恰恰相反,如果一个员工很少加班的话,说明他的效率高、能力强,反而应该给予奖励。而目前的薪酬制度,使得加班多的能多拿加班费,受到领导的重视;而真正的高效率员工往往被视而不见,只能拿基本工资。加班干活的员工不一定是好员工(但加班自学深造的一定是好员工)。

 


 

刚从年中会上回来,感触很多。实在太累,不写了。

作者: Wang Jinbo 发表于 2011-07-31 13:17 原文链接

评论: 4 查看评论 发表评论


最新新闻:
· Windows Phone 芒果(7712)支持 SkyDrive 云端音乐播放(2011-07-31 17:24)
· Launchpad Control 为你的 Launchpad 打补丁(2011-07-31 17:21)
· 拿什么给 Android 保驾护航?1030 个专利(2011-07-31 17:19)
· 微软MAC地址数据库惊爆安全门:任何人都可以定位你(2011-07-31 17:11)
· 马云玩手机:抛弃App模式 云应用数量仍太少(2011-07-31 17:09)

编辑推荐:持续集成理论和实践的新进展

网站导航:博客园首页  我的园子  新闻  闪存  小组  博问  知识库

相关 [技术 管理 思考] 推荐:

有关技术管理的一些思考

- zhangyijun - 博客园-首页原创精华区
这些天里工作的环境发生了一些微小的变化,可能以后对基层开发的程序员也会有更加具体的影响. 上周参加 Open Party 时,重点听了《那些失败的项目们》,分析了一个项目的提出、实施,直到最后失败的过程. 我也在想一个技术团队究竟应该用怎样的一种管理方式,才能让技术团队的效率达到更优. 我分了几个小主题,下面一一讲来.

管理杂谈·代入式思考和沙盘推演

- - 所有文章 - UCD大社区
    经典段子,大家都应该看过:.     一家三口坐在沙发上看电视,父亲渴了,叫3岁儿子弄杯水来. 儿子从沙发上爬下来,一会儿抱着杯水回来了,父亲接过杯子喝了一口并表扬了儿子.     说明 如果你不知道团队成员如何执行、如何落地,那么你提出的目标或任务最后收获的很可能就是一个笑话.     即使任务本身听上去挺简单的,如果你不了解HOW、WHO、WHEN,它也可能升级为一个Impossible Mission.

管理杂谈·代入式思考和沙盘推演

- - 博客园_旁观者
    经典段子,大家都应该看过:.     一家三口坐在沙发上看电视,父亲渴了,叫3岁儿子弄杯水来. 儿子从沙发上爬下来,一会儿抱着杯水回来了,父亲接过杯子喝了一口并表扬了儿子.     说明 如果你不知道团队成员如何执行、如何落地,那么你提出的目标或任务最后收获的很可能就是一个笑话.     即使任务本身听上去挺简单的,如果你不了解HOW、WHO、WHEN,它也可能升级为一个Impossible Mission.

技术、管理与30岁的槛~

- Amom - 高春辉的 BLOG
原发表在新浪微博: @高春辉 (1)我相信在技术圈里,30 岁以后是不是去做管理的纠结,一定是每个做开发的人都会有的,包括我在内,也和很多人讨论过,但是我还是选择了自己喜欢.

如何更好完成从技术到管理的转变?

- - TECH2IPO创见
编者按:这篇来自《程序员》杂志的文章是写给那些IT公司的内部人员,但同样适用于互联网的创业者们. 这篇文章可以告诉你,技术创业者如何完成从执行者到管理者的角色转变,作者梁景波. IT公司研发部门的管理人员大多是从公司内部的技术人员中提拔的. 在快速发展的公司里,这样的机会更多. 然而这种“半路出家”的转型也给我们带来了很多挑战,其中最关键的部分在于思维方式的转变.

技术管理者应不应该写代码?

- - 灰色的灵魂
我相信所有新晋的技术经理,都做过Team的工期紧张,自己加班动手写Code的事情,这种事情我自己也没少干过,事实上,偶尔我自己仍然会在critical的项目上写一些代码. 相信不少同志们还引以为荣,并且不少技术管理的书上,对于技术管理人员是否应该去写代码也有不同的观点,有些认为不应该写,有些认为一定要写一点避免脱离群众外行指挥内行.

如何管理飞扬跋扈的技术人员

- - 创业邦
  在互联网项目当中,相信每一个项目经理或者制作人,最头疼的就是技术部的管理. 因为技术工作看起来是那么的棘手,一般人难以理解,而且技术人员大多数都似乎情商不高. 管理人员既不能轻易了解技术工作的内涵,技术人员也觉得很难和管理人员沟通. 特别是技术工作,难以在不同人之间交接,很多技术人员都声称无法继续别人做过的项目.

Facebook技术总监:如何管理10亿用户的数据?

- - 互联网的那点事
2012年1月28日消息,Facebook用户数量,已经突破10亿大关. Facebook在发展期间,所实现的技术成就,成为了IT行业工程师关注的话题. 究竟Facebook取得了哪些技术成就呢. Facebook前工程部门总监,在问答网站Quora上,对这一问题作出回答. 无论对于IT行业的投资者还是使用者,这些回答都有着指导意义.

如何做好基层技术管理工作?

- - CSDN博客研发管理推荐文章
最近有朋友与我探讨了软件基层技术管理工作方面的话题,借此从动机和方法两方面谈谈我的看法. 要做好基层技术管理工作,首先要确保自己有良好的动机,即明白自己为何要走上技术管理岗位. 做管理的根本是为了获得权力,但获得权力的动机却存在很大的差别. 有相当数量的人往技术管理岗位“挤”,是为了获得以后在工作中可以少做或挑做工作内容的权力;也有的人是为了更快、更多地获得公司动向的资讯,以体现“领导”的“与众不同”;还有人是为了更高的薪资.