广州二本大二,在编程这一块怎样作出选择( 二 )


至于你能成长到什么程度,还是要看你自己的造化。

■网友
常见的数据结构 算法 搞扎实,计算机原理 操作系统比较了解。校招offer选择很多的。有兴趣可以投投我们。5-6月计划开始今年校招计划
■网友
背景:工作9年,测试,前端开发,测试方面以性能测试和测试管理为主,另外干过像是集成,BA,QA之类的活。
根据我的个人经验,成为程序员,在这一行想要走得好,最重要的是学习能力。因为软件这一行世界变得太快了,各式各样你认识或者不认识的语言到现在起码有上百种,而基于每种语言你知道或者不知道的各种框架起码也有十种,那么这上百种语言和上千种框架,你要学习的是什么呢?
答案是需要什么学什么。这些东西你不可能全都会,就算你全会了2年后毕业的时候最流行的又不知道是什么新玩意儿了,所以找工作的时候需要什么学什么就行。在我做面试官的时候,我很少期待应聘者直接拥有我们需要的一切技能,反而更看重他的学习能力,沟通能力,适应能力,这些才是一个软件从业者的关键。
然后如何锻炼你的学习能力,答案就是随便挑一种/两种语言把它学精,学透。其实现在市面上所有流行的技能,都是一层一层封装起来的。40年前的软件工作者用机械码,他们需要和01打交道。30年前有了汇编,需要和指令集打交道。20年前有了更接近自然语法的计算机语言,从此我们只需要和变量,if, for,运算符打交道。10年前有了面向对象,我们需要和对象,属性,继承之类的东西打交道。现在的各种框架大大集成了底层的代码实现,我们可以更加focus在具体的逻辑实现上面。所以现在流行的不同的语言/框架,本质上只是对20年前的第三代编程语言的各种思路不同的封装,如果你对第三代任意一款编程语言非常熟悉,那么在学习新语言/框架的时候,他们的本质都是非常相似的,只是具体的语法不同罢了。
所以具体到你的情况,我推荐你根据自己的兴趣或者需求,把C++/JAVA 二选一学到精通(同时也可以把另一门学到熟练)。注意,精通的意思是:了解所有的底层细节,有任何问题你都能独自处理(至少知道去哪里找资料),了解相关的主流框架,并能应用这些知识出色完成一些复杂度较高的需求(至少单个功能5000行代码)。因为这两门语言目前来说还是需求量最大,适用范围最广的,就算你学习能力不不够出色,学会这两门语言至少找工作没问题。两者之中JAVA相对来说入门会更简单一些,如果自认不是天才的话可以考虑从JAVA入手。
另外除了专精一门之外,其他东西也要有所了解,比如选择java,那么apache,tomcat,JDBC,MySQL都要会。这些东西不要求精通,不要求会处理问题,但是简单的从0开始搭建一个项目,到更新代码重新发布要能搞定,起码要搞明白一个完整项目里面所有的基本流程。这样你就算是一个合格的JAVA开发人员了。总结一下,是既要有一项技能的深度,又要有整个项目流程的广度。作为应届生,深度和广度一般有一项达标就不愁工作了。我个人看来,深度达标是优先要考虑的。
至于到工作面试的时候,我说了,作为面试官,尤其对应届生,不会对他的能力有太多期望,反而更看重学习能力,适应能力,交流能力。如果你已经是一个合格的JAVA开发人员,并且表现出了足够的沟通与学习能力,让我相信你一定能短时间内适应我们的工具/流程/语言,那我一定会乐于给你机会的。

■网友
焦虑的同学看过来,这里给大家一个reference啊,CMU的一门本科(一般大三大四)和研究生都可以选的课:11411/11611 Natural Language Processing,以及Coursera上Jurafski开的NLP课对比,我个人感觉,Coursera上的课,大概难度和范围是CMU的一半左右吧。就是CMU的课用了大概前半个学期讲完了Coursera上的课的全部内容,用了Jurafski写的教材。所以你们上上Coursera的课,就大概知道国外名校的cs本科生都在学什么了。这里完全没有装逼的意思,我也只是水了一个硕士而已。上过这两个课的觉得我说的不对可以在底下留言我来改。CMU的LTI我觉得还可以的,能具有一定的代表性,主要是想帮助焦虑的学生们,让他们有一个相对客观的概念。


推荐阅读