给程序员新手的一些建议

红薯 发布于 2011/07/12 08:58
阅读 2K+
收藏 17

前段时间因为实习生计划花了很多时间做了实习生招聘的工作,产生的一些想法,写在这里。

这次招聘过程中,我发现我们在校的学生有下面的这些特点:

1)NB的项目。当说到自己做过的项目时, 我发现他们做的事都是很NB。要么是研究Linux的底层内核,要么是图像识别处理,要么是推荐算法,要么做高性能计算,要么做数据挖掘,要么是移动方面 的协议,还有一些很高深的课题我听不太懂的项目。这让我想起当年我在学校里的实习,对比起我用Java Applet 和 HTML做操作系统的教学课件,或是在公司里用Delphi/PowerBuilder做的那些MIS系统。让我觉得有些汗颜。

2)OK的解决问题能力。当问到算法题时,我发现他们的问题解决能力还OK。我一般问1到2个中低难度的算法题 和1个基本的面向对象设计的题,都不难。我相信只要在学校里好好学习的人都应该答得出来。无非就是一些基本的算法和基本数据结构操作的问题,和比较基础的 面向对象设计的题,说白了就是作业题。可惜的是,只有5%不到的同学能够在不给提示的情况下答出来,70%的人可以在给一定的提示下答出来,15%左右的 同学需要提示到几乎给出答案才能答出来,还有10%的同学怎么给提示都答不出来。

3)WTF的编码能力。老实说,对于解算法题,我还是比较可以接受的,因为80%左右的同学在给予提示后都能描 述出解题的算法,于是,我让他们把这个算法用他们最熟悉的语言写出来。但结果让我出乎意料,一段在解法很清楚的情况下只需要不到30行代码的小算法题,只 有一个人能在10分钟几写完,其它的人基本所有的需要30分钟左右(甚至40分钟),有2、3个人居然写不出来。有一个比较极端的case是——有个同学 花了十分钟都写不出从一个整型数组中找到最小的正数的代码。这个事让我觉得很惊讶,难道大家在做项目的时候不编程吗?

对于这种情况,我想给大家以下后一些建议:

  • 我感到我们在校的学生正如“为什么中国的网页这么烂”中所说的——他们习惯于获取大量的知识,而从不对这些知识进行思考和总结。问题不是我们知道多少东西,问题是我们在获取这些知识的时候会不会去思考这些知识后的东西?比如:为什么会有这么多经典的数据结构,数组,链表,树,哈希表,图这些数据结构主要用来解决什么样的问题,他们的优势和劣势是什么?没有思考过,就不算真正的懂,没有思考过,你将无法应对万变的问题,没有思考过,你将成为书呆子
  • 多多实践而不是研究。编程不是在实验室做科研搞理论啊,计算机这本就是一个实践性很强的的学科啊,这不是数 学,这需要你多多的实践啊。我们不要真以为读的是——计算机科学(Computer Science )就是搞理论的了,这里面需要很多很多的Engineering的工作。(我实在是很难想像虽然有这么多人写一般难度的程序虽然会是那么痛苦的事)
  • 我在我的新浪微博(@左耳朵耗子) 里说的,我们不要以为做过项目,会写程序,我们就是程序员了。如果你只是在按部就班地写代码,你就是Coder,江湖叫“码农”,不要把自己当成“码 农”,我们一定要对自己的代码,自己的设计不停地反思和总结,并精益求精,写程序本来就是一件有价值的事,这就像写篇作文人人都会写,但并不是人人都能把 文章写好。编程和写作都是一样的,这都是在搞创作啊。想做“码农”还是想做“程序员”?自己的决定
  • 我们的教育的确很“废柴”,但这不是我们成为“废柴”的原因。如果我们的学习还停留在“别人给我什么我就学什 么”的被动学习阶段,那么你真的不懂怎么是学习。虽然,我们的学校里并没有教你什么是“Version Control”,什么是“Coding Style”,什么是“Refactory”,什么是“Code Review”,什么是“Unit Test”,也没有告诉你一些经典的设计的和架构,等等,等等,但是这是什么年代了?这个时代不是像我上学那时——学校机房里上机用的电脑连内存和硬盘都 没有,用5寸的低密软盘面对绿色显示器的286时代了。我们身边有很多很多优秀的人,网上有很多优秀的文章,书店里也有很多不错的书,而且我们的软件开发日趋成熟,如果我们还学不好的话,那么我们就是在犯罪!

