从非软件开发技术层面谈西安软件公司内部管理的愚见
我是一名西安软件公司的管理者,经历了互联网泡沫,目睹了无数西安软件公司的转型。有感于西安软件产业的变化和转型,又融入了自己一点点不成熟的体会,写出了下面的文字……
随着时间的推移,不知不觉自己在西安软件行业做管理工作已近3年,从科班的技术成员变为一个中高级管理人员,自己经历了许多次角色的转变,才走到了今天。熟悉我的人都知道,我有一个习惯,那就是每隔一段时间要坐下来总结一次,不光是技术层面,还有心理和思想,最后写篇文章让朋友们分享。
经常有一些搞理论研究的人问我两个问题,第一个问题是“你认为软件公司最头疼的问题是什么?”,绝大多数管理者的回答都是“人才流失”。不错,这是目前西安软件服务企业和软件公司面临的巨大挑战。我看过许多软件公司,也聊过不少企业的技术总监,他们和我一样,都面临这个问题,小企业有,大企业也不少。
说到以人为本,是做管理的肯定都认同,但要真正做到,我觉得不是那么容易。在软件公司,人无疑是核心,无论你有多么好的过程管理,多么好的产品积累,以及所谓成熟的流程和完善的制度,都不如你有一支团结的团队。其实,在这个问题上,我是反复思考过的,强调人的作用并不代表忽视软件工程和CMM的作用,这些管理手段都是要以人为本的,如果核心骨干都走光了,那么你要文档和流程还有什么用呢?
软件服务企业更是如此,现在在西安的各个行业做项目有一个共同点,客户都是“认人”的。比如某个大型项目持续了1年,客户跟项目经理相处得已经非常融洽了,如果这个时候项目经理离开软件公司,那么就意味着我们很有可能失去这个客户。
软件开发人员有一个共同特点,就是情感驱动,可能是软件开发工作特点决定的吧。因为,所有类型的软件,在研发或者开发的过程中,往往都会加入人为的因素和设计者的感觉。比如,需求分析阶段的交付成果会加入系统分析员对业务的独特理解;在系统设计阶段,架构设计师们的设计思路会直接影响软件的设计方式和技术架构;甚至在开发阶段,不同的程序员有不同的程序编写风格,最后往往导致无法进行交叉测试和代码评审。
其实很多高层管理者在看待软件开发人员的问题上,存在一个认识上的误区,他们认为软件开发人员都是理科毕业,都应该是很理性的。如果你现在还持这种观点,那么你就大错特错了!现象和本质往往大相径庭,最底层的程序员们往往是情感最丰富的人;最“面目狰狞”的项目经理们恰恰是最善解人意的;而表面上跟老学究一样的架构设计师们经常会被你感动得热泪盈眶。
作为团队的管理者,比如技术总监或是项目总监,你应该更多地和员工们工作、生活在一起,时时刻刻了解他们的想法,帮助他们分析问题、解决问题;这样久而久之,你会发现一支团结的团队出现了,你也会为之兴奋和快乐。
随着程序量的积累,程序员会逐步地体会到设计的重要性,并形成自己的设计思路和设计模式,他也就自然而然地成长为一名设计工程师;随着大量的设计工作积累,设计工程师会对系统的整体有了一定的把握能力,由于做过很多项目,积累了一定的客户沟通经验,设计工程师中的一部分人会成长为系统分析员;系统分析员是一个项目组的重要成员,也是除了项目经理之外最重要的客户界面,由于做过许多不同的项目,积累了丰富的实战经验,下一步的发展会出现分叉,即喜欢技术的人会向架构设计师方向发展,而喜欢跟客户沟通的人会向项目经理方向发展。
在很多软件公司中存在一些“技术壁垒”,比如某些所谓的“大拿”不愿意把自己的学问公诸于众,怕自己的那一点点招数被别人学会之后,就不灵了。其实大可不必,可以把你的知识奉献出来,让大家都能听到,这样别人才会把自己的招数也教给你,这样你不就更厉害了吗?团队的领导们应该注意引导“大拿”们进行一些培训,将个人的财富上升成为组织的财富,并注意及时的积累,建立一些简单实用的知识共享平台,将这些财富固化下来。
软件团队经常面临项目的挑战,从打单子到项目实施的全过程,往往需要不同角色和不同能力的人在一起工作,这就必须强调协同作战。协同作战不光是领导层面的事情,它要求团队中的每名成员都要具有这种意识,比如你是系统分析员,既要明确自己在项目组中的定位和工作,也要清楚需要跟哪些人打交道,除了客户之外,你还需要跟设计人员、美术工程师、项目经理等等人员进行不同的沟通,这样才能将你个人在团队中的作用最大化。项目有忙有闲,在紧张的时候,项目经理应该有意识地发挥协同作战的优势,不断地调整项目的分工,弥补短板,最终求得最优的成本。
总之,西安软件走到今天,可谓是步履蹒跚,竞争的威胁和生存的压力迫使很多企业的领导者们改变了方向。而值得我们高兴的是,有不少西安软件公司还在坚持,并在无声中壮大;有更多地软件公司像雨后春笋一般地诞生和成长;国家正在逐步地走向理性,投入的重点更加