(转载)关于提高项目人员的工作效率
--------------------------------------------------------------------------------
最近我在做项目,有些问题我自己思考了一下,我想得到你们对我的一些看法的意见。
第一个问题是关于工作效率的问题。下面这些想法,我主要是从程序员的角度去考虑。
我觉得影响工作效率的主要因素是以下三个:
1. 程序员的心情。
如果程序员的心情始终能保持愉快和自信,效率会很高。
我自己感觉,要做到这两点,首先是要有合适的休息时间,最好是5X8的工作机制(理想情况),这样容易消除疲劳,带来每天上班的好心情。如果是每天加班,人很容易产生疲劳感,如果消除的不够及时,肯定会影响后续的工作,最恶劣的结果是员工对上班抱有恐惧心理,这样的后果是非常可怕的。当然在实际的项目中,5X8是一种理想的境界,实际上为了赶进度往往必须要求员工加班,而且某些员工是他(她)必须把分配给自己的任务完成后,才会有真正的轻松感觉,否则即使不要求他(她)加班,他(她)也休息的不舒服。我想比较好的做法是连续加班的周期不要太长,之间应该有个缓冲期。
其次,如果程序员能经常接受正面的反馈信息,他(她)的愉快度和自信心会得到很大的提升。人都是喜欢接受赞美之辞的,人的自信心总是在他人的赞扬之中得到增强的。所以,我想在一个项目团队中,彼此之间能经常的肯定对方的工作(哪怕是很小的成就),会使团队之间的合作很愉快。
再次,就是每个程序员的工作量的安排。如果工作量的安排能做到周期比较短,并且适量和公平,又有一点挑战性,那么程序员能经常的感受到成功和超越的感觉,他(她)就会觉的工作很开心,并且乐于这样的良性循环。如果周期很长,或者很有难度,那么他(她)受挫折和打击的机会就比较大,有可能进入一种恶性循环。
2. 程序员的技术水平。
技术水平是程序员自己控制和积累起来的。但在一个项目中,我觉的有几点还是挺重要的。
首先程序员总是希望能在项目中不断的提升自己的技术水平。我想,如果程序员发现这个项目的技术要求中,自己80%已掌握,他(她)还是挺乐意进这个项目组的。因为,他(她)能在这个项目中学习到另外的20%的技术。而且,那些另外的20%的学习时间对整个项目的进度的影响应该是可以控制的。
其次,我觉的在整个项目团队中,知识应该是共享。大家应该取他人之长,补自己之短。而且在项目实施过程中的学习往往最有效率,最能活学活用。如果某项技术团队中的大多数人没有掌握,但却是大家人人必须使用的,我觉得最好还是先做个短期培训(比如半天),这样至少可以培训到入门的水平。我觉得这样比团队中由一个人support其他人效率要高。因为我觉得短期培训之后,不仅可以缩短其他人的学习时间,还可以节省supporter的工作时间并保持他(她)的工作的连续性。另外,我觉得共享资源也是挺重要的,毕竟程序员support他人的时间和深度有限,往往是就事论事而已。因此,共享相关知识的文档是很重要的,如果大家能把自己看过并觉得不错的文档介绍给其他人,---最好能加上简短的说明,我想能大大的提高团队的工作效率。
再次,就是兴趣和工作需要的结合。最好的情况当然是程序员对项目技术要求中的其余20%很感兴趣,这样他(她)的学习时间就会大大缩短,而且学习的深度也会大大的加深。但是,如果两者发生冲突,我觉得程序员应该先考虑项目的工作需要,而且必须至少掌握到项目要求的范围和程度。我个人觉得,同一种技术,第一次使用时会不知所措,第二次时可以丢三落四,但第三次就应该易如反掌。如果一个程序员在第三次还要不断的请教他人的话,就说明他(她)没有好好的学习。即使不感兴趣,我觉得这样也是不应该的。
3. 程序员的工作方法。
不同的行业有不同的工作方法。我觉得程序员的工作方法中要注意下面几点。
首先是要先想后做。我觉得先想后做的目的主要是在写代码之前尽量的排除不确定因素。不确定的因素越早发现,修改起来越简单,对后续工作的危害越小。想的顺序,我觉得是先考虑程序在商业上的逻辑和流程,再考虑程序在计算机系统上的逻辑和流程,然后考虑程序的简单性和重用性,以及对现有系统/程序的影响。这样保证程序员在开始写程序之前能考虑到各方面的因素,做到心中有数,不至于程序已经写了一半,才发现有些情况没有考虑到。
其次是简化问题。这里主要是指程序在计算机系统上的实现。有时候,程序员发现计划的解决方法太过复杂与烦琐,这时程序员最好停下来换个角度重新思考一下,因为根据80%/20%的法则,80%的情况是会有更加简单的解决方法。在真正开始做之前停一下,想想还有没有更为简单的方法,有百利而无一敝。
再次是代码的书写习惯。我觉得遵循一个原则会带来无穷的方便:code a little, test a little。程序员应该把自己的工作划分为几个比较容易控制的小模块,每个模块都要在写完代码之后做测试,确保没有bug(又是理想境界)。这样才能确保程序的健壮性,并且减少了其他人因为使用你的程序出现问题的机会,大大提高了整个团队的工作效率。同时,程序员都很清楚的是,程序的编写不是一蹴而就、一步到位的,它是一个coding与test的不断循环的过程。
所以,程序员应该在代码中的关键部位加上清楚明了的debug信息,以使程序员在程序在出错时能非常快速和准确的找到出错的原因。这些关键部位之一就是程序员在自己的代码中使用其他程序员的程序的地方。另外,一个项目总是有不同的程序员共同来完成,所以一个程序员的程序往往被其他的程序员使用,因此必须要求程序员在自己的程序中加入适当的、简单明了的注释信息,免得程序员不在场时,其他程序员因为不知道如何使用他(她)的程序而影响整个项目的进度。
还有一点,我觉得也是非常的重要的,那就是要保证程序员工作的持续性。如果程序员在工作时老被"骚扰",很难进入工作状态,那整个项目肯定是无法按时完工了。
以上三个因素中,我个人觉得心情最为重要,技术水平和工作方法次之,并且层次相当,没有先后之分。
以上是我对工作效率方面的想法,希望能尽快得到你们的反馈信息。
浙公网安备 33010602011771号