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

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

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

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

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

为什么要加班

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

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

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

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

我所理解的“沟通能力”

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

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

少开会

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

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

关于结对编程

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

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

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

不要以加班为荣

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

转载于:https://www.cnblogs.com/li-hao/archive/2011/07/31/2122837.html

有关技术管理的一些思考相关推荐

  1. 技术管理的必备思考模型 - STARS模型

    要成功接管工作,必须认识到你需要做些什么,以及怎样去做.所以,在面对这一状况时,你需要问自己两个问题,一是我被召唤来主导的是什么样的改变?二是我是什么样的变革领导者? 是"英雄"还 ...

  2. 如何做好技术管理的思考

    如何做好技术管理的思考 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/ex_net/article/details/8592574 作者:张建波 ...

  3. 站在阿米巴经营法视角思考技术管理实践

    结合我在世界500强企业(海尔,华为,中国移动)的16年研发实践,我总结了技术管理上的三个核心点:一是交付链建立和考核:二是巴长选拔和A绩效员工培养:三是研发体系完善和优秀成果提交,对应到阿米巴经营目 ...

  4. 技术、管理和技术管理

    曾经听到过不少人说做管理的人不需要懂技术,其大意是因为懂技术反而会制约自己的管理判断或决策.最近因为在读MBA,也突然想起这一观点并做了一些思考.      对于这一观点,我想首先不能用对与错来对其加 ...

  5. 《实践与思考》系列连载(5)——问答Hprose,以及关于技术与开源的思考

    引子 之前我写过一篇文章,讨论了在XML Web Service或者WCF中,多次发起异步调用可能导致的问题,请参考http://www.cnblogs.com/chenxizhang/archive ...

  6. 技术管理规划-从哪入手?

    前言 最近在学习技术管理课程,对学习的内容做一些笔记,结合当前的工作环境在对应的知识点上做一些思考,慢慢建立自己的团队管理方法论. 学习方法 早上骑单车的时候或者跑步的时候听音频,熟悉课程内容: 仔细 ...

  7. 公司技术管理角度看C++游戏程序员发展

    公司技术管理角度看C++游戏程序员发展 H3D 这是我多年来招聘培训游戏程序员的一点想法.一直想汇总一下.主要目的是为了更好的对公司新进C++程序员进行培训,并且建立起游戏程序员培训,发展,成才,成为 ...

  8. 骆俊武:五年了,我的技术管理成长之路

    大家好,我是武哥. 2020 年元旦节,我在公号上写下了第一篇管理方向的系统性总结: 工程师如何从技术转型做管理? 累计被转载了 60+ 次,应该有不少读者因为这篇文章关注了我.后来在微信上,我又陆续 ...

  9. Netstars CTO 陈斌:技术管理的两种思路

    陈斌 NETSTARS CTO 读完需要 5 分钟 速读仅需 1 分钟 陈斌 NETSTARS CTO, 翻译的图书<架构即未来><架构真经><数据即未来>< ...

最新文章

  1. 牛客网 PAT乙级(Basic Level)练习题 1023 考新郎
  2. 不做“韭菜”,永洪BI教你逃离币圈骗局
  3. spring事务 jdbc_Spring事务管理示例JDBC
  4. rsync 服务端和客户端 简单配置
  5. Redpill:在后渗透中实现反向TCP Shell
  6. android获得手机目录,关于android手机文件目录的收集
  7. 怎样看oracle删掉没有,肿么查看以前Oracle卸载干净没
  8. 002 离散时间傅里叶分析
  9. oracle12c不使用cdb模式,Oracle 12c 使用Non-CDB来创建PDB
  10. 陈强教授《机器学习及R应用》课程 第五章作业
  11. 如何获取腾讯应用appid
  12. 五、数组(高琪java300集+java从入门到精通笔记)
  13. 【论文写作】——设置中英文字体
  14. eclipse中项目运行时报错之 Compilation error解决方法
  15. 什么品牌的蓝牙耳机音质好?四款高音质蓝牙耳机推荐
  16. [经典面试题]排列组合专题
  17. 【热门】2004年十大网络流行语征集ing
  18. c语言 自动计时的秒表,c语言实现的简单秒表计时器
  19. Excel 统计起止时间
  20. linux命令---cp 命令

热门文章

  1. CentOS搭建Sqoop环境
  2. Spark1.0.0 属性配置
  3. ORACLE TDE 透明数据加密技术
  4. Mysql日期和时间函数
  5. phpRedisAdmin 安装
  6. 好用的shell工具_精选5个酷毙的Python工具
  7. 《构建之法》 读书笔记
  8. BZOJ3172: [Tjoi2013]单词
  9. VIM之Project 项目管理工具
  10. [WCF安全系列]认证与凭证:用户名/密码认证与Windows认证