12.5团队讨论
由于大部分人都反映以前的项目太忙,每人都加班,但是劳而无获,阿超把一队人马都带到小河边开会,大家一边晒太阳,一边讨论时间安排问题。
阿超:要弄清这个问题,首先要说明员工到底有多少时间用在工作上?或者说,有多少时间花在写代码上?
小飞:又来了,员工的时间是取之不尽,用之不竭的,不过,上次我们的加班费还没有着落呢。
果冻:报告超总,我每天工作10小时,一周7天,天天如此。
大牛:玩游戏的时间也算上了么……(众笑)
员工每周只有40小时上班时间,每天8小时。上班时间是你出现在公司的时间。而项目工作时间是指你在精力集中、无干扰的情况下为项目进行开发的时间。根据我的经验,每人每周最多只有四天时间,32小时实实在在地在做项目。其余的8小时花在下面三个地方——
日常事务,我们的确要花很多时间处理琐碎而又不得不做的事:交流、开会、讨论、写E-mail、玩游戏等,对于一些员工来说,8小时还远远不够。
作为缓冲,如果你任务没完成,那就首先用这个时间来填补。这意味着如果你项目的任务没完成,那就少一点开会/讨论/玩游戏,等等。
在项目过程中有不少突发事件,你要应急,可以先从这里拨出时间,如果不够,可以再从32小时工作时间中拿。
软件学院的同学们不理解为什么一周要有8小时“非开发时间”,我们有工作经验的同事不妨说说,我们在没有直接开发/测试/设计软件的时候都在干什么:
我没看见你在写软件,你到底在忙什么
(移山公司的同事集体创作)
(1)人员调动和安排工作环境。
(2)数据迁移。
(3)安装,定制办公及开发软件,调整Windows桌面背景设置。
(4)从网上下载代码和其他技术资料(还有电影),并研究。
(5)进行各种内部测试(如Beta)。
(6)演示软件,为演示软件而做的杂事,如制作PPT等。
(7)维护以前版本的系统。
(8)为单位别的人员(特别是刚买了高档laptop的领导)提供技术支持。
(9)项目管理系统(如TFS)的管理和维护。
(10)支持用户及其他技术文档的写作/复审。
(11)培训(技术培训/听课;公司的非技术培训)。
(12)技术会议。
(13)公司大大小小和技术无关的会议。
(14)读/写E-mail。
(15)写工作总结,等等。
大牛:当然,也可以从40小时以外抽时间。
阿超:是的,如果在规定时间没有完成任务,也许要搭上自己的时间,或者是刚到公司,要学的东西太多了,或者是工作规划时估计不够,或者是个人时间运用的效率不高。这些情况下,都要加会儿班。但是如果我们想让公司、团队和个人得到长期的发展,加班不能是常态。
荔荔:员工培训的时间呢?
阿超:在项目过程中,我们的精力主要应该放在项目上,这时我们的培训时间应该从8小时机动时间内划分,或者用业余时间。在项目告一段落时,我们可以花更多的正式时间来进行培训。最好的培训,是在工作中学习。
我原来还想增加日常事务的时间,但是大智总裁觉得不妥,他认为40小时都应该是项目工作时间,8个小时已经太多了。最后决定先按照我的折中方案试试看。
果冻:智总真是太英明了。
阿超:所以,我们的项目是基于一线人员每人每周32小时的工作量来安排。
对于管理人员(组长)来说,每人每周再有8小时用于管理工作,管什么呢,管人、管技术、管进度。
所以,项目管理人员,包括每周只有24小时用于直接的项目任务,另外16小时用于管理,以及日常事务。注意,管理人员的管理时间也是非常重要的,他们虽然没有在写代码,但是花在不写代码的这部分时间对项目的成败有更重要的影响。
归纳起来:
一线员工:每人每周32小时的工作量,8小时日常事务。
管理人员:每人每周24小时的工作量,8小时日常事务,8小时管理。
对开发人员的期待:
(1)从用户的角度考虑问题。
(2)设计和实现代码时允许缓冲区,但是一旦代码完成,质量必须是最好的。
(3)代码的行数和工作绩效无关。
(4)真正好的工程师是能够用简单的办法解决复杂的问题。
(5)模块的最终质量决定了工作绩效。
对测试人员的期待:
(1)尽早参与设计。
(2)尽早发现问题,最好在问题要发生前就能阻止问题的发生。
(3)发现的缺陷的数量和工作的绩效没有直接关系。
(4)模块的最终质量决定了工作绩效。
对项目管理人员的期待:
(1)推动项目的发展,从技术层面说,就是在出现不同意见的时候做决定。做出后来发现是错误的决定,也比没有及时做决定好。
(2)从管理方面推动项目的发展,不仅要注意现有的任务的进展,还要注意有哪些东西应该做而没有做。
(3)整个大模块,或整个产品的质量决定了管理人员的绩效。
(4)自己所领导的团队的绩效也决定了管理人员的绩效。
小燕:芸芸是程序经理,是不是程序员的经理?然后测试工程师是不是也受程序员和程序经理的共同领导?
九条:测试工程师马上就有几座大山压在身上了。
芸芸:不会吧,我正在实习,还没有毕业,怎么可能领导别人呢?
阿超:在团队中,不同专业的人员为了完成一个项目或功能在一起工作,大家是平等协作的关系。
大牛:图12-2是官方的人员关系图,你看,没有领导关系,只有协作关系,这样大家该放心了吧。
大拴:从图上看,分工真详细,但是我们没有这么多人来玩这么多角色,怎么办?
图12-2人员的关系
阿超:事实上,大部分的团队都没有这么齐全的队伍,很多项目也并不需要样样齐全的正规军来做。对于小型的团队和小型的项目,可以根据表12-1来这样合并角色:
表12-1合并角色
体系 结构 |
产品 管理 |
程序 管理 |
开发 |
测试 |
用户 体验 |
发布 管理 |
|
体系 结构 |
N |
P |
P |
U |
U |
U |
|
产品 管理 |
N |
N |
P |
P |
U |
||
程序 管理 |
N |
U |
U |
P |
|||
开发 |
N |
N |
N |
||||
测试 |
P |
P |
|||||
用户 体验 |
U |
||||||
发布 管理 |
|
(P:可能;U:不可能;N:不推荐)
如果我们尽量合并角色,会得到表12-2。
表12-2合并角色之后的关系
合并后的角色 |
主要职责 |
管理人员(程序管理,发布管理) |
主要进行项目具体的管理工作 |
开发人员(体系结构,开发) |
主要负责项目具体的技术设计和开发工作 |
质量控制人员(产品管理,测试,用户体验) |
主要负责产品质量,用户对产品的认可和接受程度 |
这就是我们目前的角色分配。