最后,和大家说一下公司的实习生招聘。这个事情其实是毕业生招聘的一个组成部分,也就是说,因为我国教育的问题,再加上学生自己的问题,导致毕业生 量多质次的情况很严重,对于公司,其很难从学校招到一个比较不错的毕业生,这种情况已经不是新问题了,所以,也有很多公司都不招刚毕业的学生。因此,通过 实习机会了解并招聘毕业生成了很多公司的毕业生招聘的手段。所以,在这里想告诉在校的同学们,千万不要以为实习计划就是字面上的实习。其实,这和正式的招 聘没有什么差别,同样也要看你的能力的。

(全文完)

文章转自:酷壳 - CoolShell.cn 作者:陈皓

加载中
1
Evo
Evo
还是基础理论比较重要我觉的,编码不熟练工作后做一两个项目后就熟练了,但是理论提高就比较难,所以我觉的在学校还是多研究点理论比较好,不要花太多的时间在那些没有任何价值只是增加熟练度的实践上,作者的说法才是把你们推向码农
0
jeffsui
jeffsui

恩,这篇文章说得还是很中肯的。

0
suo-tree
suo-tree
谢谢红薯哥
0
路边
路边

大三进大四的,受教了。。。

0
c
chenjia_theone

太片面,计算机不仅可以是数学,还可以是物理,化学,甚至经济、哲学,所谓术业有专攻,怎么就不能做图像识别处理、数据挖掘这些。你公司用不上这些,不代表其他公司用不上。

0
宏哥
宏哥
还是基础的东西重要,不知道为什么招聘拿“面向对象”当这么重要的东西,还有设计模式。这些东西,在制造产品,产生软件的时候,用处不大。真正难的东西,都不在这里。
0
c
chenjia_theone

引用来自“宏哥”的答案

还是基础的东西重要,不知道为什么招聘拿“面向对象”当这么重要的东西,还有设计模式。这些东西,在制造产品,产生软件的时候,用处不大。真正难的东西,都不在这里。
就是这样的,等你做了几年应用觉得基础知识不够用想考研,离脱离码农就不远了
0
笨蛋EGG
笨蛋EGG

有一个比较极端的case是——有个同学 花了十分钟都写不出从一个整型数组中找到最小的正数的代码。

这个让我非常的汗颜,十分钟用笔和纸,我还真写不出来……因为有些单词记不住啊……

另外,我想问的是,面试是用笔和纸来写还是上机在IDE上写,如果是笔和纸,说句老实话,我还真写不出多少句代码来,我以前来这家公司面试的时候就是用笔和纸,我都是只能写个大概,写不出完整程序的,不过还好思路都是正确的,经理挑毛病的时候,他的思路反而是错的……

asdfsx
asdfsx
所以以前有篇文章建议大家多用用文本编辑器,少用用ide.......
zhao_rong
zhao_rong
不需要什么单词啊,最简单的遍历数组的方法就好了啊
0
张厚远
张厚远

引用来自“笨蛋EGG”的答案

有一个比较极端的case是——有个同学 花了十分钟都写不出从一个整型数组中找到最小的正数的代码。

这个让我非常的汗颜,十分钟用笔和纸,我还真写不出来……因为有些单词记不住啊……

另外,我想问的是,面试是用笔和纸来写还是上机在IDE上写,如果是笔和纸,说句老实话,我还真写不出多少句代码来,我以前来这家公司面试的时候就是用笔和纸,我都是只能写个大概,写不出完整程序的,不过还好思路都是正确的,经理挑毛病的时候,他的思路反而是错的……

我感觉用笔写伪代码什么的还是需要的,毕竟IDE习惯了。脱离IDE写一个简单的程序什么的还是可以,但是一旦写的比较大,那就没办法了。。。。只能是伪代码。。。
0
Vian
Vian
我们应该学会享受思考和总结的过程,说来惭愧,这也是最近半年才有的习惯,幸好我现在已经步入程序员的行列,而不是去年的那个“码农”了
返回顶部
顶部