专栏名称: java一日一条
主要是讲解编程语言java,并且每天都推送一条关于java编程语言的信息
目录
相关文章推荐
芋道源码  ·  今年的行情,还得是Java! ·  2 天前  
芋道源码  ·  知乎热议:为什么很多程序员讨厌低代码? ·  6 天前  
芋道源码  ·  又来了一款神级搜索引擎,差别真的挺大! ·  6 天前  
51好读  ›  专栏  ›  java一日一条

非计算机专业出身,能做好Java吗?

java一日一条  · 公众号  · Java  · 2017-06-15 12:01

正文

首先介绍一下我自己。

 

我是彭阳,2012年7月毕业后加入网易,目前是云计算通用Agent服务负责人。此前先后负责或者参加过开源项目pomelo,NOS移动端加速服务,消息推送平台等项目的设计及开发工作。

 

从去年开始,我不定期地会在网易云课堂做一些直播的分享课。作为一个不善言谈的程序猿,从第一次跟大家直播交流的紧张、焦虑,到如今几乎每次直播都跟大家聊得不可开交,从心底里想把自己知道的东西跟大家一起交流分享。

 

在这一年多的时间里,每次直播结束,都有一些同学私信我,咨询一些学习方面的问题。渐渐地我发现我们的学员中有很大一部分都是非计算机专业的,这其中包括在校大学生,也还有一些刚刚初入职场的社会人士。这些学员每次在交流的过程中总是非常积极,问题也都相对集中。最常出现的,是以下的几个问题:

 

非计算机专业能学好这门课程吗?

非计算机专业如何转行到程序开发?

非计算机专业怎样学习编程开发?

没有项目经验如何准备面试?


总体来看,大家对于跨专业学习IT领域的技能存在很多疑虑和疑问。这里我就我个人的理解,跟大家表达一下我个人的观点。

 

有兴趣最好,培养自己的好奇心

兴趣是最好的老师。大家都知道,坚持不懈地学习任何东西都需要兴趣去支撑;如果没有兴趣,则很难长久。

 

对于想跨专业转行的同学,可以先问问自己是不是真的对这个行业感兴趣,如果答案是肯定的,我觉得这种尝试是没有问题的(毕竟这个行业正在以前所未有的速度飞速发展,并且至少在未来二十年是值得期许的)。对于那些兴趣不是那么大,但是由于各种原因需要跨专业的朋友,我的建议是未尝不可以试试。


其实对于大多数人来说,找到真正自己感兴趣的东西去做确实很难,这种事情可遇不可求;在没有太好的目标选择的情况下,如果有决心进入这个行业,我认为也是可以的。但是我还是需要强调,在进入这个行业之后,大家需要保持一颗好奇心。因为只有这种好奇心才会驱使你坚持不断的去学习,去进步。


快速学习,多阅读,多实践

IT行业与其它行业相比,它的技术变更更加快速,可能每天都会有新的技术出现,你每天也都会接受到新的名词、新的技术、新的架构体系。身处在这个变化如此之快的行业,快速学习的能力变得非常重要。比如一个新技术出来,你的老板可能需要你用一个月的时间用这个新技术完成一个项目,一般这种情况下,你最多只有一周时间完成对这个技术基本入门,后面就是一边用一边学。

 

说到学习能力,我需要特别强调一点的是英文的阅读能力。其实作为程序猿,英语能力是不可或缺的。毕竟计算机这整套体系都是老外创造出来的,所以我们在学习新技术的时候面对的大部分都是英文文档。这个时候,就特别需要我们有一个良好的英语阅读的能力,这样我们才能更好的快速掌握相关的技术信息。

 

学习新技能的时候,除了阅读文档,另外我们需要做的就是多动手实践,多写代码。很多学员在交流的时候都会跟我反应一个问题,就是说跟着老师的视频会写代码,但是自己写就写不出来。其实写代码也是一个熟能生巧的事情,代码敲的多了自然而然的就会写了,如果写不出来说明代码还写得不够多。反复练习,积累达到一定的量就会有一些写代码的灵感,进而就会产生一种质变。总而言之就是,纸上得来终觉浅,绝知此事要躬行。

 

注重基础,抓住核心

前面提到IT领域技术更新很快,我们需要有一个快速学习的能力。对于一个初学者来说,面对纷繁复杂的各种技术,很多人都会一时手足无措,不知道从哪里下手,很多跨专业的同学都会遇到这个问题。我这边需要说的是,虽然这个领域技术繁多,新的技术也都层出不穷,但是有一句古话,万变不离其宗,这句话就是强调我们需要去抓住所谓的那个宗,也就是我们所指的技术的基础与核心。

 

