软件工程师的职业生涯――从入门到精通
软件工程师的未来是什么?有那些出路?你是否已做好物质上及心理的准备以迎接各阶段的挑战呢?
    
      写软件程序其实很简单。
    
      电脑入了门,熟悉它运作的基本原理,要自己设计些程序并不难。不断改善的人机界面,提供了前所未有的简单电脑使用方法,更让写程序的年龄记录不断下降。
    
      入了门,只要条件能配合,走上专职软件这条路是相当自然的。这里说的条件是什么呢?个人觉得兴趣是第一,再者就是进修,第三是时间,最后也是最重要的是环境。
    
      有兴趣,写程序至老仍HIGH!
    
      兴趣绝对是第一。有兴趣,工作才愉快,也才能持续。还记得自己的第一个程序虽然只有一行,但却为我打开了软件无穷奥妙之门。似乎从那时起就注定要“吃软饭”了。
    
      大家都知道咨询业的演进比换季还快。学校虽尽其可能传授学生最新的知识,但很可能学校所学的一毕业就过时了。乘着工作的机会,接触新知识就成了最重要的进修方式。能不能把握好这些机会,决定着程序员的技术层次和前程。
    
      写程序是很需要时间的。时间更随程序的复杂化而成级数增加,但大部分的是不是花在程序编写,而在规划和纠错。
    
      入门容易,要成为大师却很难。英语有句谚语是这么说的“十个女人不能在一个月内生个小孩”。同样的,要在软件业修炼成精也要有相当时间磨练和积累。成不了大师会成什么?
    
      还记得十年前拜访INTEL总部时,碰到一个头发稀白的老人,说他不写程序时最大的乐趣,就是逗孙子玩。他乐在写程序,也有本事和小毛头一争长短。这才知道真有人写程序写到老。虽然我也怀疑他那颤抖的手会不会常常按错键。
    
      但是除了要有兴趣与本事外,环境的配合才是最重要的。在现今这个“万般皆下品,惟有职称高”和“物欲横流”的奇特环境下,要想终老在软件设计是有相当困难,更需要有相当勇气与坚持的。程序设计干了几年,若不能在名片上弄个“XX经理”、“XX负责人”的头衔,比不结婚还受亲朋好友注意与侧目。
    
      大部分中小软件公司或部门也都依循这种模式。当软件部门成长到一定规模时,百分之九十九的公司会把最资深或最好的工程师转成初级或中级部门管理者。但其成效大多是负面的。因为这两种工作不仅工作内容不相近,思考模式不相同,所需背景及训练也天差地远。其结果可能是公司损失了一个好的工程师,换来的是一个不成熟,不适任的管理者。
    
      笔者也曾带领过研发部门,其间还继续软件开发的工作,深深感觉到其中的差异,这才婉拒更高一层管理的升迁机会,重回纯技术的软件设计跑道。这其中仰赖趋势科技“纯科技也能通顶”的一贯政策,也就是说环境能配合。
    
      软件设计的人要想清楚,想一直走技术钻研,就必须要能接受专业经理人的管理。那些人也许技术不如你,在业界、在公司的资力也远比你浅,但他们有管理的能力,有比你高的EQ。你只认识 0与1,还认为大部分的事情都能区分0与1。更重要的是他们对管理有兴趣而你没有。他们经过专业的管理训练,而你只上过一些粗浅的管理入门讲座。
    
      我们先不管决定走纯技术管理路线的时机问题,因为那牵扯太多个人主观与环境客观因素在内。先假定环境是有利的。让我们来看看道上的风景吧!
    
    真善美——软件设计的终极精神
    
      在技术钻研的历程上,刚开始你可能只是一个程序生产者。在这个阶段里,你只以编写程序的能力来提供服务。常常知其然,不知其所以然,但那不是问题。就像是个学徒,重要的是打好基础。千万不能染上一些恶习,像求快而忽略细节。也不要以为简单和简陋一样。
    
      通常经过一段时间,单纯的程序编写已不具挑战性。渐渐的,你开始对自己负责程序编写的模块设计产生怀疑,并能适时地提供改善的建议。接着,你常因提出好点子而被嘉许。就这样逐渐开始接触设计的领域。富有创意或是基本功好的人,会比较早进入此阶段,比较能享受意见被接受的快乐与成就感。
    
      更进一步,你开始负责模块的设计。也许自己只编写较重要的部分程序,而将大部分程序编写工作交给上述的程序生产者。与前阶段比较来说,工作内容从程序编写渐渐成设计。程序编写的份量虽逐渐减少,但通常却是较重要的部份。在和其他负责模块的同事不断沟通中,你了解到整个产品的设计理念和重点。
    
      能不能更上一层楼,评判模块的设计上是不是够完整,具不具足够的前瞻性。我看过很多不错的工程师上不上,下不下地卡在这一层。不求真,断章取义,只看到问题的表面。不尽善,贪功求快,只解决今天的问题。不知美,尽虎类犬,只自得东施的效颦。有人说身体虚易补,品味差难改。根基没打好,观念又有偏差。若非下足工夫,是很难再创新高的。
    
      再高一级的阶段中,你能独立完成一个产品的全部模块设计。此时着重的是产品系统的周全性,和各模块之间的关联及互动。
    
      产品设计成败操之在手,压力自然大增。抗压能力就很重要了。头发会白、会掉,都在这个时候。基本功扎不扎实正确不正确,直接关系到设计成立与否。
    
      产品功能设计已不是重点,你追求的是真善美。要达到悉尼歌剧院的功能性要求有很多种设计与做法。但让它有名的绝对是设计者追求真善美的过程和巧思的结果。我时常会想起日本一家餐厅墙上的那幅“大味必谈”的题字,一次又一次地冲击着我。让我更确定我追求的是什么。
    
      技术专家,管理者大不同
    
    每一个阶段,功力将随着经验渐渐累积。但产品的特定功能要求与复杂度、新知识吸收速度、工作态度、环境和机会都在左右你的进度。这些不管你是在软件研发或是软件品质保证,甚至任何技术工作上都是一样的。
    
      在另一条管理软件人的路上走来也并不轻松。有一定的技术知识是免不了的,因为大部分的技术人员,会由于本身的不够成熟,而不服技术比不上自己的管理者。管理人要更专精的是经理的素养、软件工业的流程与进度控制、和资源(软件技术人员与经费)的有效使用。还要做好上下层沟通的桥梁,更要能做好居间缓冲的工作,最高段的是我称之为“欺上瞒下”的功夫。
    
      老实说,受人欢迎的命令,不叫命令叫福利。能让上司满意你(和你的部下),又不使部下恨你(或你的顶头上司),还能彻底执行不被人欢迎的命令,绝对需要此上乘的功夫。只要心术正,就不怕走火入魔。只是不走火入魔的不多就是了。
    
      软件路上还有第三条跑道,那就是产品经理人。这些人也要懂相当的技术,更重要的是要能判断那些技术是具市场潜力与价值的。他们能把客户要的技术包装产品定义。换言之,他们是客户与研发人员的产品中介。
    
    
© 宝鸡人事人才网站版权所有