来源: 微信公众年夜众号——《商学院毕业的程序员》
我是霖哥,一个因兴趣入行的商学院毕业的程序员。最近有不少人,来问我,想学编程,但是又不知怎么开始。以是,我想把我8年前影响我生平的10天自学编程的经历,毫无保留的分享出来。
如果看到这标题,会让你以为,读完一篇文章就能快速的节制编程技能的话,这可能会让你失落望,这里乃至没有一行代码。

霖哥想分享的,是霖哥最初自学编程的经历和心法。
1.决定
(图为2008年的白色苹果条记本)
2009年初,一个湿润、肮脏、背靠竹林的大学宿舍里,个中一张书桌,放着一台与环境格调不一致的纯白色的苹果Macbook电脑。她是霖哥课余韶光最好的朋友。
霖哥读的是商学院金融专业,在度过了逍遥放肆颓废的半年大学一年级生活后,总以为要学点什么技能,赚一点钱。
以是,霖哥做了一个现在看起来对人生产生重大影响的主要决定:
用10天!
系统地学习一遍网站编程!
那一年霖哥19岁,却有着如今看起来可笑的狂妄自大,总以为在将来会跟别人活得不一样。
现在回顾起来,当初的霖哥纯粹只是一个电脑用得比别人好的学渣而已,也不知道当年进水的脑袋哪来的自傲,真是too young too naive。
大学一年级的时候,虽然个人电脑已经走入千家万户,但是创业、互联网,还没有像本日那么吵的火热朝天的,移动互联网的观点还没有形成。
打算机技能在外行人看起来更多还是技能的天下,没有谁张口闭口就跟你聊融资、产品、市场、运营。
父母帮助给霖哥买了一台苹果电脑,这在当时还算是一件难能名贵的事情。靠近五位数的价格,拿得手这么一台电脑,当时霖哥是有多冲动啊,霖哥说:我往后绝逼不再玩游戏了,我要好好学习。
一台不能玩游戏的破电脑,拿来干嘛?学习利用各种软件或者学编程呗。
就这样,萌生了系统地自学编程的想法。在商学院毕业前,也没有经由口试,霖哥却糊里糊涂的,进入了一家老牌大型上市软件公司(并且还是小时候曾经那个憧憬神往的公司),成为了一名程序员。
这统统,都起源于2009年的那系统地自学编程的10天。
2.根本
(图为小时候,用来画画的LOGO编程措辞)
在讲述那10天的自学编程经历前,得解释霖哥的电脑根本。
幼儿园的时候打仗386打算机,会用MSDOS系统玩一个叫“波斯王子”、象棋的游戏;后来开始用Windows 3.0(从Dos那里敲段命令进入Windows,那时候还没开始菜单),里面的软件少得可怜。
小学一年级的时候,刚好分配到了打算机实验班,学校会教一个叫“认知码”的输入法。输入法也没怎么学会,倒是学会了拼音快速打字的本领;
小学五年级的时候用Dreamweaver、Fireworks、Flash、Photoshop(网页制作三剑客,三个软件)做个人主页,用FTP(文件传送工具)上传到虚拟主机做成网站;
之后几年电脑游戏上瘾,玩了好多年,一贯没有在技能上穷究。直到高中后,开始折腾三个PHP开源程序,他们是Discuz、PHPWind和Wordpress,并且还运营了个PHPWind的校园社区。但是,并不睬解如何通过编程去开拓一个Web产品,只大概知道了Web产品是怎么炼成的。
以是说,在大学正式系统地自学编程之前,霖哥是有不错的电脑运用根本的。
但是,那时候,霖哥还不太系统的理解编程,只知道打算机软件程序,是由编程措辞掌握的;只知道编程措辞里,有很多if(如果)、 for(循环)等关键字,却不太懂怎么去用它们做出一个软件程序来。
3. 小目标
要决定自学编程,首先要定个小目标。
这非常主要!
很多打算机系毕业的本科大学生,你让他们去做一个大略的H5页面,他们都是做不出来的。
可能他们中的很多人的回答是,老师没有教啊。
是的,海内大学的打算机课程一样平常以C措辞或Java措辞根本入门,然后开始学习数学、数据构造、算法。确实很大一部分人,到毕业为止,都没有教怎么做一张网页。
以是有时候,程序员是一个相称专业化的职业,搞后真个不懂前端,搞前真个不懂后端,搞苹果的不会安卓,搞移动开拓的不懂电脑开拓。这是很正常的。
不论搞什么开拓,编程措辞,仅仅起到最最最底层根本的浸染。
怎么理解呢?我们可以把不同平台的软件开拓,想象身分歧交际措辞的写作:
让你做一个苹果iOS App,就像让你用英语写一篇文章:你不但要学习英语单词,还要学习英语语法、英语句式、习惯用词;
让你做一个网页,就像让你用西班牙语写一篇文章:你不但要学习西班牙语单词,还要学习西班牙语文化、西班牙语语法、西班牙语音标......
比方说,Java措辞,既可以开拓Android程序,也可以做网站后台开拓,那么,让一个做安卓开拓的Java程序员,急速去做网站后台开拓行弗成?
弗成,两者还有大量的开拓条件和工具链是不一样的。
因此,选择一个小目标,自上而下的去思考和学习,就非常主要了......而我当时的小目标,做网页——霖哥希望美化自己博客网站的界面(利用一个叫Wordpress的网站软件搭建的博客)。
这个目标,足够的小。我只须要学习HTML、CSS、PHP就足够了。
这也是为什么霖哥要系统地学习编程的主要缘故原由——达成这个小目标。
4.资料
那10天里,霖哥分别学习了什么?
霖哥学习了HTML、CSS、PHP、MySQL四种技能,笼统来说,这些都是开拓一个网站的基本技能。
走进图书馆的打算机干系书架,你会创造很多打算机干系的书本,都厚得吓人,个中相称大的篇幅,是序言、理论和案例,让初学者手足无措,无从入手。
上图,随便拍一张身边的3本书,分别是700页,500页,300页!
太厚了,谁那么多韶光看完!
对付一个什么都不懂的初学者来说,一上来就一堆理论,只会让人一脸懵逼。
以是,对付想要学习编程的初学者来说,最好的学习办法是:少看,急速动手。
我用的是什么学习资料? ?是时候祭出我的老师了——w3schools.com。
(图:w3schools.com 2017年的截图,啧,霖哥记得当年,这个页面是赤色界面的。)
很遗憾,这个国外的英文传授教化网站,现在在海内已经不能访问了。一个学习的好网站,居然被墙了,真的有点无奈。
不过,在很早之前,就有海内的人把他抄袭了一遍:W3School http://www.w3xuexiao.com,你可以利用它。
不用疑惑,当初霖哥用的,便是纯英文的老外版本。(词典软件忙个一直)
w3schools.com是一家专门Web开拓的学习网站,它的特点便是:
少废话、全干货。
(图:W3School HTML简介)
w3schools.com的教程中,险些没有什么啰嗦理论。比如上图里,大略的一句先容,HTML是用来做网站的,然后点击开始教程了,劈面而来的,便是“实例”和“试一试”功能按钮。
(图:w3学校,试一试,现场体验代码)
常见的编程措辞入门书中,开头一样平常花不少的篇幅先容如何进行环境搭建。
比如学习C措辞,光要让一个Hello World跑起来,就须要废很大的劲,安装各种开拓环境、编译器,再学习用命令行编译....
可能,几个星期过去了,终于,才把一个Hello World打印到屏幕上.....
但是利用w3schools学习编程,什么都不须要安装,只须要在“试一试”里,通过网页浏览器,就能急速体验编程学习的结果。
(图:列表的形式表述理论)
而在里面,理论的表述,一样平常都是利用列表的形式的:用尽可能简短的笔墨,来把这个问题阐明清楚。
5. 韶光分配
那10天的韶光里,我是若何把这个技能学习进行韶光分配的?
第1天:HTML(网页标记措辞);
第2 - 3天:CSS(网页样式措辞);
第4 - 7天:JavaScript(网页开拓措辞);
第8 - 10天:PHP/MySQL(数据库);
由于之前的根本,除了MySQL数据库部分,其他部分都比较顺畅的通过。CSS,看无缺像很懂,但是是极度须要闇练练习的。
在学习的过程中里,遵照3个原则:
快速阅读基本观点,不摧残浪费蹂躏韶光,进入演习
利用供应的演习代码,快速试验,不求重头开始写,只求稍作修正也能精确运行
快速通读全体教程,回去再理解一次
第一条,阅读完基本观点的时候,你可能是似懂非懂的状态;第二条,代码演习,是来验证基本观点的;第三条,当全体教程通读一遍后,你回过分来,看那些之前没理解的,可能已经明白了,编程的知识点之间,是有关联的。
实在,在自学的过程中,纵然是w3schools这样大略明了的教程,我也并没有逐条负责看,而是快速阅览。
当碰着看不懂的部分时,就动手做一次,做了还是不懂,也不要太摧残浪费蹂躏韶光,首先用最快的韶光,去把整体浏览一遍。
宏不雅观有认识和练习后,回过分来,才创造,“啊原来就这样子啊”。
有一件事,是必须刻意战胜的————
英语,不能渣!
英语,不能渣!
英语,不能渣!
, 主要的事说三遍!
有人说,学编程,不是该当理科特殊好,像数学有特殊好,才能学得好吗?
我呸!
!
!
在实际事情中,大部分情形,你打交道的,是英语!
英语!
英语!
写代码多了,你会创造,写代码,实在就像写英语作文一样。
那些说看到代码就晕的人,一样平常同样会看到英语就晕。这里说的英语,不一定是要英语成绩有多好,语法有多棒,但是,不能反感看英语,有一定的单词量。
要学习编程,英语,不能太差。否则很难在编程的天下里走远,英语好,就打通了全天下的程序员技能之门,全天下的程序员在帮你办理问题。
直到本日,事情之中90%的技能问题,霖哥险些都能通过Google一下找到答案;对付新兴技能,去英语官方网站看看官方教程,根本不须要买厚厚的书本。
因此,一定要培养英语阅读技能文档的能力。
学习编程的时候,不要去世记硬背,要培养觉得。
由于,纵然到本日为止,事情的过程中,霖哥还是会一直地通过百度和Google搜索引擎搜索“忘却掉”的语法和代码。比如,霖哥常常会做出这样的搜索关键字:
依然在用的搜索关键字: “Python for循环”、 “Java 接口”、 “JavaScript class”,一些很根本的语法
霖哥用过11种不同的编程措辞来做过项目,从来不会介意,会不记得哪个函数、哪个语法怎么写了。可能学院派看到这,会以为三不雅观尽毁,可我们生活很多事情,都是这样的。
比如说,出来事情几年的人,会把小学、初中,乃至高中的数学,给忘却了。到真的想用的时候,又实在记不起的时候,上去百科上搜一下,很快就补回来了。
编程语法也是一样,是不用去世记硬背,只要把思维养成了,须要用的时候,再通过搜索引擎办理问题就可以了。通过教诲,我们更多得到的,不是知识,而是认知。
以是有时候,挺反感一些技能口试过程中,哀求写出详细代码的题目,由于详细的代码,每过一段韶光,就会忘却得一干二净了,而编程思维,或者说编程的觉得,却是永久的烙印在脑海中。
当我须要用到的时候,我知道去哪里找到她,这就够了。
这就像,当我们家里水龙头坏了,首先想到的,是找专业的师傅,而不是急速学习修水龙头,是一个道理的。
代码是一个浩瀚的天下,去世记硬背毫无意义,更主要的是理解编程思维,而不是详细怎么写代码;写代码的练习,不单是让技能闇练,而且培养的,是对编程思维的理解。
6. 实战
10天往后,如果你已经真把HTML/CSS/JavaScript教程过了一遍,你就可以考试测验开始实战了。
当年,霖哥做了一件非常囧的实战————
那时候是班长,常常拿一些班务事情,当做是技能实战的试验田。有一次须要进行全班同学的调查问卷, 霖哥就决定自己动手,做一个网页。(当年可还没有像问卷星,这样的在线问卷调查工具)
这个网页,可以供应几个选择题,然后按确定,提交选择。
这须要用到HTML和JavaScript。我打开了代码编辑器,把HTML码上去,然后用JavaScript把每次提交的结果,保存到一个数组中。
(图:做了个很大略的选择题网页)
然后,把它挂到了单机网站做事器,然后提着条记本电脑和iPod Touch上课去。我用那个iPod Touch打开做好的HTML选择题网页。
然后,把iPod Touch在班里的同学之间,一个一个地传阅,做好选择并提交。
利用iPod Touch有一个弊端,如果某个同学多手按了一下中间的首页键,选择题的网页就不见了,他们也不知道从哪里重新打开这个网页。怎么办?
以是我用厚厚的透明胶纸,把HOME键贴住,让它不能按......
7. 一理通百理明
下一步是什么?
拿当年的例子来,在这10天后,霖哥开始学习PHP和MySQL,并在不久之后,开始帮学校做网站,赚一点钱。
当时的霖哥,目的便是通过编程,尽快拥有做项目的能力,在课余赢利。
这是一种至上而下的学习过程,更快地学习,通过动手,迅速的入门一项技能。无数打算机系的学生,在毕业的那一刻一脸懵逼的踏入职场,而霖哥大学一年级开始就开拓自己的项目了。(大四的时候还帮了几位打算机系的兄台做毕业设计。)
在这些过程里,霖哥逐渐创造了“一理通百理明”的道理。后来剩下的大学生涯里,把Java、C#、Python、Ruby等常见的编程措辞和她们的框架都自学了一遍,不同的编程措辞,他们的学问实在是很大一部分是相通而有关联的。
随着学习的深入,当你已经熟习两三种编程措辞,能开拓各种软件,这时要学习一种新措辞,学习的更多是思想,理解了思想和学习新措辞的工具链后,就可以开工了,完备是1-3天的事情。
由于无论何种编程措辞,它们基本语法都是条件、函数、循环、数据构造所组成。
与学院派那种自下而上的过程比较,这种自上而下的学习过程,能更快的完善小目标、引发兴趣和造诣感。
至于一些根本的底层知识,霖哥对正统打算机课程里的数据构造、算法、打算机底层的干系知识并不牢固,但凭借足够的猎奇心,在随后的事情韶光里,逐步自己地自学回来。
(图:乔布斯访谈)
乔布斯曾经说过,
我以为每个人都该当学习一门编程措辞。学习编程教你如何思考。
不管你出来事情后,是不因此此为职业,拥有一定的编程技能,会用编程思维来思考问题,将会受用终生。
8. 导师
总结霖哥上述自学编程的心法:
先定它一个小目标!
快速过一遍教程!
考试测验一个小实战!
实在,记住霖哥的心法,我以为根本不须要10天。
在2016年之前,霖哥一贯把自己的一个人生格言引以为豪:
“我有2个老师,1个叫谷歌,1个叫百度”。
然而,如今我不这么认为了!
!
!
当年的霖哥,没人辅导,在大学利用课余韶光,全靠自学,花了10天,系统的理解一下“网页编程”,今后才开始花费大量的韶光,一个接一个的去熟习各种开拓框架。
如今,霖哥建议是,可以缩短“快速过一遍教程”的这个过程。假如有一定的电脑根本,一天里分配比较多的韶光,5天,把根本理论和试验过一遍是没问题的。
霖哥以为,由于短缺导师,霖哥在个人技能认知发展上,也走了很多弯路,摧残浪费蹂躏了不少韶光。
互联网的发展,带来了信息的爆炸,大量的信息让我们的天下变平了,信息的不对称,正在逐步被减少。
比如说,我们购买一个商品,我们会先在网上搜索,进行比价,预防自己被坑。
但是每个不同的人,对信息的思考和处理的结果,是不一样,这造成对同样的信息,会有不同的认知,也便是认知差距。这种认知,是须要导师去辅导的。
比如说,现在的人,看一个电影,会先跑上豆瓣上看评分。明明一个不知所云、让人呼呼大睡的电影,怎么就很高分?虽然不懂,但是由于它很高分,以是依然随着,给它一个高分。
要办理这种认知差距,与其通过在信息丛林里阅读天量的信息,还不如找到一个认知导师。
要知道,霖哥全体编程生涯里,没有遇过哪怕一个导师,所有的知识,都是从网上的信息里挖来的,并且自我天生对它们的认知。
当然这也有一个好处,很多事情,霖哥会有不同的视角,去思考技能的问题,只管我并不知道这好与不好,至少现在回忆起来,霖哥的一些见地是独到和有用的。
9. 学习
关于创业,我们会见到这样的段子:
我有一个代价十亿的 idea,只要开拓这样一个 APP,半年就会有一千万人用,一年就能纳斯达克上市。项目我已经方案的非常清楚,启动资金也很充足, “万事俱备,就差一个程序员了!
”
你那么牛,花10天自学一下的韶光都不愿意,你咋不上天呢。
别忘了,无数成功的创业企业家,他们都是程序员出身,像比尔·盖茨、马化腾、李彦宏。
就算不懂代码,也最最少都懂得技能思维。像乔布斯对“面向工具”的深刻理解(霖哥认为这理解超越80%的职业程序员)、1996年马云做的中国黄页(能瞥见别人看不见的一个新兴技能的商业代价),都可以看出这些商业巨人对科技技能的深刻理解。
在霖哥看来,编程是一门艺术,而不是技能。
在学校教室里的,学到的只是技能,要把它玩成艺术,还须要有丰富的履历、强烈的好奇心和与别不同的视野。这些都是光靠网上资料学习,很难学到的。
这也是霖哥写下这篇文章的缘故原由,通过传达霖哥的自学履历和思考维度,可以让更多的人在科技大爆炸时期,提升自己的认知、技能思维。
霖哥不比别人聪明,但是霖哥也学到了,相信每个人都可以。
绝不夸年夜的说,这短暂的10天,改变了我的人生,让我走上技能之路。
霖哥自学编程的履历,想分享的真是太多太多了。下一篇文章,霖哥想详细说说,对付想自学编程初学者,究竟学哪一种编程措辞比较好。
如果你以为有用,你也想学习编程或投身科技行业,但是你不知道从哪开始,关注霖哥的《商学院毕业的程序员》。留下评论,说说你的小目标和故事,霖哥会持续分享自己的自学履历、方法和技巧,供应绵薄之助。
我是霖哥,一个商学院毕业的程序员,通过自学编程成为一家大型上市公司的资深软件工程师。
在《商学院毕业的程序员》专栏中,我想持续分享我自学编程的履历和心法,用普通的话提炼我的技能思维和对科技天下的理解,希望可以帮助到你。
如果以为有用就分享给你的朋友,转载请注明出处《商学院毕业的程序员》。
如果在理解或学习编程的过程中有迷惘、或对一些生涩的科技观点的不解,用力留言!
公众年夜众号《商学院毕业的程序员》