这个话题最初来自知乎问答
以下是我当时的答案:
正好我思考过这个问题,就简单回答一下。
没看出提问者是什么背景,是基层开发人员,还是管理者。而这个问题从两个不同的角度来说,是不大一样的。
首先,从开发者的角度来说,在我看来,除了合理安排工作频率之外,理论上是不应该有“无所事事”的时间的。对于个人职业发展而言,在没有项目任务时,其实是一个非常好的自我提升的机会。回顾技术路线,改进现有代码,整理代码库等等都是非常好的习惯。实在没有这些跟工作相关的事儿可做时,至少可以看看书,学习学习新知识什么的。这些因人而异,也涉及到不同人对于职业发展和个人提升的理解,就不多说。
我想更重要的是,从管理角度,怎么看待开发人员“没事可干”。
有不少管理者的思路,是生怕开发人员闲下来。即使没项目,也一定要找些事情让开发人员做。这有一定合理性,一方面,是因为会担心人员“闲极生事”,另一方面,我支付了工资,怎么能让你闲着?
我本人对这种思路不怎么认可。原因是,你出于打一枪就跑的目标,还是想把产品或者公司做大做强。如果是前者,功利性很强,员工只是一个临时的工具,希望在一定时间内最大化投入产出比,当然会不希望开发人员没事做。但对于后者来说,知识和人才的积累会更加重要。
从管理角度,在没有明确的开发项目时,至少有这么几件事是必做的:
- 项目回顾。可以发现项目开发过程中的教训,总结好的经验,为新的项目带来便利。同时,发现欠缺的知识点和技术,已有代码库的弱点。
- 代码库/知识库整理。整理框架,提取可复用组件。
- 研究性项目:在以上两件事的基础上,前瞻性地设计一些新技术的研究性项目,设计更优秀的通用库,制作内部开发工具,等等。
- 人员培训。
这几件事可以完成知识的储备和积累,以及人才的储备和长期发展。我一向认为,公司自己花力气培养的开发人员,比需要时才去重金聘请的人员,要好用的多。人才对公司的忠诚度也完全不同。
如果以上几件事做完了仍然有部分闲暇时间,我觉得就让大家闲着好了。如果公司的整体开发氛围良好,对员工的职业长期发展有一定支持。这些闲暇时间,员工可以用来自我提升,或者产生一些对未来项目开发也有好处的点子,甚至直接实现一些新的技术,新产品。很多创造性的成果,其实都是在自由时间产生的。
补充两句。
在一个大团队中,往往并非单一项目,而是多个项目并行。
在这种环境下,最常遇到突出问题是人力缺乏而不是“无事可做”。
此时,要考验的是管理者的控制能力和资源灵活调动的能力。怎样把有限的资源最大化运用来满足高强度的项目需求,才是管理者真正应该关心的问题。