如何提高员工的工作效率,是每个企业特别关心的话题。记得《人件》还是《人月神话》里说过,好的程序员和差的程序员,工资可能只差2倍,但工作效率可以差到10倍之多。所以,找到高水平的程序员,不仅可以提高效率,改进质量,还可以节约交流成本,保证设计思想一致性,好处很多很多。当然,这是每个企业的梦想,就是能招到最好的开发人员和测试人员,给点高工资也是合算的。可是如何去发现这样的人,就是难题中的难题了。
那么,在现有的基础上,如何来进一步提高工作效率呢?
从我自身的经验,我工作最高效的时候,是我刚开始工作的两年。我当时在一个小公司做软件开发。我的部门经理在我刚进入这个部门的时候,和我长聊了一次,问我学过什么课,对什么比较感兴趣,擅长做什么,等等。然后,他告诉我,我在这个公司不仅仅是在帮公司做事,更是自己成长的一个平台。他希望我每天只花半天时间工作,另外半天用来提高自己的水平。我当时很惊讶,怎么会有只让员工工作半天的领导?但后来我才知道,这是不矛盾的。我的水平的提高,也增进了我的工作能力,提高了工作的效率和质量。我迷上了自己的工作,为了解决工作中遇到的问题,我熟读了大量的通信和计算机类的书。只有2年的功夫,我帮公司做了很多事情,从焊板子、硬件编程、硬件驱动、通信协议到数据库、用户界面、网页制作,我什么活都干,也都干得不错。我们部门当时只有4个干活的,一个部门经理,但是每个人都独当一面。更有一个技术超牛的同事,他让我们学到了很多很多。我太怀念那个时候了,工资不高,但是很开心,每天都能学到新的知识。我曾经暗暗使劲儿,希望自己2年的时间赶上那个牛人。可惜的是,他进步的速度还超过了我,我只有望其项背的份了。
可惜的是,那个小公司的领导层出现了分歧,部门经理被赶走了,公司摇摇欲坠,我们也只好作鸟兽散。我进了一个大公司,做了测试工程师。到了这个大公司,我才知道啥叫低效率了。我们进去,参加了3个月的新员工培训。这3个月,除了上课,就是看文档,什么活也不做。光介绍流程、工具和企业文化,就花了两个星期。当3个月后,我们开始接触实际操作的时候,我们老早就把培训过的东西忘光了,压根儿就不会用。想我当时在小公司,3个月我都已经做了一个项目了,通过做项目,所有的流程和工具都熟得很了。
终于盼到可以开始工作了,发现工作实在没有挑战性。把别人写好的case,改个命令格式,就成我们的case了。至于这些case为什么这么写,似乎没人要求搞明白。然后就练习升级包,打补丁这些基本操作。然后就练习装机器,因为机器比较庞大、板子众多,背板插线复杂,倒也折腾了一阵子。我开始厌倦这样的工作,自己有时间就找些文档来看。自己通过跟踪消息,把整个系统的架构给画了出来。有些人说我好傻,明明有现成的ppt文档,我为啥自己来画?我呢,一来是时间充裕,没什么事干,二来这样理解深刻,后来也只有我对这个系统的架构是最熟的,也很清楚系统架构师为什么要这么做。
这个大公司的会特别多。我一开始很难适应。我在小公司的时候,一个月开一次项目会,过一下项目进度。因为平时大家都坐在一起,有什么要交流的,直接就交流了,好像没有必要开会。可是这个大公司,每个礼拜至少两个会,一个是项目的会,一个是组里的会。后来又增加了一些虚拟组,比如质量工程师组,那么又有这个组的会。还有实验室管理组,也有会。公司有啥决策,就开个大会。后来差不多每天要开一个会。再后来,大家似乎已经很依赖开会了,学点什么东西要开会,讨论点什么东西也要开会,推广点什么东西还要开会。不久就出现了一些meeting man, meeting woman,为开会而生的人。我特别讨厌开会,因为开会太浪费时间了。很多会上,只有2~3个人在交流,其他人都在发呆。我常常会带些书或者笔记到会上,以利用开会的时间。但这样效率不高,因为背景噪音太多,还要担心被领导发现,挨批评。
等到了敏捷被推广的时候,开会更成了家常便饭。我做系统架构师的时候,曾经参加过一个从早上9点开到下5点的会,有20~30人,不知道有什么好谈的。我实在受不了了,后来拒绝去参加这样的会。结果被告到我的经理那里,说我和软件人员交流有问题。敏捷的推广者对开会情有独钟,觉得公司以前开的会还不够多,所以影响了交流。会要天天开,早请示晚汇报。只有这样,才能让领导知道员工都在干什么。我很奇怪老大还认为敏捷的推广可以提高公司效率,这大概只是字面的理解罢了。
好了,说了这么多,开始正面总结一下该如何提高工作效率吧。
首先,就是要提供有挑战性的工作,激发员工的斗志。以华为为例,我虽然没去过华为,但是见过不少在华为呆过的员工,他们都成长得很快。虽然华为总是以加班太多,没有个人生活,给人以负面的印象。但是除去这些,华为最大的优点,在于它是一个技术导向的公司。公司的氛围激发员工在技术上不断进取,不断成长。华为非常鼓励员工写技术文档,也鼓励员工申请专利。很多公司学习华为,只学到了如何加班、如何压迫,却没学到如何来创造一个技术上不断进取的氛围。我所在的那个小公司,没有加班,也没有巨大的项目压力,员工也都成长得很快,有些同事后来成了其他公司的CTO或者是技术主管。如何来创造气氛,让员工以不断进步为荣,不耻于拿工资混日子,是很关键的。应该给员工有足够挑战性的工作,并让他们在工作中快速成长起来。我个人觉得,让新员工快速成长的最佳办法,就是以老带新,让新员工直接参与正在执行的项目,和优秀的老员工一起工作。一个技术很强的老员工,往往会成为新员工学习的榜样。对于这些老员工的尊重和优待,是让新员工快速成长起来的兴奋剂。经理对员工技术水平的重视和嘉奖,是让公司成为技术导向的关键。
其次,就是要人尽其才。有一句话说得特别有道理,就是
“
find the right person to do the right thing
”
。每个人都有自己的优点和缺点,扬长避短,是在工作分配时需要考虑的因素。所以,经理在面试和迎接新人的时候,要去了解这个人,知道他擅长的和不擅长的东西,了解他的兴趣所在。有些人虽然技术水平一般,但是可以成为小组的粘合剂。有些人技术水平很高,但是与人交流不畅。经理要尽可能让他们发挥所长,并帮助他们成长。经理应该隔断时间就和自己的手下面对面地交谈,询问他们工作中存在的问题,并提供帮助。这就是经理最重要的工作。他能够极大地提升员工的工作效率和积极性。
然后,就是要解决工作中影响效率的具体问题。
- 如何组织开会。如果能在座位上解决的问题,就不要放到会上。如果能发邮件就传达的信息,就不要放到会上。如果能一次讨论完的问题,就不要分两次讨论。总之,会开得越少越好。要尽量利用休息时间交流信息。比如大家一起吃午饭,一起郊游,茶歇时间,都是机会。要增加员工休息时间交流的机会,这些时候的交流效率往往高于开会。
- 如何鼓励在工作中学习。我发现有些测试人员在case被问题block住的时候,就有些无所事事。其实,这个时候,正是学习的好时机。看本书,找其他同事问问题,跟其他组的同事pair-work,都可以快速地提高自己的工作水平。只是公司没有这个氛围,大家并不能主动地去做这些事。经理们就应该引导大家,去见缝插针地提高自己的水平。要知道,这不仅仅是为了公司,也是为了自己有个更好的前途。
- 如何培养好的工作习惯。有意识地培养开发人员或者测试人员的工作习惯,可以极大地提高工作效率。比如在工作的时候,关掉chat工具和mail提醒。测试人员在执行测试时同时关注和记录错误输出。等等。
- 当员工遇到问题时,如何提供足够的支持。有些测试人员,在遇到自己不熟悉的领域出现问题时,往往不知道该问谁。当遇到对需求的理解问题时,找不到合适的人来问。当系统出现问题,不知道bug报给谁的时候,也会一筹莫展。这都是非常浪费时间的,往往工作就会停滞不前。经理需要制定这样的角色,来帮助解决员工遇到的技术问题。即使这个人本身不知道答案,他也可以找到合适的人来回答这个问题。公司应该鼓励员工回答并帮助其他员工,这样可以节约公司整体的投入。
- 如何提供人性化的工作环境。在《人件》里面说,公司和公司之间的效率差距可以达到10倍之多。很重要的一个因素,在于工作环境。高效率的公司往往提供的是安静、舒适、人性化的工作环境。低效率的公司往往提供的是嘈杂、拥挤的工作环境。经理要在现有的条件下,尽量考虑员工的需求,尽量不打扰他们的工作,尽量让员工感到舒适和愉快。
- 如何帮助员工合理安排工作时间。时间管理是个学问,在琐事繁多的情况下,如何能够有效率地完成工作。我一直有一个很不好的习惯,就是喜欢打开邮件提醒,有了新邮件就要去回,去读。其实这样经常会打断我的思路,在我回完邮件时,我又要花上好一会儿回忆刚才进行到哪里了。所以最好养成关闭邮件提醒,批量处理邮件的习惯。有一个形容时间管理的,就是往一个桶里放石头。应该先放大石头,再放小石头把大石头之间的缝隙填满,就可以放下最多的石头。这就是说,要先安排大块的工作,然后在大块的工作间隙安排小块的工作,就可以在有限的时间里完成更多的工作。这些方法也都是因人而异的,只是经理们可以在某些方面帮助员工来使用方法合理安排时间。
顺便说一下,我不简单地认为测试自动化和敏捷管理可以提高工作效率。这些都是文字游戏,名字取得好,不一定东西就好。必须具体问题具体分析。自动化有自动化的好处,也有坏处,也有很大的局限性。敏捷不是处处都敏捷的。提高工作效率,可以减少上班的时间,至少应该是不需要加班了,这对公司和员工都是有好处的。公司不应该在提高了员工效率的基础上再要求加班,因为人的精力是有限的,不能无限制地占用。