在 IT 工程师和培训机构多如牛毛的时代,拜师学艺并不难。但自学编程对于毫无基础的同学来说却可能是个问题,相信有过类似经历的朋友都有一把辛酸泪和一肚不吐不快的体会。实际上,IT从业者并不像传说中那样需要天才般的智商,要点在于能否找到合适的入门途径,再加上一点点坚持和思考。比较可惜的情况是一些人没能找到适合自己的学习方法,并在纠结和碰壁后失去信心,然后沮丧的认定自己并不适合干这行。学编程很多时候就是一个趟坑的过程,但不是每一个坑都有必要趟,写这篇文章的目的是希望能够帮助初学者尽量少趟一些坑。
学编程最重要的是实践,就是写代码、看别人写的代码、再写代码,你看再多的书,不写代码,你还是不会编程。但是写代码也要讲究方法循序渐进,不能刚学了几天语法,就想写个操作系统什么的,树立这种不切实际的目标只会让你的自信受到严重打击迷失自我。同时小编推荐一个学C/C++的学习群627819188无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!群内有很多干货和技术分享!
IT界简介
初学者遇到的一个典型问题是对IT界一无所知。比如大多数的C++书籍,教完你基础语法知识就结束了,并没告诉你接下来能干什么。我曾经为此感到非常困惑,关于这个话题一本书可能都不够,简单来说,从计算机科学知识和技术实践两方面来聊聊成为一名IT工程师需要具备哪些东西。
展开全文
计算机科学基础
首先初学者要具备一些非常基础的知识,这些知识在你踏上工作岗位后能被实际的用到,比如计算机运行原理、网络的传输、常用数据结构和算法等。这部分属于计算机科学,也是应该被计算机专业本科课程涵盖的。
这里我罗列了一些计算机专业的学生一般需要学习的课程,仅供参考。大学计算机科学课程大概包括:
《高等数学》、《离线数学》、《电子电路》、《数据结构》、《程序设计》、《计算机组成原理》、《编译原理》、《计算机网络》、《软件工程》、《数据库原理》等。有些学校会有一些额外的课程,例如《通信原理》、《汇编语言》、《线性代数》、《C语言》、《C++》等。
从知识到实践
需要了解实际应用于设计软件或者开发网站中的实践类知识,包括某个特定语言以及周边的库、框架和工具等。 我们可以把特定需求中用到的语言、库和框架以及其他的工具称为技术栈,在技术选型上通常也是被这样考虑的,HR常常会根据技术栈来寻找需要的工程师。比如需要学习SSH 三大框架和Java的Java技术栈;为服务器web开发而生的PHP技术栈;在移动开发领域流行的IOS、安卓技术栈等。当然这里面有一些重合和共用的技术也需要学习,比如版本管理器Git、SVN就是每个合格的工程师需要去学习的。
换句话说,大学课程主要定位在上面说到的计算机科学基础知识,而市面上的培训机构主要是告诉你在怎么在实际工作中运用,所以大学和培训机构都有他们的价值。
学习方式
这是最笨办法,看点基础的知识语法入门,然后上网搜一下别人做的相关例子,或者教学视频什么的都可以,有源码简单点的。看别人是怎么实现的,把别人的实现过程自己在电脑上实现一遍。调通OK了,改一下其中的某个模块实现一些新的功能,就这样一步一步的往前走。多写代码多积累,有一定的基础了再回去看书,和别人交流,参与到一些学校组织或者社会上的开源非开源项目中。在这个过程中不断动手、总结、积累、看书,螺旋式上升,即使你的天赋不如别人,相信你的编程能力最后一定不会比别人差。
语言选择
在介绍完计算机领域的大介绍之后,就需要选择一门合适的编程语言,一个较为形象的例子是把编程语言比喻成工具,因为我们深知编程语言对于工程师而言是实实在在的工具,我们不是为了学它而学,学编程不仅仅是学语言特性。
当然语言之争从来没有停止过,如果把编程语言比喻江湖武器的话十分有趣。
本图取自网络
IT行业的最终目的是交付可用的软件,编程语言也是适应市场的。这对于初学者或许有些残酷,在工作中我们发现最好的语言是用来处理工作任务或者构建合适的应用,并不是出于爱好或者某种Geek精神
先强调以下几点
1. 语言只是工具,假以时日,你都会熟练掌握一门/多门语言。
2. 编程语言用以表达你对计算机的理解,表达你的想法,所以解决问题的思路及方法更为重要。
3. 进入计算机的大门,你会发现天地很广。现在多多了解,拓展视野,也很重要。
4. 推荐使用Linux,可以从Ubuntu开始。一定要熬过一开始的痛苦时期。
5. 千里之行,始于足下。1w小时定律等。
最后我为初学者整理了一个流行编程语言和用途的表:
另外还需要注意的是开发工具
端正好心态,挑选合适的资料
对初学者而言,我仍然推荐好的视频教程,虽然我已经听到不下5个人声称是靠阅读官方文档或者看源码学会编程的,而且认为观看视频教程见效太慢。但这个思想对初学者很危险,不得不承认阅读文档和源码能更准确找到自己想要的信息,这对深入技术原理非常有用,但视频能比文字传达出更丰富的内容,有更直观的演示和细致的讲解,我想没有比这个更适合初学者了。
自学无疑是寂寞的。编程学习耗时较长,你要学会在学习中找到乐趣。实现一小段程序并运行,足以让人感到成就感和满足,借鉴这个简单的心理学技巧,定期给自己设定一些有实际意义但是不太难的目标和任务。太难会让人失去耐心,太简单又很无聊,最好设定一个跳起来刚好摸得着的任务。