软件研发的成本只有一项:人力成本。这种纯人力的投入如果合理管理,则能收益颇丰,因为它不需要投入其它任何的设备、材料费用。但如果管理不善,损失也相当惨重,团队成员的付出就是智力,别的什么都不会留下。从这个角度看,软件公司的门槛似乎非常低,只要能组建一个程序员团队,再拿几个项目,似乎就能将公司做起来。在软件公司多如牛毛的国内,前赴后继的先驱们不厌其烦的用实际行动在证明这种做法的谬误。
软件研发团队的稳定比其它职能团队的稳定更为重要,这和纯脑力的劳动投入有关系。如果是生产一种硬件产品,有工具、有操作方法,操作者只需熟悉这些就行了,换了人,再重新熟悉一下工具和方法即可。但是,软件的好坏,除了工具、方法之外,更重要的是编程者在团队项目中的经历。一个在团队中磨合了较长时间的程序员,一旦其离开当前所从事的内容,后来的人很难在短期内接替其已经完成的工作。很多代码不是读懂的,而是亲手设计过,参与过,才能确切的明白其中的细节,并且留在记忆当中,这种记忆就是一个成员在团队中的经验和贡献。
如何保持一个软件研发团队的稳定?
鼓励,并形成共同的发展目标。
这似乎和其他类型团队的管理没什么两样,但要真正做到却很难。
真正软件研发人员身上有着传统知识分子的清高,能力越强的越是如此,他们将个人绝大部分时间用于和电脑打交道,付出脑力并获得解决难题的快感,世俗的人际很难获得他们的共鸣,至少绝大多数的高能力者是这样的。他们在工作中不希望去处理复杂的人际关系,只将注意力集中在那一个个待突破的技术难题上,在他们心里,这些代表着他们的真实水平,在解决后期望被认可,从而获得个人的荣誉感。但国内大多数的软件公司老板,尤其是中小软件公司的老板,都是销售出身,他们期望程序员的工作风格如销售一样,在领导和客户面前彬彬有礼,有较强的心里承受能力,善于处理各类人际关系。这种期望类似于一种不切实际的空想,技术与销售完全是两种思维,虽然两者都是靠能力吃饭,但是技术能力来源于对技术的理解和积累,销售能力则来源于对人际关系的理解和积累。技术是简单而纯粹的,人际关系则是复杂而善变的。所以,大部分的程序员在职场当中表现出来的都是单纯而情绪化的,他们不会主动通过和上级沟通来获得个人的利益,他们会像缜密地思考技术问一样悄然而细心的感知公司的管理方式,任何的不快大多都会积蓄在心里,也有的会在私下的场合简单的牢骚发泄,若管理者不能察觉到这些,日渐日重,慢慢就会累积成团队的不稳定因素。程序员一般提出的离职要求,大多数情况下会是突然的,在管理者毫无防备的情况下发生,而且一旦发生无可挽回。所以,要保持技术团队的稳定,要求管理者要细心,并认可程序员的付出,通过薪水福利、职位升迁或是个人荣誉表彰等方式来鼓励其不断的发挥个人的潜能。
除了通过物质或精神的方法鼓励程序员之外,另外一个维持团队稳定的办法是切实的地每个程序员制定即符合其自身特点,亦符合团队整体发展的职业规划方案,亦即共同的发展目标。在一个团队中,每个程序员各有所长,有编码能力强一些的,有沟通表达能力强一些的,而且各人的兴趣也有差别。由于程序员的工作方式及性格大多很被动,他们很少能明确自己的职业规划,并且通过自己创造条件来努力实现职业目标。如果管理者能够细心的为每位程序员,尤其是具备一定发展潜质的程序员,量身定制职业发展方案,不但能解决他们个人发展的困惑,亦能更快激发其潜能,提高工作效率和管理水平。
维持一个技术团队的稳定还有很多方法可以探讨,但是无论哪种方法,其出发点都应是切实的考虑团队成员的个人利益,真心的对待,而不是每天只画大饼,不谈实际利益。