2018年5月26日

软件团队的管理经验分享

作者 kevinwang

这些年接触过不少的软件企业和有软件工作的实体企业,普遍比较头疼的一个问题就是如何对工程师的工作进行考核,宽松管理不放心,严格管理又会带来一些列的管理成本,与此同时带来一系列的“上有政策,下有对策”的故事,其实也是管理的事故了。网络上曾经流行一个关于HR考虑软件工程师的段子,无论考核工作时间、工作代码量、Bug数量,工程师总会有各种应对之道,令人防不胜防。

要想改善对于软件团队的管理问题,建议从理解软件工作的特点、软件工程师的特点入手,逐步建立知识性管理的理念和方法,形成一套良好的建立信任关系的机制,以融合、引领的领导力带领团队不断获得成果,避免老板或者管理者与工程师形成对抗关系,避免以监工监视的管理去追求工作量的体现。

软件工作的特点

软件工作首先是知识性工作,外界无法通过工作时间、过程产出数量等传统数据衡量软件工作的效果,更不适合以时间、数量定级定薪。知识工作的特点决定了外界无法去监督参与工作的人有多大的精力投入在工作上,这也是很多老板和管理者头疼的地方。要想有好的工作成果,两方面因素是必不可少的,一方面是能力,另一方面是精力,两者还需要有一个基础,就是需要符合企业现状和发展趋势,过高的能力和超多的精力如果违背了企业现状和发展趋势,也是无用功。

在能力方面,包括自我管理能力和专业能力。由于知识工作者的特点,从业者必须具备良好的自我管理能力,否则难以从这个行业中有所成就。自我管理能力我定义为职业能力在个人方面的体现,包括很多方面,例如时间管理、积极主动、完成承诺、有问题及时沟通等等,这些方面能够通过培训和训练达成(当然也有不能达成目标的工程师,将在专门的话题分享)。专业能力包括学习能力、工作所需技术的熟练程度,以及对所开发项目的业务掌握能力,专业能力包括满足需要、持续精进、引导团队三个表现级别。在实际情况中,很少有工程师能够具备基本自我管理,又具备满足企业开发需求的技术能力。

这是特殊时代背景下的一种社会表现。从20年前的全国高校大规模扩招开始,社会就业压力持续增加。恰恰与此同时,这20年也是中国互联网从简单网页开始迅猛发展的时期,无论是从国家地方政策,还是到社会需求,软件类的行业薪资都相对其他行业要明显高出一截。在此背景下,触发了大量的软件行业培训的商机,以培训各类技术为主题,辅助以解决就业的模式,吸引了大量扩招后就业难的学生参与。大规模的软件技术类培训一方面帮助社会分流了就业压力,另一方面拉大了独角兽类企业与一般企业之间的人才差距。就山东大学软件相关的毕业生,除了考研出国,就是去独角兽企业,很少听说这些学生参加社会软件类的培训班。经过正规高等院校教育的学生,一般具备良好的自我管理和自我学习的能力。反之,参加社会培训机构的学生,大部分在自我管理和学习方面相对较弱,在后续职业发展中会碰到一些瓶颈,例如掌握了流程化开发技术后,如何再精进发展的问题,甚至有为数不少的人碰到所学非所需的问题,即参加培训只是为了找工作,找了工作发现并不适合自己。如果可能的话,希望有志于中国软件培训领域的朋友,能够在培训过程中加强职业能力、自我管理、职业发展方面的培训和实训,让参与培训的学生既能够学习到技术,也能够有良好的职业定位和发展。

软件工程师的特点

大部分软件工程师是比较内敛,思维活跃却表现低调,渴望学习技术,个性比较强,部分群体喜欢坚持自己的想法。在当前大背景下,专业程度更高的学生流入独角兽企业、大银行、外企,或者升学出国。因此,对于大部分企业,尤其是传统行业,面临着人才危机,除了北上广深杭、南京、武汉、西安、成都等等国家级城市以外,其他省会及以下城市均面临专业人才缺乏的现状,每一个工程师都是企业的宝贝。企业不希望频繁人才流动、人才即插即用,而工程师希望做更多项目、学更多知识、挣更多钱。

从软件工作特点出发,想要从事软件工作的人,首先要求具备良好自我管理能力,以及开放的心态。自我管理能力表现包括:能够管理好自己的时间,能够管理自己工作和兴趣的关系,能够积极了解项目和团队的需求,能够及时交流问题,能够完成承诺等。前面这些能力能够在一系列的培训和实际工作实践中表现出来。

软件工作评估的误区

我碰到过一些软件公司的老板,希望通过工作时间、工作量对于技术团队进行评价。作为老板来说,我出钱你出力,我要知道你干了多久编了多少行代码,这是很正常的,也理所当然,老板出钱员工干活,给公司回报。可能老板们认为,工作时间长、代码行数多,工作量大,就会对公司产生的价值就会大。

不幸的是,软件行业并不遵从这个规律,这是一个知识性行业,工作量大时间长,未必会给公司创造更大的价值,某些情况下甚至可能适得其反。更为可怕的是,一段时间内所谓的“进度快”,或者说大工作量,可能会给未来留下数十倍甚至更多维护成本的隐患。也有可能短时间内是较慢的进度,但是对于未来会节约几十倍的工作量。这些都是经过无数案例证明过的。也就是说,对于软件行业,工作量和工作时间并不能衡量所产生的价值,有时候可能一句话胜过几十个人月工作量,一个精巧的设计会避免未来不休止的维护,微观上的延期能够提升宏观进度,工作量仅是参考性的数据。

融合引领式的团队发展

综合上述的各种内容,可以看到,管理方面的主要需求是人才即插即用、少流动、快速支撑业务发展,工程师的主要需求是技术持续提高、待遇持续提高,再结合软件工作的特点,我分下一些自己的经验,抛砖引玉,希望能够给同行带来一些管理方面的参考。

首先需要明确软件团队的文化氛围,在团队中传递共同的理念。这是最基本也是最困难的,每个企业的背景和实际情况不一样,根据企业情况为基础,以保持持续研发成果支撑企业发展为目标,进行合理调整。比较好的工作文化包括主动、责任、帮助、分享等内容,通过持续的培训,并在工作过程中不断实践,逐步靠拢目标。

其次是不断的建立信任。信任的管理成本最低,当有新同事加入一个团队时,需要经过长时间的工作共同经历一些事情,与主管建立信任关系。信任的达成是以团队文化为基础,完成工作目标为目标。

上述两方面比较务虚,用一句话总结就是“理念和文化在工作中有具体对应的行为和评价”,文化和理念说起来容易,如何识别日常行为对应理念,是管理的一个目标。【诸葛管理大数据有助于帮助企业将企业文化落实到工作行为】。

第三,软件团队带头人更多的是以融合、引领的方式带队,就像跑一个马拉松,持续的带领着队伍往前走,可能有人姿势不对、有人需要喝水加餐,团队负责人负责去帮助并解决问题,并保持围绕企业的目标持续精进。通过实际的不断的工作推进,不断的培训和选拔人才。不可避免的遗憾事情也会发生,肯定会有人跟不上、不想跟的情况,以开放包容的心态面对和解决。