在IT工程师和培训机构遍地都是的时代,似乎入行并不是那么难,但是市场的鱼龙混杂,让学习的人望而却步,担心入坑,所以很多人无从选择就选择了自学。至于培训的话,该如何选择在《 这8招,帮助10余万初学者看清IT培训机构内幕,防止入坑》文章中我们也详细的解说了,今天我们着重给自学编程的朋友一些建议。
1、选择什么语言
于想要踏入这个行业的同学而言,第一个问题便是,应该选择什么语言去学习?
是世界上最好的PHP语言还是语言之母的C?还是坚挺20年左右的Java?选PHP,上个非诚勿扰第一轮就被美女们刷了,选择C吧,万一自己太笨学不会怎么办。
对于初学者而言,在选择合适的入门语言时至少需要考虑两点:
(1)是否能适用于构建你想要的应用。如果你的目标是创建一个运行在IPhone上的APP,那么最好选择 Object C 或者 Swift,学习web开发可以选择PHP 或者JAVA。实际上我们仍然可以用汇编做出网页,但是这样做成本高昂。
(2)是否容易学习,在满足第一点的条件下请尽量选择容易学习的语言。容易不仅仅指语法简单,包括环境搭建、部署等都需要考虑在内,以及能不能容易找到好的学习资料,因此尽可能的选择主流语言。
展开全文
别忘了非常重要的一点,学习编程语言还包括平台提供的API,比如Win 32 之于C++/C#/VB,以及周边的库和框架(这些库、框架和工具能在上面说的技术图谱中找到)。IT历史上甚至出现框架和库引领编程语言走向的情况:JQuery 和Angular 改变了前端开发的思想; Rails 抢走了Ruby的名气;而SSH三大框架一度代表了Java世界。
编程语言分布占比
其实你的万般纠结都是自己给自己设定的。首先你要明白你自己的需求,根据自己的需求去学习相对应的技能。比如需要学习SSH 三大框架和Java的Java技术栈;为服务器web开发而生的PHP技术栈;在移动开发领域流行的IOS、安卓技术栈等。当然这里面有一些重合和共用的技术也需要学习,比如版本管理器Git、SVN就是每个合格的工程师需要去学习的。
如果你真的不知语言的作用,可以参考文章《Java寿命仅剩20年?入门究竟该学啥?资深大牛告诉你》,文章中有各种语言详细的应用。
2、选择何种学习方式
在这个便捷的网络时代,自学可选择的方式非常丰富。除了在网络上收集资料、阅读干货外,还可以向一些前辈咨询了自学的方法。
网络上流传的编程学习方式有:
看书
观看视频教程
阅读官网文档
读源码
看书
观看视频教程
阅读官网文档
读源码
观看视频教程,市面上杂乱的教程较多,不知该如何筛选有价值的;阅读官方文档和源码,不太适合初学者,适合入门 以后的技能提升。总的来说,只剩下看书这条路了,虽然课本的知识都比较陈旧且基础,但是也算是比较中肯的方法了,只能先入门再说,咨询了很多大牛,推荐一些学习的经典之作。
然后直接开启啃书模式,发现看完书之后对很多专业概念有所理解,然后根据某些教程对环境进行配置之后,在这个过程中,新手的你可能会碰到很多问题,环境配置失败等等,这期间你无数次想放弃,解决完这些问题之后,自己把例题中的代码抄上,然后小黑窗成功输出,成就感满满的。
可是新的问题又会出现,比如大多数的Java书籍,教完你基础语法知识和秋水仙数的求法后就结束了,并没告诉你接下来能干什么。为此感到非常困惑,失去了后续的Java学习方向。
这就是为什么很多人自学,但却坚持不下来的原因,没有方向是最令人困惑的,可能到这里你对自己产生怀疑就放弃了,觉得自己做不了,其实不是你做不来,只是这个领域太过庞大,知识量也太过庞大,而初入行业的你根本看不全,会觉得像一个无头苍蝇一样。实际上,要点在于能否找到合适的入门途径,再加上一点点坚持和思考。比较可惜的情况是一些人没能找到适合自己的学习方法,并在纠结和碰壁后失去信心,然后沮丧的认定自己并不适合干这行。学编程很多时候就是一个趟坑的过程,但不是每一个坑都有必要趟,写这篇文章的目的是希望能够帮助初学者尽量少趟一些坑。
3、如何规划学习
首先初学者要具备一些非常基础的知识,这些知识在你踏上工作岗位后能被实际的用到,比如计算机运行原理、网络的传输、常用数据结构和算法等。这部分属于计算机科学,也是应该被计算机专业本科课程涵盖的。
当然每个学校专业设计都不一样,甚至采用的教材名字也不一样,仅供参考。
大学计算机科学课程往往包括:《高等数学》、《离线数学》、《电子电路》、《数据结构》、《程序设计》、《计算机组成原理》、《编译原理》、《计算机网络》、《软件工程》、《数据库原理》等。有些学校会有一些额外的课程,例如《通信原理》、《汇编语言》、《线性代数》、《C语言》、《Java 语言》等。
尽管IT行业知识更迭非常快,但是基础知识并不容易过时,因此有大量的资料可以选择。我见过很多工作之后的朋友,无论是学习什么语言的,大多在工作一年多两年的时候都会忧桑自己大学不好好学习,正如那句话忘记在哪里看到的话所说,“你所学过的知识,读过的书,都沉淀在你的生命力,在未来的某一天就会用上”。
学习资料可以选择从计算机经典丛书系列开始,比如佛罗赞和莫沙拉夫的《计算机科学导论》,甚至可以阅读一些计算机科普类读物例如《穿越计算机的迷雾》。另一种直观的方式是观看大学精品课和去跟慕课课程。
除此之外,还需要了解实际应用于设计软件或者开发网站中的实践类知识,包括某个特定语言以及周边的库、框架和工具等。 我们可以把特定需求中用到的语言、库和框架以及其他的工具称为技术栈,在技术选型上通常也是被这样考虑的,HR常常会根据技术栈来寻找需要的工程师。
虽然已经听到不下5个人声称是靠阅读官方文档或者看源码学会编程的,而且认为观看视频教程见效太慢。但这个思想对初学者很危险,不得不承认阅读文档和源码能更准确找到自己想要的信息,这对深入技术原理非常有用,但视频能比文字传达出更丰富的内容,有更直观的演示和细致的讲解,我想没有比这个更适合初学者了。
换句话说,大学课程主要定位在上面说到的计算机科学基础知识,而市面上的培训机构主要是告诉你在怎么在实际工作中运用,所以大学和培训机构都有他们的价值。
最后的建议
非科班出身的工程师入门是有一定痛苦的,没有机缘遇到高人指点,如何选择合适自己的学习方式并自我管理是很重要的一方面。学会之后,可以尝试去实现自己的一些idea,当做一个小项目来开发,有了一些项目实践后去找一个公司实习会容易的多。“聪明”从来不是这个行业的门槛。
而且,大学课程主要定位在上面说到的计算机科学基础知识,而市面上的培训机构主要是告诉你在怎么在实际工作中运用,所以大学和培训机构都有他们的价值。存在即是合理,这么多种语言的存在也是合理的,都有各自的价值。
在这个行业有大量优秀的工程师,从他们身上我能看到聪明不是学习编程成功的关键,坚持和勤于思考才是。