几乎每一个程序员都会走上那么一段自学的道路,尤其是在校生或进入工作岗位之后,技术的提升基本都靠自学,有的虽然是网上报班学习,但更多时候还是自己在学习,师傅引进门,修行靠个人。
有的人自学很快,几乎一个多月就能掌握一门技术,而有的人苦苦坚持,最后还是半途而废,很大的原因就在于在学习的时候掉进了一些误区没能走出来。
今天我们就来讲讲自学编程常见的十大误区,避开这些误区我们定能在自学之路上一往无前!
呕心沥血所写8000字文章,希望对你们有所帮助。
我们经常碰到一些爱学习的小伙伴,他们热衷于学习各种潮流技术,而且是跳着过去学的,因为基础知识往往是比较枯燥无味且成就感比较低的,于是就跳跃式性学习,什么技术火就去学习什么技术。
比如你的java se基础不牢,比如说你连最基本的oop、网络操作系统、基本的数据结构和算法,还有常用的设计模式,最基本的多线程高并发这些概念都没有搞懂,那么你就一味的去追求这些所谓的火的、时髦的技术,你可能会陷入一个迷茫。
建议:我们不反对学习新技术,但在学习新技术之前,应该先把基础知识牢牢掌握,切勿心急吃热豆腐最后烫嘴,初学编程的小伙伴儿一定要扎扎实实、老老实实地把基础知识弄懂。
编程语言本身没有好与坏之分,只有什么语言适合什么样的应用场景。
我举几个例子,比如说PHP这个语言,它比较适合做外部开发,java它适合做安卓、大数据,或者是我们的java EE,C和C++它比较适合做底层开发,比如说像游戏引擎、系统软件,你再比如说汇编语言适合做驱动开发,比如python它比较适合做人工智能,go语言它是区块链的主力开发语言,适合做也可以适合做外部后台等等。
所以说从上面我所讲的,你有没有发现就没有最好的编程语言这种说法。
那么你究竟学什么样的编程语言,主要是要依据你学习的目标和兴趣。你学完这个编程语言你想干什么,然后你再决定我学什么编程语言,用倒推法来看问题你就会发现你的出发点是否正确,同一个目标,路可以有很多条,但如果你一来就开始选定出发点(编程语言),你可以能就错过了一条更省时省力的路线。
忠告大家两点:
第一点,编程语言它从逻辑语法上其实都是非常相似的。你比如说java、C、C++或者其他编程语言,其实逻辑语法和结构其实都大同小异。你只要学会了或者精通了一门语言,你再去学别的编程语言,可以这么说,触类旁通,比较轻松,而且学习成本会大大降低,但前提是你要先学精通一门。
第二点,如果你学编程就是为了进入到IT行业或者进入到互联网,就是为了找一份工作。而你们自己目前并不知道学什么语言,如果是这种诉求的话,我建议可以考虑Python,原因特别简单,一是Python容易上手,很多人自学的时候因为入门困难就半途而废了,别想那么多,先把你自己想做的东西用编程思维呈现出来;二是Python的发展趋势很迅猛,已经连续四年在所有编程语言中增长率第一,成为最受欢迎的编程语言,未来很长,我们要有前瞻性地进行学习。
喜欢看但不喜欢动手,这几乎是绝大多数初学者的通病,我依稀记得我初学编程的时候也是这样,学着学着也学了蛮久的,可一上手代码就不知所措,感觉很难驾驭。
听懂和能使用是两码事,初学者看书或者听视频,他很容易感觉这个老师讲的我听懂了。但是一旦独立让他去做一个项目或者去完成一道题,他立马就没有思路了,马上蒙圈,结果都不明白了,我不知道大家有没有这种感受。
有的同学就说“老师我在学的时候我就不知道写什么”,那么我可以建议大家,你就把你看的书或者是教程什么的,你把看过的项目案例给我敲一遍并且理解了,然后你根据你想做什么项目,实现一个什么功能,再具体地去写相应的代码。
我举个例子,比如你想去这个健身,练一身迷人的肌肉或腹肌,我问大家一个问题,**如果你只是看教练健身的视频,你能否长出健壮的肌肉?**其实你是长不出来的,你光看怎么可能长肌肉呢?你必须要自己去天天这个举哑铃或者是运动,各种运动按照教练的要求,对不对?你的饮食上还要注意,才能长出迷人的肌肉。
其实我们学编程也是一样的道理,你光看视频是不行的,你听懂了并不代表你会用。
忠告:
编程它是一门做中学的学科,什么叫做中学?是在做的过程中学会的,而不是说我已经知道了我理解了我再去做,因为我们的计算机学科它是一门工科性质的,特别强调是动手能力。过程出错不要紧,多做几遍,多调试几遍,再不懂就去查资料或者找人问问,一点点地融会贯通。
纸上得来终觉浅,绝知此事要躬行。出现错误不可怕,出现错误就是你提高的关键点了。
这基本等于说没有将学到的知识转成自己的知识。很多自学者都出现这种情况,学编程时非常努力和勤奋,但是技术提升其实很慢。你让他说今天学了什么东西?他一脸茫然,他只知道我好像看了一些书、看一些视频。
那么为什么会出现这个情况?我给大家分析一下。因为有些小伙伴儿他在学技术的时候只是听,知识就像流水一样,从书本或者视频流出来,然后知识并没有沉淀在他的大脑,整个人就变成了一个知识的一个传输器。
因此当把这个书本一合上,就跟没有学过这个一样,毫无印象,全部忘了这个我们把它称之为无效学习。
学知识不管你是听视频还是看书,一定要明白一个道理,这些知识不是你的,是作者的,那么你应该怎么办呢?你最好是学完一个知识或者学完一个技术以后,你要用自己的语言把它总结下来,用自己的语言描述一下你是怎么理解这个技术的,这样你才能真正地把这个知识点拿下来,甚至最好能够学完一个知识体系的。
比如说把java的面向对象学完了,或者把java的多线程学完了,你最好画一个思维导图,把这些知识点精华浓缩一下,把这个知识体系建立在你的大脑里面。
自己总结和建立知识体系的方法,你学一年,甚至比别人学两年、三年效果都好。
我们在学编程的时候,的确有很多东西是需要死记硬背的,比如说语法规则和规范,比如说像java变量的命名,还有这个程序的主体结构,包括它语法的一些规范,怎么用才是一个高效的用法,而这些呢你没有办法,你只能把它背一背,因为是规则,这是规定好的。
但是涉及到功能的实现、算法、设计模式、底层机制、优化效率等等,你就不要死记硬背了,一定要去理解了。
还有一点就是不要去纠结编程的时候我记不住代码,小伙伴们只需要掌握某一个功能,用什么、用怎样一个方式或者使用代码去实现就可以了,你要知道在哪儿去找这段代码就行。
程序出错了,没有积极的去调错,而是逃避,这个现象我相信很多小伙伴,尤其是初学者都遇到过,新手写代码的时候只要看到报错信念就发慌了。
其实告诉大家,大可不必,因为程序一旦出错了,正是我们提高自己技术的时候。你想一想,对一个初学者他怎么可能写代码一行都不出错呢?这是不可能的,对吧?你比如说一些基本语法出错了,或者是字母大小写写错了,这是很容易出现的。
其实这些错误它本身并不难,你只要把每一个错误都排除了,其实这个时候你的能力就越来越强。正是因为这些错误你看得多了,你下次就不会犯,慢慢你就感觉到编程其实挺快乐的,以后你就会达到这样一个水平。累了困了不是喝红牛,而是写两段代码放松放松,达到这个水平就很好了。
借用电影《头文字D》里面的一句话“神其实也是人,只是他做了人做不到的事情,所以成为了神。”
那么什么是编程大神、调试大神?就是因为他们犯了足够多的错误,什么地方会犯错,什么错误他都见过了,别人看起来是错误的东西,在他手里就不会出现,或者出现了解决起来也是轻而易举,这就是大神了。
你如果犯了一万个错误,你也会成为编程大神。
在程序员这条路上总有那么一些人喜欢孤军奋战、闭门造车,不愿意,也不敢分享。包括有些已经学过一两年甚至更久的人都会出现这个问题。
在学习编程的道路上,你一定要给自己营造一个学习的氛围,你需要同伴或者是高手跟你一同成长。反之,如果你脱离了交流,往往会让学习的问题越积越多,最后你可能就放弃了。
因为问题太多了嘛,你又没解决,那肯定慢慢就放弃了,孤军奋战很容易让新手成为井底之蛙。在迷茫的时候,大家知道有时候一个朋友或者一个高手的一句话、一个插件、一本书或者一个提示,它就会让你有一种豁然开朗的感觉。你会说“诶原来还有这样的一种操作”,那么这就可能让你的学习效率大大提升。
忠告:
初学编程的小友千万不要孤军奋战、闭门造车,要敢于分享,敢于去总结,敢于把自己所学到的东西给别人说出来,说错了又能咋滴?人家又不会顺着网线来打你;说错了别人会不会笑我?其实你只要是第一次犯,别人不会笑话,如果你提出来,别人反而会觉得你很勤奋,反而更愿意帮助你,你下次不要犯就好了。
很多小友在网上去搜这个资料,什么技术火,我就学什么技术,不分重点,也没有目标,很容易迷失自己,什么都想学,什么都没学精通,天天疲于奔命学各种技术,最后整个知识体系没有建立起来。
比如有些小友学java EE,但javaEE的整个体系没有建立起来;比如有些小友学大数据,整个体系也没有建立出来,它只是学了其中某一小块。如果这样的话,你会发现你在真正的工作中,当别人问你精通什么的时候,你答不上来。
那自然你的薪资肯定上不去,因为你没有没有真正能够吃饭的家伙,没有真正能拿得出手的东西,没有什么东西可以去跟别人竞争,所以说西瓜、芝麻什么都捡,肯定是要吃亏的。
忠告
不管你是聪明还是迟钝,不管你是勤奋还是懒惰,每个人的时间其实都是有限的,好钢要用在刀刃上,把自己有限的时间高效地利用起来,千万不要什么都去学,没有必要。
我建议小友们专注于一门技术或者语言,比如说我们就专注于Java或者专注于Python,那都无所谓,你就专注于这一门语言,你精通这一门语言以后,你再去学别的编程语言或者别的技术,你会发现一马平川,学习成本大大降低,触类旁通,学期会会非常的快。
学习编程技术的时候应该有一个明确的方向和目标。不管你是学java、Python、PHP、.net还是区块链,你要有一个学习目标。
比如说如果是为了工作,那么我2个月内要学完什么内容,半年后学到什么水平,一年后我要开始找工作,我希望我的薪资是多少,一年到两年后我要达到什么技术水平,三年后我的薪资要达到几万…给自己制定一个清晰的规划,不要自己给自己打马虎眼,你才会看清自己的成长。如果你自己无法制定,那么可以找一些人帮你参考,这都可以。
这个误区其实我也经常遇到过,很多小友说:“龙叔,我以前是学管理的、学金融的、学建筑的、学化学的,我以后找工作是不是会吃亏呀?或者说我是不是就学不好编程了?”
我告诉大家,IT行业里面的程序员是非科班出身的人太多太多,各个行业的都有,太多都转行了,而且做得很成功,所以说这跟学专业也没有关系,为什么呢?
编程本身其实就是一个技能,跟你以前的专业有什么关系呢?没关系,你只要你的逻辑思维正常,然后你比较勤奋,那这个学编程就没问题,就是学一个技能而已,别想得太复杂。
而且我认为有些时候你跨专业进入到这个程序员这个圈,在某些时候还是有优势的。为什么这么说?
举个例子,公司给了你一个任务,让你去做一个项目是关于财务的一个项目,如果你以前是金融相关专业的,那你理解这个项目的业务逻辑和业务流程肯定要比以前没有学过金融的要快。这就是为什么像用友这样的软件公司每一年都会在什么财经大学里面招一帮学生去做程序员,为什么?做业务逻辑的。
所以我们写软件或者做项目不单是技术本身,还有业务逻辑、业务流程在里边,所以不用担心这个事儿。如果你确实还担心,那怎么办?也很简单,你大不了就把大学计算机专业的课本内容学一遍嘛,这有什么大不了的,它是ok的。
很多小伙伴没有搞清楚数学和编程之间的关系,他们往往把数学和编程化等号,他们认为我数学好,我编程就学得好,我数学不好那么我编程就学不好。
如果真的是这样子的话,那我们大学里面就不需要再分两个专业了,一个是数学专业,一个是计算机专业,对吧?数学专业和计算机专业是分开的,这说明这两个学科它肯定是不一样的。
那么为什么会造成这样一个认识?因为有些小伙伴认为我们在处理这个业务逻辑的时候,可能会去用到数学。这个是不假的,可能会用到一些关于数学的公式、数学的推断,这些可能会用到,但是对于我们绝大部分的程序员来讲,我们是站在应用层面来编程的,换言之,我们是用别人已经学好的一个算法,然后应用到我们的一个业务模块里面去解决这个问题。我们很少让一个程序员,尤其是应用层面的程序员去自己独立开发一个算法、解决一个问题。
当然话也说回来了,假如你从事的这个岗位是算法工程师或者是高级数据分析师,那么对数学会要求高一些,往往要求这个人既懂计算机又是数学专业的。但对我们绝大部分的程序员来说,数学要求其实没有那么高,所以大家不要去恐惧这个事情。
文章到这里就结束了,感谢你的阅读,只是有些话想对读者们说说。
我退休后一直在学习如何写文章,说实在的,每次在后台看到一些读者的回应都觉得很欣慰,对于自媒体我是个刚入门的人,还是个迟钝的大叔…为了感谢读者们,我想把我收藏的一些编程干货贡献给大家,回馈每一个读者,希望能帮到你们。
干货主要有:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤Python学习路线图(可以弄清楚Python的所有方向和技术)
*如果你用得到的话可以直接拿走,在我的QQ技术交流群里(纯技术交流和资源共享,广告勿入)可以自助拿走,群号是980758007。*