零基础、非科班,对于自学编程的一点想法!(转载)
最近看牛客网上面,有好多非科班,学校一般的,想学习编程的学生,我先介绍一下自己的背景,双非本科、非科班学生,去年刚刚毕业,现在在国内某大厂,做算法工程师,自己也不是啥大神,一步一步走过来的,分享一点自己当初学习编程的经历给初学者,希望能帮助到一些人。
我在大一的时候编程一点点都不会,在大二的国庆假期,才会用 C 语言写 hello world,大二上学期结束之时,也仅仅只会 C 语言,编程真正的好好用心学,是从大二下学期的三月份开始,大二下学期进入实验室,是自己编程能力真正提升的开始,大三一年基本都待在实验室,是我编程能力的提升,历经大三暑期腾讯实习,大四在百度实习期间,成功转型算法工程师,拿到了 2 家大厂算法 offer。
从我开始学习编程,中间历经新手、入门、进阶、实习、后台转算法等经历,一路打怪升级,走到了今天,现在静下心来想想,都不知道当初的自己是怎么坚持过来的。
我个人是真正的零基础,非科班,一路自学编程,走过来的,踩过很多坑,感悟比较多,今天,就想把我当初如何入门的一些心得体会分享给大家。
1、
信心 决心
我接触的第一门编程语言是 C 语言,C 语言是一门古老的语言,是一门跟底层打交道的语言,也是大学很多科班出身必学的一门课程,应该很多人都会 C,之后我用 C java go python js 都写过代码,但是至今我最喜欢的还是 C,不因为别的,就因为它是我学习的第一门编程语言,先入为主,对我的影响很大,开启了我的编程先河。
现在国内的程序员,会使用 C/C 的人到是不少,但是真正掌握的 C/C 的高手就太少了,有时间有兴趣的话,Linux C/C 我还是很推荐去学学,对于系统底层,逻辑思维的提升都很有帮助。
有兴趣的可以看看:
学习编程,需要的基础就是:数学 英语 简单的逻辑思维,数学的话,只要你达到初中的数学水平,常见的数学公式是很好理解的,英语的话,常见的单词会写 实在不会也可以百度啊,逻辑思维,也没有特别绕的,在你打算学习编程之前。你必须清楚的知道:它没那么难,要相信自己一定能学的会,学的好!
对于编程,不论科班、非科班,不论男生、女生,只要你想学,就一定能学的好,要有这个信心和决心。一旦下定了决心要走编程这条路,便风雨兼程,义无反顾,要有不撞南墙不回头的魄力!
2、
兴趣 坚持
学习任何一件事情,如果没有兴趣,强迫自己去学,学起来会极其的痛苦,也不会学的太好,也很难坚持长远的走下去,如果遇到困难,没有解决,会极其的有挫败感,很容易让你产生放弃的感觉,所以新入门学习编程的,先学语法,在实践,慢慢的要找到学习编程的兴趣。
学习编程,一开始接触,可能很难有感觉与兴趣,我当初开始学习 C 语言的时候,纯是硬着头皮上的,当自己学久了,才慢慢的喜欢上编程的,用 C 写坦克大战、贪吃蛇、五子棋这些游戏、引发了自己对技术的探索和强烈的欲望,慢慢的就深陷其中了。所以学习编程,不是因为你有多喜欢编程,有兴趣才去学的,而是因为当你学过一段时间,用技术解决问题,做出了一些东西,而引发你极大的兴趣,从而更深入的去学习,去研究,这种兴奋,这种兴趣,经历过的人都懂!
学习编程,还需要坚持,在编程的路上,遇到的各种环境安装问题,代码编译问题等等,遇到的困难比你想象的大,有些问题会折磨我1 2天甚至一周,才能解决,解决问题的方法总比困难多,你要相信,花时间总能解决,在这还必须坚持下去(这些都是以前走过的路,踩过的坑)。
python 现在比较火,也简单易学,未来在人工智能领域会起到重要的作用,其发展的趋势也很不错,能做出很多有意义的东西(爬虫、数据分析都能用于实践),C 语言刚开始学起来是有点吃力,但是一旦当你把 C 学好了,在编程的路上会越走越快,用 C 做一些智能系统,做一些简单游戏,也是很有意思的,对底层(主要是操作系统)的理解会更加深刻,综合当下的趋势来说,我建议新手入门首选编程语言:C 或者 python 都挺不错的。
3、
方法 习惯
刚开始学习编程的时候,选定一门语言,先学习这门语言的基础语法,找找编程的感觉与手感还是比较重要的,培养自己的学习方法 合理的规划时间很重要,新手建议,多看视频 多动手敲,一定要有自己学习编程的三步走战略,我的战略就是:视频 书 项目。
对于一门语言,最初的入门阶段,是从陌生到熟悉,从 0 到 1 的阶段,是最难的时期,也是花费时间比较久的阶段,我刚开始学习 C 大概花了一个学期的时间,对于一门语言,你入门用了 3 个月左右的时间,我觉得是正常的,是合理的。
我学习 C 的时候,用的编译器是 VC 6.0,是一款很老的编译器,对于一门语言的学习,首选一门适合自己的系统与工具,才能很舒心的进行编程,我现在工作基本上用的是 python、C/C ,用的都是 Vim 进行编写程序以及编译运行,用 Vim 是真的很爽,我是特别的喜欢 Linux 下面的 Vim,**建议大家不管是 C 还是 python 入门,都可以考虑 Vim(前提你首先的熟悉 Linux 系统,熟悉 Vim)。
我当初学习编程,没有用过任何的自动补全编译器以及设置,在学习的阶段,一定要照着敲,一个字母一个字母的敲,这样才能让你更加的熟悉这门语言以及培养自己编程的手感,我是建议:新手一定要一个字母一个字母的敲,不要偷懒,不要嫌浪费时间,这个阶段一定不要省;等你到了一定阶段,编程能力大幅提升之际,在使用自动补全,那会可真的就是行云流水,肆意为之!
在你学了一门编程语言的基础之后,对于数据结构 算法,操作系统 计算机网络,Linux sql,这些计算机的基础知识也得多花时间去学习,多看书,系统的学习;学习阶段,讲究的是技术的扎实与全面,需要不求甚解的精神,多去刨根问底,追宗溯源,找工作阶段,需要的是多看面经以及多刷题,一定要清楚的认识到自己目前所处的阶段,一定要在正确的时间干正确的事情(学习阶段切勿看面经学习,学习阶段切勿刷题,以免对自己束手束脚,思维局限,在学习的阶段,是自己折腾技术最佳的时候,一定要多浏览各大技术网站、多尝试,打开思维,活学活用)。
编程习惯的培养也是至关重要的,尤其是新手,对于变量的命名,要有人文化的思想,以及换行、一些中间加空格的写法必须的规范,从最开始就要严格的要求自己,一定要注重细节;编程规范,一旦养成习惯,后面再改可就难了,最好多看看官方文档以及代码示例,模仿着写。
新手学习编程,有人报班,有人自学,我在这说一下,如果你有大量时间,自学完全没问题,如果时间很紧迫,报个培训机构,快速的提升与学习也没有问题,学习最终还是要靠自己,报不报培训班取决于你有没有足够的时间自己去摸索。
4、
能力 潜力
三步走战略 五大能力提升,这块我之前写过一篇文章:
三步走战略:视频 书 项目 / 春招 实习 秋招 等,不同阶段走不同的三步走战略。
快速学习能力、信息检索能力、技术选型判断力、应用业务能力,解决问题能力 —> 五大能力。
学习阶段,一定要注重自己能力的培养,多折腾,多踩坑,多积累经验,只有日积月累的学习,长时间在技术领域的不断深耕,才会对你潜移默化,让你的能力越来越强。
每个人的潜力都是无穷的,都是巨大的,潜力需要被挖掘,需要有人逼自己一把,才能最大程度的被激发出来,这块需要自己挖掘和外界因素,公司招聘也是特别的看重个人潜力。
工程设计,编程习惯、编程素养,这些都是我们要注意的地方,从细节做起,从初学编程做起,养成这些好习惯,一定会让自己受益终生的;**以后在工作中会感谢初学编程的自己,这样做也能让我们少踩很多的坑,能最大程度的避免不必要出错的地方,是值得从现在做起,从现在改变。
学好编程,没有捷径,就是不断的敲,不断的 debug,不断的做项目实践,就是这么简单纯粹!
量变引起质变,需要我们付出更多的时间,加倍的努力,才能拿到最终自己满意的效果!
零基础、非科班,照样可以学好编程!!!