程序员要重视什么?

1.基础理论
就是大家常说的《操作系统原理》、《计算机系统结构》、《编译原理》、《数据结构和算法》、《数据库原理》、《计算机网络原理》等等,很多做应用开发的程序员认为这些几乎没用(这些对做底层系统开发的程序员来说几乎是必不可少的),讲究速成的培训班也不会开这些课程,中国正规计算机专业的学生也有很多对这些乏味的课程毫无兴趣,真正好好学习这些课程的,起码我认识的程序员中不多)。我对这个的看法是,没有这些也可以做普通的应用开发,但择业的范围受限,另外很多时候对技术的理解会有问题。呵呵,如果想当大牛的话,还是要好好钻研一番。

2.基本知识
一般来说就是熟练掌握各种开发语言的知识点、语法、类包和API。这个大家没有异议,这是一个程序员吃饭的基本家伙,没了这些就没法干活了。

3.框架
例如现在流行的Spring、Hibernate、Struts、JBPM、ExtJs等。很多用人单位会在招聘启事上说要求掌握某某框架,对很多刚入门的程序员来说,会“使用”这些框架是求职的必备工具。但也有很多牛人对这些不是很感冒,更崇尚“无招胜有招”。我自己的看法首先要知道这些框架的使用场景,以及使用它会给我们带来什么价值和风险。我经常问来面试的人,为什么要学习使用Spring,呵呵,很多人的回答是“觉得企业需要、看到很多人在学就学了、学校让学的”等等,而且这些人所谓的精通也仅仅限于跑个简单的例子,写个配置文件,了解一点粗浅的概念。这种人我称之为没有“魂”的程序员。什么时候开始有意识的认真思考分析,开始“why”了,不再人云亦云,不再盲从,就有“魂”了!

4.编码素养
我就不说需求分析和设计了,就编码来说,好的编码风格和习惯,对错误和异常的处理,记录日志的技巧和习惯,对待测试的态度和写单元测试的习惯等。对这些,很多想走捷径的人不重视甚至认为没啥用处,但我认为这是一个高水平程序员的必备素质,没有这些,充其量就是代码搬运工,想通过快速掌握一两门语言,学会“使用”几种框架就想狮子大开口,向用人单位索要高薪的人,呵呵,受打击估计是难免的。

5.综合素质
包括逻辑推理能力,语言表达能力,学习能力,沟通协调能力等。这个就被很多刚入行的或者准备入行的忽视了。我招聘过很多程序员,许多人的逻辑推理能力非常差,出个逻辑推理题,别说推出正确答案了,连个基本的推理思路都没有。还有一些,根本无法正确有效的用语言表达自己的观点。对这些人,我个人一直比较矛盾,从感情上我不想打击这些人学习编程的兴趣,但从职业的角度讲,这些人根本不适合从事编程开发这个行业。

    前面四项我觉得靠经验积累和努力学习就能提高,而综合素质中有些东西靠努力学习是很难改变的,所以往往要根据自己的综合素质和兴趣来确定未来的职业发展方向。
    现在我看到的现象,很多刚入行的程序员,只重视基本知识和框架,觉得这些是用人单位的刚性需求,其他的要求好像都可以通过种种手段蒙骗,以达到一两年内迅速提高待遇的目的。呵呵,我是想劝告一下这些人,如果招人单位能被一个一两年经验的人蒙骗,这个单位不去也罢。如果一个负责招聘的技术经理,不重视编码素养和综合素质,估计他自己的水平也高不到那里去,去这样一个团队,能有利于自己的发展吗?
    谁都想事半功倍,但事情往往是欲速则不达,做程序开发,更多时候还是需要静下心来,分析一下自己的优缺点,做一下职业发展规划(自己没能力做,可以请有经验的人指点一下),有目的、有计划的提高自己各方面的能力,水平到了的时候,钱就是自然而然的东西了。
    呵呵,用积极开心的心态看待这个世界,就会发现世界没有我们想象的那么糟糕,路自然也会越走越宽了。

你可能感兴趣的:(设计模式,spring,Hibernate,框架,招聘)