作为非计算机专业的同学,我不建议大家一开始就去学习Java或者C语言,还有所谓的各种框架。很多非计算机专业的同学可能会通过自学或者社会上的一些所谓的快速培训机构学习编程,在短暂的学习后就能够自己做出一两个简单的项目,甚至能够胜任普通工作中的一般任务。但是由于没有对计算机专业知识进行系统性的学习,对计算机基础知识缺乏了解,所以在遇到一些涉及到计算机底层的一些东西的时候就会不知所措。比如计算机网络通信、数据库的设计规范、数据结构的优化、多进程多线程编程等等,这些都是非计算机专业的同学欠缺的知识。就好像盖房子,在没有打牢固地基的情况下就开始添砖加瓦,最后轰然倒塌是必然的。

 

作为跨专业的同学,建议大家先学习一些计算机相关的知识,这里推荐一些书单。如果大家能把这几本书都能够完整的自学一遍,我想也就可以算是计算机入门了。


《计算机体系机构》

了解最基础的计算机硬件知识


《计算机操作系统》

了解整个操作系统的实现和编程环境


《编译原理》《计算机网络》

了解编程语言的原理和网络原理


《数据结构与算法》

了解编程中常用的数据结构与经典算法


这里打个比喻,如果大家先将计算机专业的知识体系建立起来了,就好像先练就了一身九阳神功,后面再学任务其它武功就是易如反掌,这样才有可能做到我之前提到的快速学习。

 

勤写技术博客,与牛人多交流

写技术博客是一种可以快速提高的方法,我们可以分享自己总结的一些经验,也可以分享自己的体会。一样东西在你大脑里,并不代表你已经掌握了,如果你能说给别人听,或者用文字表达出来,那才算真正掌握了。


大家在刚刚写技术博客的时候不要担心自己分享的东西太low,只要你认为是有价值,都可以写出来,这不仅可以给别人提供知识,同时也能够整理自己的思路,有时候还可以得到网上朋友的意见和反馈,跟大家一起交流。


在IT这个领域,你会发现周围有很多技术牛人,他们都身怀绝杀武功,通常他们都很低调,低调到你都很难发现。如果你发现周围或者网上有这样的同事或者朋友,就可以多跟他做一些技术交流和讨论,在这个交流和讨论的过程中你会学习到他思考问题的思路和方法,同时也会加深对知识的理解,这样也是一种快速提高很好的方法。


主动寻找项目经验

最后当我们内功都已经练好准备要出去面试的时候,经常会被问到项目经验的问题。因为作为一个成熟的企业,它肯定希望招到的人能够快速为公司产生价值,这里不管是对于校招或者社招都是一样。但是对于大多数跨专业的同学,这就是非常大的难题。这里给大家支两招:

 

| 开源项目

最简单直接获取项目经验的方法就是参与到开源项目的开发中,我们可以先到开源中国或者github上找一些不是那么复杂的开源项目开始练手,当然如果你自己有创意,可以自己建立一个开源项目,动手实践。

 

| 无偿工作

有时候可能开源项目的需求不是那么明确,跟实际的项目还是有一定差距;那我想说的是大家可以去找一些无偿工作的机会,普通的企业通常可能并不想雇佣经验少或没有经验的人,但是非盈利的机构通常会愿意雇佣这样的人;只要有合适的项目,最后能够获得项目经验,锻炼自己成长,有没有报酬都是无所谓的。

 

世上无难事只怕有心人。我想对于非计算机专业的同学,只要能够按照一定的方法坚持学习,动手实践,时刻保持对知识的追求和渴望,有朝一日一定可以成为这个行业的佼佼者。

就像上文所说的那样,Java学习的道路上除了自学外,另一个好方法就是找牛人交流,借助他人的经历获取高效的学习方法和快速进阶的方式。


入坑Java后你心底有没有泛起过丝丝不安,不知道自己有没有选对方向?6月14日,我们邀请了最受欢迎的浙大计算机教授翁恺老师来给大家进行Java方向直播分享。纵观计算机发展史,翁老师告诉你Java是个值得期待的发展方向。



直播分享

Java开发,敢问路在何方!


直播分享人介绍


翁恺,浙江大学计算机系教授,全网最受欢迎的编程老师


直播时间:6月15日 20:00


你会听到:


a.编程语言这么多,我选啥?
b.Java语言的发展史
c.程序猿的学习规划与职业发展


参加Live的方式:


长按扫描下方二维码,加入网易Java开发工程师交流群,即可收听直播~

手机上没有安装QQ的同学

可以下载QQ或在电脑上登录,申请加群

(群号:305063304)


此外,彭阳和翁恺老师参与的网易云课堂《Java开发工程师(Web方向)微专业及《Java 应用基础》微专业正在进行年中团购活动,除了1元参团享课程底价外,购买课程还能获赠电子书~


这是一门聚焦Java开发工程师必知必会的知识技能开发的课程,结合了网易大量内部案例和实践,让你一步步建立Java的只是体系。


点击阅读原文,查看Java开发工程师进阶指南