我在Groupon的其中一项工作就是帮助公司招聘一些优秀的开发人员,因此我也可以算是Groupon开发团队的代言人,主要任务是发布一些招聘信息、解答疑问等。在上周,我对两个来咨询夏季实习工作的大学生进行了回复。
我认真回顾了在邮件中回复的内容,并总结了8点我认为有价值的建议,送给梦想成为程序员的大学生们:
1、如果你在大二的时候就开始接触外面的公司,那么你这种做法是值得表扬的。很多大学生都要等到毕业前两个月(甚至更晚)才去考虑找工作的问题。即便你不能获得实习的机会,那也要经常去面试接触一些企业,争取给别人留下好印象。
2、如果你对一种成熟的技术感兴趣,你可以先从书本上去了解相关的基础知识。要注意理论知识和实践练习相结合,书本上的知识都是通过精心编辑的,会教给你一整套系统的学习要点。但是也不能只看书,要动手做里面的练习。比如你要学Rails,可以阅读《Agile Web Development with Rails》,它会教你如何在一周内开发出一个完整的电子商务网站。有时候实践往往先于理解(或者更确切的说,不实践就无法理解)
3、关于这一点我想说,请不要坐等课堂上来教你新的编程语言或者前沿技术,学校里开设的计算机课程的目标是让你学会编程的理论基础以及一些规则和特殊的课题。但是像很多技术(像代码管理、服务器管理,nginx配置等)和编程语言(学校课程只会教C和JAVA)都不会覆盖在学校的课程里。但是在公司里,你往往会根据自己的职业规划和业务需求来针对性的学习新技术。所以,如果你以后想在事业上有所收获,那现在尽量去学一些课程以为的新知识。
4、不要只关注一些特殊的编程语言和框架,要让自己的技术技能多样化,像《Structure and Interpretation of Computer Programs》(免费在线阅读 http://mitpress.mit.edu/sicp/full-text/book/book.html)、《Clean Code》和《The Pragmatic Programmer》这些书籍都比较好。
5、如果你对上面一条只是一眼掠过,最好还是再读一下!读读SICP,看看视频讲解,这些训练会让你成为一名出色的程序员。
6、至少要学一门冷僻的编程语言,它会让你学到很多从像Java这样主流的语言中学不到的东西。我自己比较偏向于Lisp语言,《Land of Lisp》这本书非常棒,为你提供一种有趣的方式来学习Lisp。
7、找一个项目做做,你并不需要做一些很有意义或者很重要的项目,只要能够实践就可以了。写一个可以搜索离你最近的星巴克的小软件,给你的学习小组开发一个统一管理网站系统,开发一个能完成拼图任务的自动机器人软件。仅仅是为了实践学习,并且将项目发布到网上,将源代码放到Github上,也可以经常写一些自己的学习心得,放到博客上。这样你做的项目就会公诸于众,好处就是今后能让招聘单位对你有好的印象,尤其是在面试的时候。同时,这也给了你锻炼写作能力的机会,让你能够知道每一年自己的进步在哪里。
8、多接触一些和自己领域相关的开发者,感谢Google,如果你的领域中有相关的会议和活动,你可以在5秒钟搜索到它们。如果你找不到任何会议,说明它太耗时或者太难组织了。你也可以作为一名志愿者来为这些会议出把力,比如寻找会议地点等。做这些事并不很难,关键是要花时间,而且要有信心。这些事情会让你获得很好的信誉,和他人保持联系,一起工作,一起进步。
最后我想说,每年花100块钱买书看,并勤加练习,你一定会成为一个对招聘单位来说比任何人都优秀的大学生。