【51CTO.com独家特稿】2009年3月6日,51CTO技术人频道邀请了IT职业经理人:
《走出软件作坊》的作者阿朱老师作客嘉宾聊天室,和大家一起讨论程序员转型期职业选择,是继续做技术高手还是做管理者?阿朱老师讲述了自己从程序员转变为管理者的职业经历,并回答了网友在职业发展中遇到的问题。
阿朱:本名吕建伟。《走出软件作坊》一书作者。10年以上商业软件从业经验,10余年来一直专注行业管理信息化领域,7年职业经理人生涯,在商业分析、产品体系规划、研发人才体系搭建、研发过程管理、技术架构、贯通售前\研发\售后方面多有经验。
以下为聊天实录,51CTO略有整理
阿朱讲述自己的职业经历
51CTO:今天来到51CTO聊天室做客的嘉宾是《走出软件作坊》的作者阿朱老师。和我们聊聊程序员职业发展中的转型问题,到底是做技术高手还是做管理者。阿朱老师最开始是软件开发人员,之后转变成了职业经理人,请阿朱老师跟我们讲讲您的职业经历。
阿朱:我先跟大家公布一个好消息,在软件中国2008图书评选中,《走出软件作坊》在开发图书类获得了编辑推介大奖。这是很欣喜的一件事情。我跟大家介绍一下我的职业经历,其实很简单。正式工作了10年,但是这10年里面就服务两家公司了。一家公司是做医疗信息化的,另外一家公司是现在的公司是做汽车信息化的。也就是说,我一直待在了企业信息化领域。所以,我的职业经验、眼光趋势基本受我企业信息化领域的限制。所以,我在跟大家交流的时候,很多也有所偏颇,可能有这样的职业经历跟我面对的领域有关,今天跟大家一起交流、分享,一起探讨。
我不是在北京上的学,我来到北京,是实现一个北京梦,大家叫“北漂”。来到北京,当时首先是要成为中国一流的程序员。这个梦想实现了一些,没有很高的那种,实现得很茫然。当时很多毕业生,我也是应届毕业生,我一进去做的就是核心开发人员,这是一个很特殊的个例。我能讲到的也是个人的经历和感受,可能大家去借鉴、模仿、照搬不太容易。
我在上学的时候,瞄准了两块技术,一块是数据库,另外一块是组建技术,也就是大家现在称的一些中间件的技术。这跟现在的应届毕业生或者是大学生有所不同,因为学校都学了课程,相对是容易的,我是跟教学课程过关就行了。但是在学习之余,我专门研究了这两块技术,因为我觉得这两块技术我认为是很有潜力的。当时我在学校的时候,在社会开始工作了,打一些临时的工作。我是做的超时信息化,一开始我就进入了企业信息化的领域,而企业信息化领域数据库是很重要的基础,第二块是组建技术。把软件做到模块化的能像积木一样的组装,我是最希望达到企业信息化开发的层次。所以我在学校就深钻这两块。
由于我一出学校毕业应聘的岗位是核心的程序员,这样子有助于我很快能进入到公司的核心层面。你的职业发展是一步一步上升的,或者是你加入了很高层次的人群,这样有好处,你突然能跟一些很厉害的人对话,他们创新的思维、对业界的看法、技术的看法,你能知道最新、最深的技术。而我们平常的一般学生学习玩技术是看《从入门到精通》,我的学习曲线不是这样的,一开始扎到根上了,所以成长很快。有的人说面临了很精深的层次适应不了,就会退出,被这种压力所抛弃,但是我恰恰适应了这种环境。所以,我很快地能从一个核心开发人员转到了架构师的层次。
当时,我们也正好面临很好的机遇,我们要开发全新一代的系统,整个从技术到业务到重新的架构,不只是做一个维护,这是很好的机遇。很多程序员一毕业出来,程序早就写好大家只是做维护的工作。写好了代码,修修补补打补丁,我面临了全新的机遇,全新的系统需要去搭建,新的人新的产品。就像一张白纸上好画画一样,接触到整个过程。
当我们的架构师产品经过了两年的开发,我们要树立成功案例,我就做了灯塔客户的实施经理,也积累了相当宝贵的实施、培训、推动上线、项目管理这些经验。作为实施经理我做了三家灯塔客户之后,毕竟我是研发人员,不是做实施工程部门的,我就又回到了研发体系内,在研发体系内终于成立了架构组,我担任了首席架构师。这是在我前四年的工作经历,我从一个核心程序员到灯塔客户实施项目经理到首席架构师。首席架构师既要对整个产品的体系架构负责,还要率领架构组,这是技术与管理相结合的岗位。这样也奠定了我未来六年后的职业生涯。
也就是说,我当时去的公司是一个官办国企的背景,有很多体制上的限制。所以,我希望有一些创新性的产品或者是想法能够实施下去,环境不是特别允许,我就来到了现在这家公司,我在现在这家公司待了6年多了,眼看着到了第7个年头,到这家公司我到了技术总监。跟过去是一脉相承的,因为所要求的职能首先要有管理的职能,然后要有技术的职能,毕竟这是研发部门。另外,你还要对企业的业务进行精通。过去我所做的是医疗,现在我所做的是汽车,汽车跟医疗这两个业务是天壤之别,如何快速地进入到行业,了解行业的业务,这是对行业的技术总监提出的挑战。恰好,我过去积累了很多的方法、经验,如何快速地把握行业领域的业务知识,这是有一套方法的,这套方法,我在《走出软件作坊》的书里面大量都讲了,详细的大家都能看到就不多讲了。
我们现在这家公司,我刚去的时候是创业公司是草创型的。这么多年从三五个人十两条的小企业,现在发展到年收入三千万的中小型典型的IT公司,至少在增长速度、规模上都比较令人满意,过去的经历还算比较成功,遇到的坎坷比较少。但是,随着公司的长大,随着起来的人不可能在研发部门去工作,那是很狭窄的领域。而且我们在公司经营过程当中,也发现了一些问题,研发的人会去抱怨销售人员在前面跟客户答应这个、答应那个,研发人员根本就办不到,这个有隔阂,我相信大家很多的公司都存在这样的问题。
还有是开发人员、实施人员也有矛盾,实施人员说这是谁开发这么烂的产品,怎么去实施,部门之前存在着这样的矛盾,谁去调解只能是总经理去。但是对于像我们现在这样规模的,作为老板来说,销售职能是比较高的。我想在其他公司这样的现象也存在,老板的销售职能占的比例是很重的,我们都一样没有摆脱限制。老板既要去照顾公司的日常细节经营,又要去跟客户拿单子,去把公司的销售规模扩大,他无暇顾忌,只能是在部门经理和老板之间再加一层,这个层次就是公司副总。我们现在有两个,一个是销售副总,把老板销售的事情能去分担,使老板不至于压力那么大。另外一个副总是研发副总,就像我现在的职位。虽然公司没有明确规定你是CTO级别,但是职能已经是CTO的职能了。我们只是用了研发副总的抬头来做的,像研发副总的职位就是要衔接售前、研发跟销售如何去互动,你研发了产品必须给我们公司带来销售和利润,而不是说研发出来了销售部去卖吧,作为这样的公司不可能生存。这样的话大家认为公司会倒退。
另外我要衔接售后,刚才我所说的问题全部是由我去衔接、解决。通过我的各个部门之间的管理,包括流程上、职责上、方法上,把这几个部门权限打通,这是我作为CTO的职能。刚才我讲了我从一个核心的程序员到现在的CTO的经历。
程序员的职业发展道路
51CTO:听了阿朱老师对自己职业经历的介绍,一定有很多网友获得了启发。欢迎各位网友在聊天室里向阿朱老师提问。阿朱老师其实对大部分技术人员来说,从事了几年的技术工作之后,总会对自己的职业发展常常感觉到迷茫、困惑。我想问问阿朱老师程序员的发展之路都有哪些?
阿朱:大家一眼能看到的是进入核心程序员、架构师。首席架构师的职位,大家耳熟能详是由于微软盖茨当了微软的首席架构师,这样的话架构师的影响、威望这么大。在咱们中国,作为首席架构师或者是中国公司的架构师来说应该是最好的职业目标,做到这一块,但是不仅仅是这一条路。我的经历也说了,我也当了架构师到了技术总监、到了CTO,这也是一条路。一个技术人员发展高了之后,会到公司的副总级别,不仅仅是做研发,我现在主抓研发但是不仅仅是限于研发。如果说CTO还能更高发展,上面只有一个顶尖了就是做老板,是这样的一条路。
但是,技术人员在技术的路上不太好走,有的人技术达到了一定层次,已经无法突破这样的瓶颈了,他认为一般的难以达到这样的层次,其实他可以做的是项目经理。而项目经理,如果是你跟人交流性比较好,沟通性比较好,可以去做实施项目经理。但是你可能在沟通上不太好,可以去做开发项目经理,因为有一些项目需要开发的,不是安装、培训、推动上线的工作。这些项目开发经理最重要的是项目管理职能,大家不是想的项目管理职能不是跟每个人关系特别好,沟通特别好,也不是这样。项目管理是在项目目标、项目范围、项目质量、项目的报告、项目的计划控制这些领域上,这是对项目管理非常重要的几个点。我刚才讲到项目管理的几个重要点里面没有提到这种人的沟通性,当然人的沟通性不仅仅是开发人员,我想是每一个人的沟通都非常重要,包括即使是开发人员来说,你跟你的经理的沟通、你跟你的老板、你跟你的同事、实施人员、销售人员,这是人的最基本的要求。有的开发人员不善于跟人去讲,或者是讲了一些事情自己都讲糊涂了,确实有这样的开发人员。
那样的开发人员我想在技术支持中心会更加合适,如果技术没有办法达到架构师,因为咱们中国的软件开发,有一些是开发新项目,有的是做维护性的开发,有的是做大型项目的定制开发,这些是需要更具有持久力、细心的,能够按照任务计划、质量走的开发人员。也就是说,许多人都希望成长到那种大手一挥、大框架、大战略的步骤,如果你无法成长到这样的局面,其实我们的企业也需要非常扎扎实实把事情做好的员工。毕竟是高层把大家略下来了,执行到位不到位是很重要,很多公司不是战略不好、计划不好而是执行不好走样了。所以,一个公司需要各种各样的人才,一个按照计划、按照质量能够很好地去执行的员工,也是我们企业当中的一宝。当然,有的技术人员的转型也很多了,刚才讲了实施经理、培训经理,还有开发经理,当然还有技术人员开始转网售前,他对行业比较熟悉了,对客户需要什么也熟悉了,对产品能做到哪些功能也比较熟悉,他做到售前经理,这会延伸成为市场经理、销售经理,甚至还有一些产品经理。
可能大家对产品经理的接触比较少,在一个项目型的公司,来单子然后做开发,这种项目型的公司项目经理是很重要。项目经理能去调查开发人员、实施人员,调查很多的资源。对于一个产品型的公司,比如说像瑞星杀毒、WPS产品型的公司,他们的产品经理是最重要的。产品经理不仅仅要熟悉市场、熟悉客户还得熟悉研发。而在一个产品型公司,产品经理比开发经理占公司的影响力、职位还更重要。所以,技术人员可以向各个分支上去发展。
51CTO:我们可以看到阿朱老师本身职业经历的发展是明确的,您认为技术人应该是从什么时候开始规划自己的职业发展道路?是从上大学的时候开始,还是工作几年之后对工作有了一定的了解之后再规划自己的职业生涯?
阿朱:我建议是在大学大三开始规划自己的职业经历。因为跨入社会第一步是很重要的,我很感谢我踏入社会第一步能进入到一个官办国企这样的公司,因为这样的公司,虽然是有很多这样的想法,可能无法很顺畅地执行,他有这样体制上的弊病。但是他给人一个很宽松的环境,他不像一个私人企业或者是草创企业,他需要必要的盈利。也就是说在一个私营的企业要求赶快赚钱,不管是什么单子能赚钱赶快赚钱,即使接下来不能做也得做,做了就得赚钱,这是第一位。但是在成型成规模的公司,规章制度、流程、岗位相对比较清晰,在这样的公司发展首先没有这样的压力,首先做的事情不会是乱七八糟做了很多的事情,你踏入社会的第一步作为社会中的一员你是一张白纸,这张白纸你画成什么样的画是非常重要的。所以,你一出身画成的是有框架、结构、层次的,还是一开始上图乱画、画点这是不同的。所以,我感谢我过去的公司让我看得很宽、看得很远,我的眼光是在那里修炼出来的,我做人做事的态度、气质也是在那里培育出来的。
我们现在对于人员、不管是技术人员、其他岗位的人员我们最重要的是他的态度。如果你工作干活吊儿郎当或者是欺骗客户不诚恳,或者是对项目的质量进度拖拖拉拉,这样的人不管你的技术性有多好或者是工作经验多丰富,我们其实不需要这样的人。
在一个大的公司,你的眼光、你的态度、习惯能够形成对你未来的职业发展能形成很好的铺垫、基础。所以,大家如果希望想有阶梯状、规划的发展,你的第一步是关键点。如果想进入关键点,你需要从大三、大四开始规划。我想在毕业出来进入哪家公司,这家公司需要什么样的岗位,我想在这家公司做什么样的岗位,去规划去做准备。可能你达不到,你毕业了你没有进入到那家公司,但是你也不会差到哪里去。至少你为职业岗位所做的准备在其他公司也是需要的。首先你的心胸、态度、框架已经建立起来了,这跟在大公司的训练也是差不多的。如果你不做这样的准备,直到毕业了才去找工作,找了半年非常急,你会随便找个公司赶快去做。如果你运气不太好,可能这不是我想要的,干了半年走了。然后到第二家,你可能会真是那种人常说的随波逐流。你的第一步没有走好,你的步步会形成随波逐流,你想走到你想走的目标上就比较难了。所以,职业发展应该从大三大四规划。
51CTO:阿朱老师您是什么时候对自己的职业进行规划的,作为从技术人员向到管理层转变的代表,你是依据什么来对自己的职业做定位的?
阿朱:做职业的规划,我最初的想法是在学校期间学习的技术、学习课程。当时我也学习了很多管理学的知识。我当时能想到的是,我想用我所学的IT技术,能给企业真真带来效益,带来价值,带来真金白银,我觉得这才非常有成就感。我的第一个产品研发出来,企业应用了,他能用我的产品加速企业上规模,从一个小公司到成为大公司,这是非常有成就感的,你的价值被别人认可了。我从大学就有这样对自己的期许、希望。所以,我进入企业信息化的领域也不是偶然的,都是有我这样的心态和想法,自然而然你会去引导到自己投入到,因为你想去这样做的恰好你做到了。所以,这是从大学萌生的想法。
但是怎么样萌生一个管理者的想法。我一开始也是没有管理者的想法,像刚才说了我要做中国一流的程序员,然后研究了很多的数据库技术、组建技术。但是,我发现这样研发出来的产品,客户还是不满意、不认可,我以为用技术能解决很多事情,但是在我们给灯塔客户实施的时候发现不是这样。你技术好,但是你给企业带来的不是明显的价值的提升,而很有可能设置了一些技术障碍,使他们应用起来反而业务更加的缓慢有一些阻碍。然后我就开始想怎么样让一个企业真正产生价值,技术有局限性,我看其它的方法能不能解决。我就研究了怎么去做项目管理,怎么去做管理,你的业务怎么去创新、怎么去改变。这其实是已经站在一个管理者的角度看问题了,因为我过去根本就没有做过管理者,没有站过这样的位置。但是由于我在解决客户问题的现状下,我自发去想,如果我是去做管理者,我应该怎么去做,应该怎么去解决问题,应该怎么给企业带来价值。想的过程当中,我去不断地实践,当然也吃了很多苦头,走了很多的弯路,但是积累下来很多很宝贵的经验,这些经验和经历促使我走到了一个管理者的职位上头。也就是说,你首先有这样的想法,有这样的准备,然后才有这样的职位。也就是说大家不要去想有一个职位就可以了,在那里等着你把你提拔上来了,这种事情在职业发展上是没有的。你不去为它做准备,不去奋斗这个职业不会等着你没有这样的机会。我刚才讲到的我的经历全部是这样,先有想法,然后再实践,实践当中有经历有经验了,管理去看这方面你是很优秀的人才,他会把你提拔上来,不然的话不会给你这样的机会。
51CTO:刚才阿朱老师也提到了,在转变的过程当中吃了很多苦走了很多弯路,那么在这个过程当中,您遇到最大的困难是什么?您是怎么解决的?
阿朱:最大的困难是业务。因为做企业信息化来说,你必须得对企业业务进行很精深的了解,然后才能知道它的问题在哪里,才知道做什么样的产品能结果它的问题,这是非常重要的。我一开始从技术人出身的,虽然深到了管理者之后,这对企业业务的了解心里蛮有坎的。我觉得应该企业架构组织里面有一个专门做业务设计的人,他对企业的业务应该非常精深,然后他觉得企业有什么问题,他觉得企业的业务通过什么样的方法解决,然后把信息记录下来,反馈给开发部门,开发部门根据他的要求再去做软件的开发,这是我最初的想法。但是,在中国的现状这种三五个人十来条枪,包括现在我们的开发部门人员也比较多,我发现在现实中这种组织架构还是没有存在,我想它可能会是在至少应该在100人以上的研发团队才能产生,业务跟开发能够去分离。
但是在中国来说,能上100个人以上的研发中心还比较少,大部分公司全是在20人以下的研发团队。这样的团队最常见的是你作为项目经理,或者是一个开发部门的头你必须对业务进行精深,你不去精深没有人去精深。你当了职位就得解决这个问题,解决这个问题你去寻找资源,有业务设计的资源没有。当你没有资源的时候还得去做事,不光是抱怨,抱怨没有用,抱怨了解决不了,老板干嘛要把你放在这样的位置上面,所以没有办法,只能自己去做业务的了解,深入到第一线,走出软件部门,跟客户去接触,跟客户去交流。
所以,如果是你想在这种企业信息化的领域,能够做得好、走得远必须要走出软件部门,进行一条业务与技术相结合的道路才可以。我也是费了很大的思想转变才觉得这是应该就这样走的,而不是说被迫这样走的。因为现在的情况决定了这样走这条路是最能解决问题的,如果你是想等未来有了这样的架构再说。但是公司得天天经营,不可能等到很光明的那一天,可能等到光明的那一天你的职位也有了变化,你的职业生涯也有了变化,你无法从事那样的事情。所以,我们在做企业经营的过程当中,有问题、解决问题,有现在的资源就拿现在的资源去解决问题,主要推动企业去长大、去成长,这样是比较现实的方法。
51CTO:您觉得技术人的性格会对他的职业发展产生很大的影响,是不是内向的人往技术道路上发展,而比较外向的人才可以做管理者?
阿朱:管理者的要求看什么样的层次管理者,有高层的、中层的。作为中层的一些项目经理,开发经理这样的职位,对业务、对技术要求不是那么高,但是综合性必须要平衡好,这是对职位的要求。你对项目、你对人员团队的管理、企业业务细节的了解,这三者必须要平衡,而不是某一方面很突出,其它方面很差,这样做不了一个经理层,必须三者来平衡。但是,作一个高级的研发类的管理人员比如CTO,他对商业趋势、市场眼光、竞争格局、行业的未来发展变化要非常深刻地理解,这是一种具有商业敏锐思维才能去达到的。所以,不是说谁外向谁内向,作为我来说也算是一个内向的人。有一些人是人来熟见第一面就非常熟,我不是那样的人,但是不妨碍走到今天的位置。老板需要你的价值而不是跟谁熟,有的事情也适合那样的岗位那样的人来做。但是在研发体系职业生涯内,刚才也讲了你的业务、你的团队管理、你的项目管理、商业眼光是几个必要的条件。不是说内向的做开发就比较合适。
51CTO:程序员如果转做管理之后,他是否还需要继续学习,提高自己的技术能力?
阿朱:作为技术人员来说,上升到项目经理这一层面,确实是对技术有一些荒废。他对项目管理花费了大量的时间,在客户那里,客户的调研、功能的设计方面,他投入的心血比较多,他的技术虽然他非常希望去学习到更深入的技术,更新的技术,但是人的实际经历确实有限。很多做开发做得非常好的,技术非常好的,然后上升到管理层面,心里就有一个落差,他觉得我拿手最硬的本领被荒废了,我现在目前管理的能力还不强,他就很茫然,我到底能做什么,我会被社会所淘汰了。确实,在这个职业转变的过程当中,会有一些坎,有的人能过去,有的人不能过去。不能过去的人会退回来,做一个更高级的技术人员,也不妨碍他在公司的收入的增加。
我身边有很多的朋友,都30多岁,他们很多人都还在技术岗位上工作,而且就是编码性的工作,不是进行管理性的,画一个架构图或者是在很高的层面上工作。他们不是,他们也亲自编码,而且是开发中的主力,这些人仍然是30多岁的人。我们在软件业老有一句话,程序员30岁怎么办,但是我身边活生生的例子,大家全都是30多岁的人还在第一线进行开发,他们的技术非常激进,比如说做搜索、云计算存储、PaaS、SaaS方面,包括网络游戏、网络安全,很多方方面面,他们都是核心的人才。大家也可以往这个方向去提升自己。
51CTO:刚才我们都谈到了很多技术人转做管理者的问题,现在我想继续替坚持做技术的人问一个问题,技术人到了30岁之后,自己的同事、同学都晋升了管理层,而自己还在搞技术是否会面临尴尬?
阿朱:大家去想包括国内的一些大的公司,像百度的高级技术经理、盛大、腾讯、网易,他们的高级经理确实还在第一线去奋斗写代码,但是一点也不影响他在业界的影响、威望,也不影响他的收入。所以,技术能做到一定高的层次成就感也挺大,最怕的是技术也做了一半,其它方面也不是特别强,年龄也越来越大,这样的人职业生涯发展会遇到很多的瓶颈。
对于这样的瓶颈,也是刚才我所建议的,就是扎扎实实把你本职工作做好。真如果要提升来说,我暂时也看不到。因为有这样的特点,比较有明显的优点的人他能在毕业的五年内会脱颖而出。不管你说你的命运、职业经历会多坎坷,会在五年内脱颖而出。如果一个人工作了十年了仍然无法脱颖而出,说明他有一些性格当中固定的缺点,这些缺点是随着他的性格、生长已经跟他整体结合在一起了,人常说的最难改变的就是人的性格。这种性格不好改变,不好改变的情况下,确实职业发展受到了瓶颈,这种也不好改变,我现在还没有想到更好的办法。
51CTO:您在带领自己团队的时候,是不是也会注意培养自己的团队成员当决策人员,您比较看重他们的哪些素质?
阿朱:我的团队来讲,有开发人员、项目人员、测试经理、文档人员,我在我的《走出软件作坊》那本书里谈了四套马车的架构。但是,我们为了维持这个架构的稳定,招人员的时候就是定向招聘的。也就是说,随着我的项目的增多,公司需要扩充人员,比如说我们觉得开发人员人手不够,我们会去招开发人员。我们的项目经理不够会去招项目经理的人员,都是定向招的。这样定向招的会带来一个缺点,我招聘人的时候,面试的时候会看这个人的岗位能力强不强。他的开发能力非常适合于这个岗位,我把他招聘进来作为技术人员,他工作的内容是限于这种开发、编码,他接触其它方面不是特别多,这给职业发展带来了一定的问题。我没有想到更好的问题,他一直在做编码,他没有机会去接触项目,没有机会接触管理,他也不会获得更真实的经验,也不会积累一定的经历。他能转到经理层应该比较困难一些。
这样的话,如果他确实是具有这种潜质,你技术做得好,你的管理也非常有潜质,我会把这个人向开发经理,向经理的方向去培养他。但不是说每个人都适合,我只能前进到这一步。
这样的话,如果他确实是具有这种潜质,你技术做得好,你的管理也非常有潜质,我会把这个人向开发经理,向经理的方向去培养他。但不是说每个人都适合,我只能前进到这一步。
不管招哪个岗位的人,首先态度、价值观、人生观,首先你是要符合社会的标准,不要说欺骗客户,对同事也互相排斥,为什么老讲团队沟通、团队协作,现在确实很重要。首先在价值观、态度上要过一个坎,过了这个坎再去讲岗位职能。我要招一个项目经理的岗位,你对项目的管理方方面面你是否有这样的能力,有这样的经验?这才是考核他的专项能力,如果有通用的考核,有专项岗位的考核两步。
阿朱谈程序员创业
51CTO:现在有很多经验不多的初级程序员,刚工作很短的时间想进入到您所说的三五个人十来条枪的状态去选择创业,您认为他们是选择大公司好还是选择创业好?
阿朱:我建议创一次业挺好的,有的人是有一颗不肯安心的心。他总觉得在现在的公司有很多的这个毛病、那个毛病,他觉得不行,在这里实现不了他的想法,大觉得他的想法比老板的想法还要好。如果不要他去创业,他会一直停留在这种心坎层面上。即使他去了另外一家公司也会这样想,我想他创业他会真真切切去感受社会需要什么,一个公司应该怎么样去做,有一些事情不是大家想得那么容易。
我们老就看到,比如说开发人员去抱怨,那个人一点本事都没有,为什么他比我做的职业高,觉得人家会说,给老板拍马屁这样去看,其实公司不是这样的。公司的发展中国人讲格局、一种平衡、权衡。所以,公司是在解决矛盾而又不断地保持平衡的过程当中发展,有一些事情包括老板也没有办法去一刀切,或者是把这个人怎么样。老板也有这样的苦衷,公司必须要在不断解决矛盾不断平衡中发展,一个人去经过了创业,他才会知道原来过去的老板也不是那么错误的一些想法,自己的平实地落入到现实当中,对他以后的发展会更快,更加地平和更好。
51CTO:有很多创业失败的例子,对现在正在处于创业的小团队您有什么建议?
阿朱:创业小团队我建议做的东西不要大,因为我也接触了很多创业团队,有的创业团队做的事情是类似于复制阿里巴巴。有的是要去超过Google把核心做得很高,我想在现在的技术领域来说,超越任何一个现在成功的企业不太容易,而且创业团队最主要的是要活的。这个公司的现金流不能断,断的话就分散了。
要维持现状来说,大家最好做的是给这些大的公司先做补充性的创新,补充性的创新。比如说阿里巴巴现在在客户吸引上的环节比较弱,客户关怀的环节上比较弱,你有没有什么创新性的产品去补充。比如说现在在网络游戏行业,在虚拟装备的交易或者是哪个环节比较弱,我们把这个环节补齐,而不是我要创造一款网络游戏,这款游戏将会成为最好玩的游戏,可能会比魔兽世界更好玩,那样的成功几率要高一些。现在看到网络公司几乎在100人、200人之上,他们会有专门的人员去研发成功的产品,他们成功性比较大。对于初步的团队,投资也没有,人员也少,想做大的事情方方面面照顾不到,有可能想法是好的,但是落实下来是平庸的。落实、执行不好,因为资源缺乏没有办法做得更好。所以,我们作为创业团队,小就把小的特点发挥出来,做成增加去做,这样的话会更容易成功。
51CTO:您的《走出软件作坊》这本书,受到了很多项目经理、开发人员和大学生的关注,作为本书的作者您希望对读者有哪些启发和帮助?
阿朱:每个人看到的全部都不一样,包括这个在豆瓣上有很多评论,曾经排到了第三名,相对比较火热。有的人是还没有毕业的,他看到的觉得原来中国的公司是这样的,因为在业界很少有《走出软件作坊》这样的书。大家看到的可能Google是如何成功的,华为是如何成功的,联想怎么回事、微软怎么回事,大家看了这样的书。对中国IT业界,公司的生存现状不了解,大学生。有的想得很坏,觉得在中国的软件环境很烂没有办法工作,只能是瞎倒腾一点事成不了大事。有的人把中国的软件环境想得太好,我们应该能做一些事业,我们应该跻身国际去做行业。其实都不然,大家都对软件现状有一些认识的误差。
我写的《走出软件作坊》里面一种生存的现状、环境比较符合中国大多数的软件公司。包括我讲的每年我也看中国IT界的调研,发现年年调研都是中国的81.3%的IT企业处于20人以下。也就是说,大量的企业全不超过20人,这就是中国的软件行业。在这样的公司要不不选择中国的IT业去做别的行业,如果你选择了中国的IT行业,也就是这样的公司现状。在这样的公司现状,你不能颓废还得去做事,还得积极地把事情做好,确实需要一个很好的心态正确地看待现在公司的问题与机遇。所以对于大学生来说,这本书是你没有走出社会就能看到未来的工作状况是怎么回事,保持一种良好的心态积极应对、面对它,而不是害怕或者是拒绝它。这是对大学生的。
但是,这本书最受一些人群的赞扬,这部分人群是工作了三年。有一些人已经刚刚走上了项目经理的职位,有一些人已经做了项目经理一年了,有的人还没有做到项目经理,但是都工作了两三年了。他们有很多的困惑,在跟客户做项目过程当中,有很多的坎坷,很多的事情,他们觉得怎么样去解决是一种更好的方法。《走出软件作坊》这本书给大家提了很多的典型的场景,遇到了这样的问题,我是怎么样解决的。但是我不太希望大家去照搬,我刚才讲了我一直是做行业信息化,如果你是做互联网,或者是做嵌入式开发的,可能不太适合于我的经验。但是对于项目管理的知识,它是相对比较通用的。而这些经验、知识都可以值得大家去借鉴。有的行业你确实是借鉴对比性不太强,差异性比较大。但是看这本书的过程当中,你就能引申出你的思考,看到了我的解决方法之后,人家遇到了这样的问题是这样解决的,我遇到了可能会去借鉴、引申、变化,这样的方法也有。
我也经常看一些书,包括《财富》杂志、《基业常青》,尤其是《基业常青》是给想做百年老店的看的书,但是对我们这些刚刚走出生存困境的来看这些书没有办法达到,但是我看这样的书我们现在达不到,未来我们希望达到,希望达到的目标一直在远方,我们希望在现在的点怎么走一条路径,怎么不断地去曲径,而且要给大家一个氛围,我们要去创造一个百年老店,百年老店的公司文化、公司的背景是怎么样的,我看书的时候会思考我们怎么去走,如何去竞发。所以,给读者来说这正是我想的问题的答案,如果借鉴不适合的可以给他带来更多的思考,这是很重要的。
当然,我的书里面《走出软件作坊》还讲了一个未来趋势篇,这里面讲到了五篇文章,这五篇文章是我个人对业界的一些商业眼光的看法。比如说对于虚拟化公司,对于未来技术的演变,我都写了一些经验的分享。有的人员希望能够达到CTO的级别,可能他现在已经是项目经理了,希望达到更高的层次,往CTO或者是技术总监位置上去竞发,他必须要具备商业眼光、商业敏感性,恰好我这5篇文章是为那类人准备的。所以,这本书面临的层次会有将要必要或者是刚刚毕业要找工作的,我有一篇是新人入职手册,有这样的文章,没有入职的还将要入职的人有很多的借鉴。对工作两三年的人有更多工作的经验的分享,想上升到更高级别发展的人也提供了很多思路、思想。
51CTO:您觉得除了技术本身的提升之外,技术人员还应该做哪些方面的知识储备?
阿朱:根据人的性格不同,有的人对项目的管理确实不擅长,有的人对自己的管理都不是管理得特别好。有的人不善于与人沟通,有这样、那样的缺点。但是,不管是干开发人员还是仅仅是测试人员,公司不管是哪个岗位,我觉得有一个点每个人都应该去把经济学到,这个点就是商业敏感性。也就是说,我们怎么做给客户带来的价值更高,我们做一些什么样的产品,能够去卖得更好,推广得更好。也就是说一个公司的成功,不是公司的关键性的几个人,不是老板成功了,然后公司成功了,这样的公司成功不了。把宝压在一个人或者是极个别人的身上这个公司成功不了,一个公司能成功是整体性的成功。
所以,如果每个人都在思考,我们如何做更有竞争力的产品,如何去做更赚钱的产品,如何给企业带来更高的价值,如果每个人都在这样思考,企业处处都有创新,处处都有竞争力,这就是企业的整体成功。也就是说企业整体成功是一方面,另外一方面对于你个人也是有好处。你总是能提出具有赚钱的点子,不管是哪个岗位,你的这个点子都会有价值,都会收到回报因为你能带来金钱。这就是我要说的这个点,每个人都应该去增强这个点。
所以,如果每个人都在思考,我们如何做更有竞争力的产品,如何去做更赚钱的产品,如何给企业带来更高的价值,如果每个人都在这样思考,企业处处都有创新,处处都有竞争力,这就是企业的整体成功。也就是说企业整体成功是一方面,另外一方面对于你个人也是有好处。你总是能提出具有赚钱的点子,不管是哪个岗位,你的这个点子都会有价值,都会收到回报因为你能带来金钱。这就是我要说的这个点,每个人都应该去增强这个点。
网友精彩问答
网友cool:如何跟做事保守的领导打交道?保守的领导总希望用最低的项目成本来得到最高的回报,等计划好了,别的公司都已经开始研发了...苦恼...如何跟这类领导打交道,请前辈指点下???
阿朱:对于保守型的主管来说,他不希望改变,他希望按照他规划的方法去做事。这样有一些创造性的想法,或者是更优化的流程想法得到实施。我建议是这样的,我也遇到过这样的老板,但是去尝,我建议大家在工作中去一点点尝试,因为遇到了这样的主管来说,不太能去说服他接受你的计划,你可以尝试去不断地说服,可能他会去改变。但是,对于这种做事保守、谨慎的主管,他是不看到实际的成果是不会改变的。因为他觉得你的创新性想法有风险,结果是未知不能掌握的。如果你能让他看见了现实中的成果,他才会去相信自己,才会去给予你资源,让你去往那个方向去做。一个人没有资源的话,他解决问题就比较困难。所以,要想得到你主管的支持,必须要先证明自己是对的,怎么证明自己是对的,所以你必须要自己去实践一些事情。当然,有一些主管看得很严,你必须要这样做,一天几个事都看得很严。但是执行还是在于个人,所以,这就是在原则、基础上的灵活,你尽量去按照不破坏整体原则的情况下,去实践你的创新,一点一点去做。而不要去奢望我要整个所有的计划全部要一下子实现,那样不会有人给你那么大的资源,一点点去做,一点点给你的主管增强信心,他会一点点把自己的权,自己的资源一点点会放给你去支持你,你要让他看到成功的成果。
网友netstat:对于小公司的技术总监与成熟公司的相比,更应该注意什么
阿朱:更应该注意的是和老板的关系。作为一个小的公司,更多是人治而不是公司治,你想做事情必须拥有资源,如果你连人都没有,权利都没有这件事情是做不了的。也就是说必须要了解老板到底怎么想的,老板想做什么事情,老板想往哪个方向发展,老板的性格是什么样的。可能你有一个很好的想法,但是老板的思考、思路跟你是截然不同的。你跟老板说我的思路非常好,老板的理解思路跟你不一样,他听不懂你,他觉得你说的这件事情很不靠铺,他不会给你去做事的资源,一个人不会派给你,会把你现有的资源安排得满满的,你没有资源、时间去做你想做的事情。所以你首先要理解老板是怎么想的,他想把公司变成什么样的公司,公司是由他来掌舵你只是他的副手。所以你必须取得老板的资源、老板的同意,而且理解了公司的发展思路,你才能在这样的框架下做事。老板是最关键性的人。我在《走出软件作坊》这本书的时候讲过一句话,你跟老板处得久了,就相当于赵本山跟宋丹丹的小平一样,说蒜是什么,说醋是什么都清楚了,只有到了这样的程度,你跟老板做事才能游刃有余。
网友麦兜:阿朱老师,你觉得怎样才能培养自己的核心竞争力呢,你看准的是数据库和中间件,那现在呢?技术方向是啥?
阿朱:不敢说了,因为这只是个人的一些职业曲线。我是挺看好SOA这个技术方向。SOA其实也是属于中间件的范畴,我们做软件,做了这么多年,大家还是希望我们的每一个软件灵活性比较高,能适应更多的社会发展的变化,而不仅仅是死于一块。大家通过软件工程、技术架构,很多层面上大家去研究、去发展,都是希望解决软件能够更加地敏捷、变化。而SOA的思想与架构恰恰能更加符合现在的IT发展现状,这是我所比较关注的一方面。
另外一方面,在3G手机和云计算的层面上,我也是非常看好。因为在未来大家可能不会人手一个笔记本电脑,但是人手一个手机都是很明确了。未来手机的内存、计算,包括互联网的访问速度也会大大增强,而且时期不会很长,很有可能发生在三到五年之内,这时间是很短的。大家每个手机都会变成像现在的笔记本一样的计算能力,会去访问互联网,存储互联网上的数据,这是很好的前景。如果有人要去创业,选择在这样的环境下寻找你的创新点,成功的可能性会更大。
网友提康德罗加:想问问阿朱,假如我的规划能力不强,是不是可以采取摸着石头过河的方式进行自己的工作呢?
阿朱:如果对自己未来将要做哪个方向不太合适还没有明确的话,我建议他把现在岗位的事情能做一些创新性的思考。我想思考有两个方向。第一个方向在你现有的岗位上如何让事情做得质量更高,其实是很难的。有的人我通过更加努力,工作时间更长,我把我的质量提高,这是一种老黄牛的思想。但是这种想法其实在未来是不被认可的,因为我们需要去有头脑地做事,你要想把你本岗位的事情质量变得更高,必须要有创新,而不是靠时间长,这成了血汗工厂了,我们不希望这样,我们希望是有头脑地把质量提升。第二个方面,在你现有的岗位上如何能更快地完成工作,你完成这件事情,你切有的必要劳动时间你需要三个小时能不能缩到一个小时,这全部要有创新才能做完,不是凭你辛苦才能做完的。未来你做到一个小时之后能不能做到半个小时,全部需要创新,不然的话你无法做完。
我曾经看过一本书《Borland传奇》,是李维写的,他会讲到在未来的5年内,软件开发的周期,现在需要一个月的软件开发周期,在5年之后要求一个星期完成。也就是说有3/4的时间未来是没有的,未来的变化会越来越快,对于生产效率越来越高。没有创新性的思维,你怎么能完成呢?靠你的努力之后,以后不需要这样子。
网友netstat:可以清晰一下技术总监的职责吗?
阿朱:技术总监在国内定义比较混乱,有的是把研发部门的部门经理叫做技术总监,有的是根本就没有技术总监的抬头,在公司是研发部经理就是这样的抬头。有的是把CTO叫做技术总监,有很多是比较混淆的面上。但是我在《走出软件作坊》这本书的第一章双龙会就是讲CTO和技术总监的区别的。我是这样看待的,因为我现在所做的很多事情都在公司的更高层面上去工作,比如说要去客户现场的售前,包括在售后实施的高层访问,这方面的工作会更多一些。但是研发部一些具体的管理,就会放给研发部的经理去做。也就是说,当你公司有研发副总、CTO这样的职位的时候,你研发部的经理就会在抬头上被称为技术总监。但是有的公司来说,有的是他把CTO,也就是说他把研发副总定为技术总监,也有这样的公司。
我想技术总监是更偏向于研发部门的整体的协调跟技术的,我们作为技术总监也是在编码、技术的试验、核心技术的了解,我现在比较脱离了技术层面,更多是在公司的发展层面上,把公司的产品和公司的战略如何去结合,是我的重点。而这个产品如何被一步步写代码研发出来,现在不是我的重点。可能在这一点上有区分。
爬虫:小型软件公司,工作室一类的软件作坊,签下一单不容易,很认真的做,但中途客户要变更需求(变动很大),该怎么办?
阿朱:我说一个整体性,关于这个话题我前天也跟网友们在网上聊过,告诉大家一个方案。首先是客户有什么样的需求,由你的项目经理在前面去接洽,也就是说一个项目必须要有一个项目经理,而开发人员最好不要跟客户直接接触,什么意思?一个客户跟你的公司发生在软件上的变动或者是项目上的变动,最好有一个入口人,而且是唯一的入口人。而不要说由于这个模块是由于A程序员负责,客户知道客户直接给A程序员打电话,A程序员跟客户讲事情,交涉觉得有一些事情能做有一些事情不能做,这就越过了项目经理这个层面,他就无法对整个项目进行总体的协调和控制。
所以,建议开发人员不要跟客户进行直接的接触,全体由项目经理进行归口,客户有什么样的需求,由项目经理去讨论、确定。确定完了之后,把这些需求整理到了一个需求列表里面,我们可以先用Excel的表格里面,我不建议需求去说服客户说这个不合理,那个不合理,这其实是对客户关系、对客户的整个项目。你越拒绝客户,客户会反作于你,你往往是等着客户付款,所以会屈服于客户的这种压力。
所以,不希望大家对客户进行需求的压制,尽量提没有关系,但是提出来的这些需求把它放进需求列表里面。但是,咱们过去客户肯定还提了很多需求,我们把这些需求哪些能做,什么是在近期内实现的,我们把它作为我们的开发任务,先交给程序员,看完了之后觉得在短期内能实现,需要花费多少的工作量,预计什么时间能完成。把这些需求都一点点排下来,而排这些需求的时候,先程序员排自己的工作量,因为程序员对自己的工作能力有预期他比较真实。他会看到第一条的需求能花费0.5天完成了,他会标上工作量,然后根据他手头的开发任务,会标一个计划开发时间。但是可能这件事情他赶不住客户的要求,客户说已经把这件事情推到10天之后,我们希望这件事情在下个星期完成。
所以,具体应该在哪天开发还得由项目经理和客户、程序员一起把这个时间定一下。但是开发的工作量程序员自己去定,定好了具体哪天开发三者去商量一个平衡。把这个列表做出来之后,这个列表要符合一个规定,它不要超过一个预定。如果你定的开发任务都排了三个月了,其实这份开发计划是假的。因为在中小软件公司,包括我们现在做的项目比较大的,客户也是比较规范的。虽然是这样子,我们面临的仍然是需求在不断地变更,项目计划在不断地出现异常。这是一个现实存在而且现在没有很好的解决方法的现状。
我们规定,当我们的开发任务被排到了一个月之后,我们对这些需求不会做计划的。我们先排在那里,但是不会去规定我们要哪天完成,因为这样做出的计划是假的,你应对不了变化。所以,我们能控制的也就是说三月份我们该做什么事情,至少对三月份要做的事情我们有具体的预期,这件事情变化的可能性会少。对四月份可能要做什么事情变化很大,我们把答应客户的需求四月几号我们承受,这是白答应客户的,答应的预期是假的,我们没有办法控制,给客户的承诺我们完成不了,所以我们不要做这样的。我们就是一个月一个月来做。
而控制实际的开发进度,会是一个星期、一个星期去控制,五天工作日做完了之后,到我们星期一,星期一的计划我们早排好了一个月的计划,一个星期一个星期去控制,到了新星期的开始我们会去做微调,比如说上个星期有一些工作没有完成,或者是遇到了难点,我们把这个计划微调一些,微调完了之后继续按照这样的计划完成,五天是一个小的一个月一个月是大的控制。超过一个月的不排计划,需求仍然在记录,但是不排计划,这样一点点做到需求的管理与控制。
网友犀牛:阿朱,我想问一下,如果你遇到一个领导,他的情况是这样的,他认为软件做成什么样子不是关键的,关键的是他的关系把单子拿下来,谁来做他也不管,他拿下来之后,就到处找人来做,也没有文档,就是随便找人来做,至于怎么做,做成什么样子他也不管,他也不给做事的人权力,很多情况下和客户交流的时候需要他出面的,他都不出面,一句话,项目拿下来,就缩到后面去。各项目节点的时间一拖再拖,他都不管,就一句话,这是你们写程序的人的问题。领导的意思就是程序员你把问题搞定就可以了,其它的怎么面对客户啊,什么的,都不管。
阿朱:这样的人做法是对的,首先要肯定这一点。他不管是销售人员还是老板,拿下单子是他的第一工作要务。这件事情怎么去执行肯定不是他的事情。也就是说首先我们先把责任分开,到底是谁的问题,现在出的是谁的问题?首先可以告诉大家这不是老板的问题,如果是销售人员也不是销售人员的问题,这个问题恰恰出在了研发部。研发部现在是缺了一个很关键的人,这个人就是项目经理。就是说大家全部是写程序的,全是最具体写代码的人,谁来领导这个项目,谁来控制整体的全局,谁来把老板、开发人员、实施人员、客户、用户全部协调在一起,把消息传递清晰、及时,把意见统一了。没有这样的人。没有这样的人,当然这件事情没有人去干,除非有人说我自愿,一般公司没有人自愿说要出这个头,我们经常会遇到一件事情。我们的软件做的界面真不好看,是因为没有专职的美工,当然做得不好看。我们软件的文档没有,是因为没有写文档的人。程序员是写代码的,他对代码最熟悉,对文档不熟悉,他写出的文档只有自己看懂,别人看不懂,这份文档是没有用的。这没有意义,他既写文档又看文档又写代码,是一体的,他觉得这样没有意义,但是别人看不懂他的文档,缺点文档的人。
我说了这么多的例子,你有什么样的问题,最终要的是没有解决这个问题的人,我们先把这个人定出来之后,这个问题就很好地去解决了。这是谁谁谁的职责,他没有做到可以追究。否则的话,刚才的网友说了这么多的问题没有办法追究,到底是谁的问题,说这是研发部的问题,这是研发部的问题其实是打板子没有办法打到谁的身上了,没有人对这件事情负责。大家常一句话,全部在抱怨一件事情,但是没有人对这件事情负责。作为老板确实是,他对公司要负责公司的经营,客户的关系、客户的打单他有很多的事情,压力很大。如果他还要负责整个项目的执行、实施落地,其它的单子还要不要再拿。公司如何去发展,如何去做大呢?所以,必须要有一个专职的项目经理出来,专门负责这件事情。如果是再发生这样的问题,就是他的问题,项目经理的问题。定人、定职责,把这个拿出来。