自学编程有几个非常大的坑,很多人因此走了不少弯路:
1、如果你不是计算机、工科专业,不是以编程为生的大学毕业生,不要去用国内的大学教材来入门,不要去学考验人性的C/C++、Java、汇编等,这些东西已经不适合你,推荐你去学网页开发(HTML、CSS、JavaScript)、去用PHP搭建网站、或者学Python(取代VBA来提升办公效率,替代Excel、PowerBI来做数据分析、可视化)、小程序等,一周可入门,好玩又好学,对工作有帮助,深入可提升工资,也不排除可转行;
大学教程讲理论比较多,所学的内容只有你在月薪2万以上才开始发挥作用。即使月薪2万以后,也不建议你使用国内的人写的计算机教程,国内越是名校,学历越高,就越会用国外写的教材。而美国学计算机理论之前在高中就有AP课程,而国内绝大多是计算机零基础。C/C++、Java不学习半年以上,你是很难开发出一个实用的东西的。用C++写贪食蛇小游戏?别搞笑了,你觉得你这游戏实用吗?用Java开发安卓?你零基础学半年,能开发一个App上线吗?用Java做网站?稍微简单的JSP已经淘汰了(当然国内有些外包公司还在用JSP)。如果你花半年时间学前端、Python、PHP,不仅可以开发出实用项目,你都可以来接外包、来找工作了,甚至可以转行了。(计算机、工科相关专业应该怎么学技术,这个我以后会详细说一下,大家就不要在评论里杠我了哈。)
2、不建议你学易语言,不推荐你学VB、VBA,因为这些没有前途,不建议你去学Julia,Dart,你没有基础就不要追逐过新的东西;
有些方向不实用,也就是实际开发已经不作为一个通用的解决方案了,比如JSP、Flash这些;
有些方向在国内用的人会越来越少,比如VB、比如 http://ASP.NET;
有些方向没有前途还会阻碍你的进步,花大量时间折腾没有意义,比如易语言;
有些方向不适合新手去学,新手学了没用,哪怕再怎么流批,比如汇编;
有些技术听起来很有前途,但是不适合新手去跟风学,比如Dart,Go,你啥基础没有你也学不通。
3、不要去买书来啃好几周,不要不动手光看视频光看书,学技术一定要先从安装开发环境开始,
编程只有动手实战起来才会变得简单。很多人一上来就问,编程难么?我零基础能学会么?这个知识是用来干啥的?你问这么多干嘛?有些人收藏了几百篇好文章,花的时间
不可谓不多,但是就是没有开始实战起来,这能学会么?有些人买了一些经典计算机教材(通常比较厚),一啃就是几个星期,甚至个把月。更可怕的是直接去啃编译原理、算法导论、计算机系统、网络编程这些书,不说你啃不啃得下来,你即使学完了你也不知道可以干嘛啊!!!
JS直接啃犀牛书,这本书可有1000页。很多人啃了半天学不下来就说编程好难。你学习方式方法有问题,编程能不难么?
PHP、Python、前端这些如果你学习两天到一周都不能上手实际开发一个东西出来(非写几行代码),你就走了很多弯路。
4、大学生千万不要用考证的方式来学编程;如果学校对二级计算机等级考试有要求,就考Office或Python吧,混过去就行了,不要去参加什么软考之类的,浪费你的时间。
很多学生视野比较狭窄,他只能接受到学校和身边的人灌输给你的知识和观念,只能了解到有限的评价体系,觉得考了这些计算机等级考试和软考才算得上是优秀,学编程也往往以这些知识为目标。这些完全可以理解,因为我大学时也考过。
事实上评价一个学生在计算机方面是否真的优秀,一个是你对技术知识的深刻理解,这一点你可以像写论文一样多写写技术文章,培养自己的研究探索精神;二是你对项目产出能力,你能够证明给自己、给他人看的,项目是非常重要的一个依据。对于一个初学者,该如何输出自己的东西这里面有非常多的学问,以后我再整理一下。
学校对于优秀学生的评价体系与企业对于优秀员工的评价体系差异是非常大的,而你个人对于学技能的追求,你自己心里也有一套标准,这三者之间有很大的不同。但是很多零基础想学技能的人却被要求按照学校的标准与方式来学,怎么可能学得好?
(当然有些技术方向的证书是可以考的,比如网络工程师CCNP、运维工程师RHCE、RHCA,PMP这些行业还是比较认可的,软考什么的就算了)
5、
学编程应该以项目开发为主,不要东学学西学学,到时候啥也没有掌握。不要看人家说Python好就去学Python,一会学C,一会学Java,招聘时就说自己掌握这些语言。要知道不没有开发出一个网站、一个网页、一个App,一个实际的东西、项目出来,你学再多,都等于半成品,都不算学会。
以项目为导向的方式来学习,即是符合程序员学技术的方式,又能让你对学技术欲罢不能。学习技术本来是一件可以让你很有成就感的事情,如果你学编程一个星期都受挫茫然没有效果,只能说明你学习方式不对。
国内编程教育思路很有问题, 编程本来就是一项技能,所谓技能就跟做菜、骑自行车一样,你学了就可以实操。但是国内编程教育却要求你成为一个有品味的厨师,给你灌输菜系的知识,告诉你色、香、味、形、器、意、养等做菜的道理,就是不让你动手做菜。很多资深厨师会告诉你这道理太重要了,厨师不懂这些算个p的厨师,但是你明明想学的是做菜,有些人就说了,你只学做菜,跟进技校有什么区别?太low了。但是你明明就没有资格以及不想成为厨师啊....
6、
很多编程零基础的人一上来就想学人工智能、大数据等这些看起来很有前途的方向,妄想通过培训半年就能找到好工作,这些都已经不切实际了。(特别刻苦肯学,有理工科背景,热爱数学、喜欢编程,能坚持学习一年以上的例外,国外这样的例子太多)。很多培训班不加限制不设前提就鼓吹这些领域的求职神话就是欺诈,严重误人子弟。这些方向甚至都不建议一般学校乃至一些985计算机专业的学生来学习。(有毅力、决心、恒心者即使是30多岁劝退的年纪零基础也可以,但是你这是在挑战人性,没有几个人可以做到)。
如果你想转型IT,成为互联网方向的职场达人,其实方向是有很多很多的,比如如果你对设计有追求,哪怕你没有绘画天赋,你仍然可以学UI、UX;如果你对互联网产品感兴趣,沟通能力比较强,产品经理就比较适合你;如果你自认为你喜欢研究数据,数据分析就有大量岗位等着你;前端、后端、移动端、测试、运维等等都有大量高薪有前途的岗位。
互联网(含EE、CS)相关岗位是非常丰富的,编程不只是会让你成为程序员,机会多的是,没有必要硬着头皮不切实际去成为算法工程师、人工智能工程师、大数据工程师这些你已经不具备进入资格的方向。
如果你想快速入门,建议找个人指导你,比你买书、自己去翻视频、自己摸索要强得多,最后这里推荐大家加下我的Java学习交流群:641121948,里面有我从去年到现在,根据市场技术栈需求录制的最新视频教程,群文件里面有我做Java这几年整理的学习手册,面试题,开发工具,PDF文档教程,需要的可以自己去下载。