刘晨,1996年进入IT业,从程序员干起。1999年,在“群情激愤、血气方刚”之下开始与朋友一起创业,建立技术团队,担任技术负责人,规划产品线,并获得两轮海外融资。现在公司已经小有规模,但身为老技术员的他经历几次招聘之后,发现现在的程序员水平堪忧,于是他想告诉大家———程序员如何铺就职业坦途。
低水平程序员已经过剩 随着开发工具的可视性、易用性增强,程序开发变得简单了。特别是随着软件工程方法的深入人心,开发过程管理愈加规范,代码编写变得类似于机械性的动作。现在,程序员几乎是一个没有门槛的职业,各培训机构都号称可在2-3个月内打造一个软件蓝领。由此产生一个问题,这样培训出来的程序员顶多只是编码人员,无法进行高水平的程序设计,而众多软件企业所苦苦追求的恰恰是具有丰富项目经验、能够独立完成程序设计任务的程序员。在我看来,经过这几年大学的扩招与培训机构的热捧,低水平的程序员已经过剩。 三大原因阻碍进步 其实,软件人才缺乏已经不是一年两年了,为什么前些年大量进入软件行业的人没有大量成长为熟练人才呢?主观上来说,很多程序员心态浮躁,主要表现是: 一、不扎扎实实地钻研理论,打好基础。虽然很多程序员也读书,但读的大多是比较热门的所谓“技术”书,业界炒什么“单词”,他就读什么,但理论基础不牢、功底太浅的缺点却不去修正。例如,一些程序员和大学生成天读.NET、J2EE、Ajax之类的书籍,但关于数据库原理、数据结构与算法等基础理论,却一窍不通。甚至有些学生不好好学习学校规定的课程,却到外面参加培训机构培训。 二、敬业精神差,程序漏洞百出。很多程序员工作带身不带脑,边写代码边上网聊天,程序漏洞百出。很少考虑程序问题给用户造成的损失,给公司带来的负面影响,很少去研究自己写的代码能否进一步优化,总认为代码只要通过编译就OK了。 三、过于频繁地跳槽,没有长期规划。刚踏入社会,就成天想着房子和车子,由此抱怨工资太低、待遇太差、老板太小气、房价太高。由于行业发展迅速,这些程序员就会频繁跳槽,他们很少结合自己的实际能力和水平衡量自身的“价值”,更缺乏通过一个长期规划不断提升自身价值的意识。 当然,造成这种现象的原因也不光是主观的,整个行业的环境也有一定的责任,比如中国的IT企业绝大多数是作坊式或半作坊式的,招聘人员的要求就是“能做事”,很少有企业想要真正培养一个程序员;IT企业管理和运作不规范;企业规模太小,没有研发投入…… 三个结合铺就坦途 在任何一个行业里,初级人才都是不缺乏的。要为自己的职业生涯铺就坦途,就必须把自己从初级之中“解救”出来,成为行业内的熟练人才。“解救”的关键在于三个结合: 把知识学习与企业需求相结合。大多数程序员都是科班出身,但大学教育是普及教育,教给学生的只是知识,而企业对学生的需求是技能。当双方都不愿意承担“衔接”的作用时,就需要学生自己想办法。目前,企业对软件工程流程越来越重视,所以,适应企业的需要就要学会规范的文档,然后才是技术。东软的副总、CTO方发和这样描述他对IT专业学生的要求:“我们要求学生注重4方面的能力:眼界、学习的方法、技能和规范。要学习如何与别人合作,比如在代码风格上统一。虽然只是一名程序员,但仍需要站在项目经理的层面上看自己的工作,这样才能更好地融入到团队中。”可见,不断积累能够和企业顺利接轨的素质与能力是迅速发展的基础。 将技术提升与行业相结合。程序员首先要在技术上做得比较深入,成为技术专家。无论是Java还是.NET,还是数据库领域,都要成为行家里手。要想出头,必须提高系统设计能力。2000年以后,软件业的编程思维和模式、方法发生了翻天覆地的转变,软件工程流程的普及,使得对程序员的基础要求降低了,但对系统设计的要求提高了。然而,系统设计能力是要与行业结合的,也就是说,要从一个行业应用软件设计的角度来看待程序员的工作,这不仅能够帮助工作,还为以后的“进阶”提供了保障。 把发展方向与自身性格相结合。已经工作两年以上的程序员有几种基本的职业规划:技术专家、软件架构师、实施顾问或销售。最主要的发展方向是技术专家,但技术专家再往上就比较困难,架构师总是只有那么几个。所以,程序员应该根据自己的情况,决定自己做软件架构师还是高级的顾问销售,或者走向行政管理。实施顾问和销售比较偏向市场,除了一定的技术能力外,需要掌握很多IT以外的知识。这些发展方向对于从其他专业转入IT的人员更为适合。比如烟草行业,一定要了解大的趋势、烟草行业的产业政策是什么、直接导致需求是什么等,这些信息对于职业发展很重要。IBM的一些顾问都是行业内的资深专家,他们的发展就非常具有代表性。 TIPS:程序员应具备的7个核心能力 1、 团队精神和协作能力;2、文档习惯;3、规范化,标准化的代码编写习惯;4、需求理解能力;5、复用性,模块化思维能力;6、测试习惯;7、学习和总结的能力。