如何成为优秀的软件人才(转)
全文见http://hi.baidu.com/seaweaver
一、软件白领的现状
1.1 青年白领阶层小康了吗
改革开放20年之后,中国基本上解决了全民的温饱问题。现在国家提出了"全民奔小康"的奋斗目标。所谓"小康"是指全国人均年收入达到1000美元。你千万不要觉得"全民奔小康"这个目标很容易实现。要知道中国有13亿人口,大约有10亿人在拖小康的后腿啊。所以发达地区至少要有10倍于落后地区的经济能力,才能抵消落后地区的负担。
据大致估计,上海、北京等发达城市的软件白领平均年薪为10万元左右。如果进一步细分的话,年薪5万元左右的称为灰领,年薪20万元以上的称为金领。
对于生活在上海、北京、深圳等发达城市的人而言,如果他的年收入只有1000美元的话,那么他就是赤贫阶层了。面对高昂的房价和不低的物价,年薪10万元左右的人也许有胆量谈小康。所以大部分白领人士将和农民一样,不得不为小康而长期奋斗。
1.2 男士白领成家立业的艰辛
尽管软件白领是令社会大众羡慕的阶层,但是男士们成家立业的艰辛程度丝毫不亚于农民和蓝领。这是因为他们所负的压力远远超过了经济收入。
家的三大构成要素是"男主人、女主人、房子"。根据中国的传统习俗,买房子这个重任主要由男士来挑,女士的主要本事将用在有房子之后治理这个家。
工作才两三年的小伙子全靠自己的积蓄难以支付"房子的20-30%首付"。在亲人和朋友们的帮助下,好不容易买了房子,接下去每月都要还银行贷款。
当他的工资扣除税收、缴掉各种保险金、还银行住房贷款之后,顿时所剩无几。这时如果再让他肩负家庭的生活费用,他就不再是白领了。我已经多次听到一些小伙子们恨恨地说:自从买了房子后,我就活得像个民工,开始为家庭的温饱而奋斗。
这就是目前普通软件白领的生活写照,如果他不能在事业上有大的跃进,生活的压力将逐渐磨灭他的斗志,后半生就平淡如水。
大多数人并不甘心平庸,所以他不停地奋斗,不停地承受更多的压力,这种"死循环"程序在读大学的时候就已经编写好了。
《读者》曾经刊登了一篇文章叫"中国的男人为什么不浪漫?",估计是悠闲女人写的。其实不必写那么长的文章,一句话就可以解答:因为他太累了。
二、软件白领的职业发展
2.1 编程这活究竟该干多久?我们是否要一辈子编程?
这不是愿意不愿意一辈子编程的问题,而是能不能的问题!
编程这活儿可以算是青春饭,合适的年龄是20至30岁之间,比女孩子的青春还要短。20来岁在大学里学编程,虽然刚开始时水平比较臭,但是学习劲头很足,进步比较快;到25岁左右时编程技能、编程效率达到高峰;之后,编程水平基本停滞不前,但是编程效率逐渐下降,到30岁左右已经不是编程主力军了。
程序员不能老是捧着旧饭碗,年龄大到不再适合于编程时,并不是说这个人就无用了,而是应当去做更加有价值的事情。
可恶的励志古训"三十而立" ,其含义是男人到30岁时应当:(1)建立安全的家庭,也就是让老婆孩子过上小康的日子;(2)在事业上有所建树,不再是无名小卒。
由于古时候中国男人的平均寿命不到50岁,而且都是男人当家,所以如果男人活到30岁还不能立起来,基本上就没有指望了。但是现代中国男人基本上能够活到70岁,读书时间花得很长,因此"四十而立"是比较符合现代国情的。
不幸的是,女士们不仅广泛接受了"三十而立"这个观念,而且还把它升华为考核男人成败的标准。因此,男生一离开学校就要为"三十而立"奋斗,时间紧迫,压力太大。
2.2 软件人员三十岁该干什么?
如果30岁了,他还天天编程,估计他很难完成"三十而立"这项艰巨任务。如果完成不了,只好向家庭领导申请延期,被家庭领导捏住把柄。
更糟糕的是,30岁的程序员比起25岁左右的新生代程序员,毫无竞争优势可言。
由于软件技术更新极快,编程语言和编程工具都会革新换代,新生代程序员在掌握新技术方面具有先天优势。
30岁的程序员面临的家庭事务比较多,压力大,上班时常感困乏,工作老是分心,编程效率自然落后于更年轻的小伙子们。所以对于程序员这个职业而言,绝对无法倚老卖老。如果年长的程序员不能在软件工程和项目管理方面发挥优势,那么他的前途可能比较黯淡了。
"编程至上" 的观念不利于职业发展。
程序员出身的人往往对编程情有独钟,很难接受"软件人员不再编程"的观念。几年前我也是成千上万个狂热程序员中的一员,信奉"编程至上"。我到企业工作几年后,逐渐改变了"编程至上"的观念。英名的领导会根据团队利益最大化这个目标开展工作,而不能把编程当作团队工作的核心。
我放弃编程并不是因为自己老得编不动了,或者偷懒,而是因为我继续编程的话将使自己没有精力去做更加重要的事情,"机会成本"实在太高。
2.3 软件白领的常规职业发展
在外界看来,做个程序员是蛮光彩的。但是我们自己切勿轻易满足,软件行业还有许多比编程更有价值的工作。
软件白领的常规职业发展大致可分三个阶段:
第一阶段,做个职业程序员,主要工作是编程、测试和维护,领导让他干啥就干啥。
第二阶段,成为项目经理或同等级别的技术负责人,从事项目管理、需求分析、系统设计之类的工作,带领一批程序员干活。
第三阶段,成为机构(企业或者事业部)的领导,成天琢磨怎样让机构赚更多的钱,决定产品的发展战略,然后让别人去开发产品。
软件白领处于第一阶段为合格,处于第二阶段为良好,处于第三阶段为优秀。比较合适的年龄分别为25岁左右、30岁左右、35岁左右。第一阶段比较容易实现,第二阶段需要一定程度的努力,第三阶段则靠奋斗了。
三、理工科大学教育的缺憾
中国大概只有几所大学才有那样的气魄:我们培养的是国家栋梁之才,而且的确做到了!
国内绝大多数理工科大学的教育目标是:让学生们成为出色的工程师,毕业后找份好工作。说得难听一些,就是培养出色的打工仔。
这种教育方针导致无数有天赋并且勤奋的青年学生逐渐演化成为只懂技术、没有思想、缺乏抱负的平庸之辈。
学校正规教育的大部分内容是对人生有益的,但是也夹杂了不少愚昧的教导。遮蔽人生精彩的通常不是困难和挫折,恰恰就是愚昧观念。书呆子呆就呆在全盘接受了"好的和愚昧的"教育,结果让自己成为有知识的无知者。
我分析自己以及许多同行人士的成败得失,经多年思考之后,总结了"让普通人成为优秀软件人才"的简要模式。除了自己身体力行外,我还言传身教于所认识的软件人员。虽非真理,但比起学校里面冗长乏味、空话连篇的政治、成才教育等课程更具实用价值。