谈谈在校程序员技能培养
趁年初跳槽人数多,公司想多捞一些员工进来,一直激励员工内部推荐,我也尝试着收集一些简历内推之,但是没什么收获。沮丧之余,越来越感觉到当前互联网行业人才的青黄不接。
一方面是社招太难,特别是对于当前火热的移动开发和Web开发,稍微有一年经验以上的熟练工都是供不应求的情况。各个企业简直就是"跪求候选人给企业一个面试他(她)的机会"。
另一方面又是大学生校招找工作难(本文说的是互联网相关专业的大学生),个人认为原因主要有两个:一个是很多大学生在校期间沉迷游戏,荒废学习,导致自己技能点不强,找工作难。另一个则是因为学习上走了一些误区,很努力但是最后才发现当前社会形势所需的不相符。在此主要谈谈后者。主要是个人一路走来的一些经验之谈,希望能帮到一些人。
【大学生不一定要好好上课】
因为是个人经验之谈,所以先交代一下本人自身情况,我本科是北邮通信工程专业,我从大二起基本上就没有去上过课。很多课程都是期末考试的时候才知道老师长什么样子。但是我也和其他认真学习的学生一样,保送了研究生。原因并不是我有多聪明,只是我个人发现,大学的考试和高中不同,大学的考试内容有限,而且历年考试内容相差不大,所以使得大学生考试想要拿高分的话,必须格外重视考试前的复习,也称抱佛脚时期,大概是考前一个月之内。与此同时,好好上课的同学也许也会发现,大学时候的老师和高中时候的老师不一样,讲课水准也差别很大,经常是你花10分钟看书就能明白的事情,却讲了两个小时都没讲明白。
就是因为我的考前一个月实习的拼命学习,预习和复习一起搞定,使得我在期末考在各个科目经常都会名列前茅,甚至考第一。这样就让我尝到了甜头,从此我想通的一个事情,既然我能只花考前一个月的时间就把所以考试搞定。那我整个学期的其他三四个月的时间(包括上课时间),就都可以用在自己感兴趣的地方上。虽然我没有好好上课,但是实际上我比谁都好好学习。在大学里面,上课和学习经常不能划等号。我就是因此比别人多出了大量的时间可以做自己感兴趣的事,可以写自己想写的代码,所以在编程等技能上面得到的实践更多,在之后的找实习和找工作中都有很大的优势。
上面说的是本科上课的事情,其实研究生也是同理,包括对待实验室里面的项目也是同理。这个可能每个上过研究生的人都懂的。比如下图:
【适度刷题,慎重选择实习】
几乎在北邮里面谈到互联网程序员校招的时候,都会提到一个词叫"刷题",因为这个词都使得校招成了一场攻略。特别是想去谷歌之类公司的人来说,亲测有效且屡试不爽。这个详情不多说,无数成功先例摆在北邮人每年的校招里面。
就拿我个人来说,其实我算是刷题比较早的(相对那些等到找工作才开始刷的人来说),虽然错过了大一开始的ACM校集训队,从大二才开始接触刷题,但是个人觉得也不算晚,当时刷题最吸引我的主要是一些很巧妙的思维题,会让我感觉算法的美妙之处,虽然他们其实在工作上很少能派得上用场。
虽然不是校ACM集训队的,也没有去参加过ACM区域赛。但是也拿过校赛的金奖,也算刷题刷出一点点手的熟练度,至少能让我在之后的找实习和找工作中,遇到算法题的时候还算能够得心应手。
但是我要说的是"适度"刷题,其实现在也经常会有招聘的人吐槽招到一些只会刷题的人,做起工程的时候总是掉链子。比如刷题刷得很顺手的人都在自己简历上写着熟练使用 C/C++ ,却在工作中使用 stl 的 vector 都不知道 vector 扩容时内存会重分配,导致的一些坑。甚至连线程安全如何加锁都不清楚,就动不动就扯什么异步编程和无锁编程。刷题这种锻炼算法基础的事要做,但是工程基础也要重视。
这些观点其实是当我在阿里实习的时候明白的,当时我记得身边有一批刚入职的正式员工,其中有个员工在工程实力上脱颖而出,简称他为A,屡次受到一个资深员工的当众夸奖。后来的发展很显然A就深受重用了。
在一次吃饭的时候,我向A讨教经验的,他才提醒我要注重工程项目的锻炼,而不是只顾着埋头刷题。借此开始下一个话题。
【选择实习时不要过分看重名企光环】
A告诉我说当时他在校的时候参加实习,第一家实习的公司是百度,实习打杂了几个月,一直在一个大的系统周围修修补补,觉得对自己能力的提升非常有限。就果断跳出来,去参加了创新工程的一家创业公司,这家创业公司就是后来的创业明星--豌豆荚。
在豌豆荚早期的时候,因为员工有限,实习生也被当成正式员工来用,当时的某个项目,就只有一个正式员工和他两个人共同负责。也是因为该项目,从零开始写,最后完整搭建起一个成型的项目。让他受到的锻炼非常大。也借此打下了C++扎实的基本功。
现在看来豌豆荚已经是明星公司,但是在当时,豌豆荚只是一家名不见经传的创业屌丝公司。他从百度出来之后,去参加一家毫无名气的公司,在别人看来是非常不理解的。因为找实习的很多人都一味的追求名气光环,恨不得把BAT三家公司都遍历实习一遍。其实如果一直都在名气实习,但是却一直都是在里面打杂。那其实得不偿失。
A给我的启发非常的大,当我从阿里跳槽出来之后,我也有选择的去面试了几家创业公司的实习,并选择了其中一家自己看中的岗位。当时对自然语言处理和搜索引擎很有兴趣。刚好该创业公司缺一个这个方向的实习生,来接任之前一个阿里高工遗留下来的代码。然后和A一样,我的因此获得在大公司得不到的严重锻炼,至今仍然庆幸有这么一段经历。大大增强了C++开发的技能点并为自己之后的技术方向打下基础。并借此开发了自己的开源项目。这个让我印象最深的是,自从自己的工程能力显著提升之后,在后来找实习和找工作都异常的顺利,甚至经常让我很享受面试。记得去小米面试的时候,我和另一个人一起参加面试,当时小米的面试环境很简陋,两个人两张桌子在同一个角落里面。从一面开始面试官看看简历,聊聊我之前做的项目,聊聊我的开源项目之后,二面和三面都一起快速面完,三面后部门Leader就带我去熟悉办公环境,并答应第二天就叫HR发offer。而当我收拾好书包要离开的时候,才看到刚才和我一起参加面试的那个同学,还在和一面面试官讨论面试算法题。让我受到了很大的鼓舞。而且我所认识的工程牛人学长们,校招的时候基本上面试都是走个过场而已。offer都是信手拈来。
因此个人建议,对于在校生来说,实习是一个最锻炼自己工程能力的机会,找实习时应该多精挑细选,不要一味的拿名气说事。适合自己的才是最好的。而且关于本科几年级应该出去实习的观点,个人建议越早越好。最好从大二就开始,最晚大三也得开始实习。byvoid 大神是从大一就开始实习,仔细看看他博客的人都知道。他拿到阿里星顶级Offer是当之无愧的。
【多关注行业动态以调整自身发展】
几乎是从事互联网行业的人都知道,北邮人找互联网的工作特别拿手。甚至被说成如蝗虫过境一般。事实却是也是如此。
而这在我看来,80%的原因是因为 北邮人论坛 的功劳。北邮人论坛上关于互联网的信息非常之多。经常会有关于行业一些趋势和职业选择的讨论。
但是在关注的同时,也需要有自己明辨是非的能力。比如当09年安卓刚火起来的时候,我记得北邮人论坛上就有关于嵌入式开发和安卓开发两者的对比。我记得论坛的一些ID很得意的鄙视安卓开发,觉得安卓开发非常Low,门槛低,连培训学校出来的人都会做。而嵌入式开发门槛高,逼格高。导致当时的学校风气就是很不屑安卓开发。但是他们是错的。
人再努力也不可能打败趋势,就像运营商注定会没落,互联网注定要往移动互联网转变一样,这些都是大势所趋。事实上也是如此,当时做嵌入式的人也大部分都转行搞安卓开发了,而当时一直搞安卓开发的人现在应该差不多都已经是独当一面的 Leader 了。这就是行业趋势,并不为个人喜好而改变。不过技术还是非技术,都应该顺势而为。
【最后】
下班回去的路上脑海里面千言万语,觉得都是肺腑之言有感而发,但是真的打开电脑开始写的时候,却发现很多东西不太容易表达清楚。毕竟我研究生也没有念完就退学参加创业公司了,直接参加的是社招也没有参加过校招。对很多事情的理解也都是比较久远了,不一定准确,毕竟行业形势每年都在变。
每个人的技术成长路线都不一样。没有绝对的褒贬,本文只是个人观点,仅供参考。
建议继续学习:
- 程序员技术练级攻略 (阅读:32085)
- 再次写给我们这些浮躁的程序员 (阅读:15722)
- 给程序员新手的一些建议 (阅读:11973)
- 给年轻程序员的建议 (阅读:9930)
- 在西方的程序员眼里,东方的程序员是什么样的? (阅读:8849)
- 做个懂产品的程序员 (阅读:8768)
- 一个大二学生有关如何成为一名软件工程师的疑问及答复 (阅读:8272)
- 每个程序员都应该有张木桌 (阅读:8085)
- 再谈“我是怎么招聘程序员的” (阅读:7426)
- 如何在面试中发现优秀程序员 (阅读:7136)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:YanyiWu 来源: YanyiWu
- 标签: 学生 程序员
- 发布时间:2016-02-07 14:33:59
- [56] Oracle MTS模式下 进程地址与会话信
- [56] IOS安全–浅谈关于IOS加固的几种方法
- [55] 如何拿下简短的域名
- [54] 图书馆的世界纪录
- [52] Go Reflect 性能
- [52] android 开发入门
- [50] 读书笔记-壹百度:百度十年千倍的29条法则
- [49] 【社会化设计】自我(self)部分――欢迎区
- [38] 程序员技术练级攻略
- [33] 视觉调整-设计师 vs. 逻辑