管理软件研发,是一项极具挑战性的事情。要管项目和产品的进度和质量、要管人员的招聘和解雇、要关注人员的士气,适合给予薪酬上的激励、要关注客户的反馈意见、要给销售团队提供良好支持、要关注业界新的技术发展方向,引入新的技术和管理方法,建立和健全内部各种流程、规范、制度......,要管的事情实在太多太多了。
因此,管理好软件研发,需要具有完整的知识结构、丰富的经验和职业化的素质。这里,依据我本人的认识,和大家谈谈软件研发管理者应具有的技能结构。已经是研发管理者的,可以参照本文,看自己还有哪些不足。有志成为研发管理者的,可以以本文作为前进的索引图,找到自己努力和提升的方向。
在一个软件公司的组织结构中,软件研发部的部门经理,是非常重要的一个软件研发管理者。项目和产品的需求分析、设计、开发和单元测试,都是在其领导下完成的。软件研发部门经理的管理能力,直接决定了项目和产品的进度和质量、人员的士气和稳定度、内部流程的效率、研发的成本、客户的满意度、产品的领先性。因此,我们以软件研发部门经理这一职位为例,来剖析一下软件研发管理者必备的技能结构。
第一点,我认为,软件研发管理者必须精通技术。这点,可能和很多人的看法不同,很多人可能都倾向于认为,管理者应该尽量远离技术、淡化技术色彩,在纯粹的管理上提升才好。但实际中,软件研发管理者如果不擅长技术,那么如何与软件开发工程师对话?很可能你都根本听不懂开发人员说的是什么意思!如果不擅长技术,面对团队中关于技术选型、架构设计等诸多技术纷争,你又如何能做出决策呢?也许会有人说,部门经理可以招聘一个技术经理或者架构师,这样自己就不用做技术决策了。如果这样的话,你怎么知道技术经理或者架构师做的决策是否正确呢?要知道,整个部门里面发生的任何事情,第一责任人都是你,部门经理!
做技术一线摸爬滚打多年的资深技术人员,可以深刻体会到,在技术领域,失之毫厘,谬以千里!错误的技术决策,导致的后果很严重,很严重!因此,越靠近研发第一线的管理人员,对技术的要求越高!
在实际的项目和产品开发中,软件研发部门经理日常遇到的多数问题,是与技术相关的。因此,雄厚的技术功底、敏锐的技术触觉、清晰的分析思路、广泛的技术眼界,是进行决策的关键因素。
当然,如果只懂技术,不懂管理的人,是绝对不能做研发管理者的。
第二点,软件研发管理者要有丰富的软件项目实践经验。能够根据公司的现状,采用合适的组织结构、过程和方法,保障项目的进度和质量,并大幅度降低成本。绝不简单照搬CMM、RUP、XP等研发管理过程,也不生搬硬套项目管理过程,而是能够根据公司的市场需求、产品特点、人员状况、管理模式等诸多要素,抓主要矛盾,对流程进行裁剪和改进,以最小的代价获得最好的效果。
取得项目的成功,具有极其深远的意义。屡战屡胜的将军,会获得全体士兵的追随。有谁会愿意跟着一个老打败仗的将军呢?在一个失败的项目团队中,往往弥漫着失望、沮丧、牢骚、甚至愤怒的不良情绪,士气低落,其后果往往是项目成为烂尾楼,核心人员纷纷离职。研发管理者业绩最直接的业绩体现,就是项目的成功率。获得项目成功,不仅能够鼓舞士气,让团队成员干起活来干劲十足,还能极大提高软件研发管理者的威信、声望和话语权。
一个项目的成功,不仅包括项目的进度、质量和成本,还要包括人员能力的提升和研发过程的改善,尤其是团队运转的效能提升。提升团队人员的能力,不仅能让后续的工作进展顺利,还能赢得团队成员的感激之情。
第三点,软件研发管理者要有良好的沟通能力。通常,软件研发管理者要至少有20-30%的时间用于和团队成员沟通。及时发现人员情绪上的变化,给予理解和帮助,让团队成员轻装上阵,专注于工作。团队成员做出成绩时,及时给予表扬和嘉奖,做到及时激励,做错事情时,要及时批评和惩戒。所有的这一切,都是由沟通来完成的。对不同的人员,在不同的事件上,采用不同的沟通方式。好的管理者,都是沟通高手,发自内心,源于真诚。对于在沟通中了解到的情况和问题,及时处理,兑现自己的承诺。如果确实做不到的,也要和员工当面说清楚,一切都摆在桌面上,坦坦荡荡。
介由沟通的桥梁,走进人员的内心,成为他们的朋友,理解、支持和鼓励他们,为他们的成功添加一臂之力。
第四点,软件研发管理者要敏锐的市场意识。喜欢参与业界的各种活动,获取第一手信息资料;喜欢与客户、市场营销人员、售后人员、技术支持人员等各种角色打交道,多渠道获取信息,并对信息进行汇总、分析,及时作出决策。常见的问题是,软件研发管理者喜欢呆在公司里,不愿意出来拜访客户,了解客户的意见、建议和需求,也不愿意出来参加培训、商讨会和沙龙,和同行交流。这种封闭的状态,会将自己与市场隔离开来,对市场的感觉越来越迟钝,对客户越来越不了解。这种状态下,如何能让自己的产品有特色,具有领先性呢?
第五点,软件研发管理者要具有批判和自我批判精神。革自己的命是最难的。唯有不断进行批判和自我批判,管理者才能不断检视自己、反思自己,并不断学习、改进和超越自己。眼睛总是向外看,是没有前途的,必须反观自省,不断找出自己的不足,并切实改进。
一个软件研发管理者,如果精通技术、有丰富的项目实践经验、有效沟通、具备敏锐的市场意识,并能不断进行自我批评,那么他就是一个优秀的软件研发管理者,能够带领团队持续获得成功。
|