自学软件开发-web前端开发自学
编者按:本文来自微信公众号,通过自学编程成为某大型上市公司高级软件工程师; 36氪经授权发布。
我是林哥,一名程序员,因爱好毕业于商学院。 最近有很多人来问我想学编程,但是又不知如何下手。 因此,我想毫无保留地分享我8年前影响我一生的10天自学编程经历。
如果看到这个标题让你觉得看完一篇文章就能快速掌握编程技巧,那你可能要失望了,这里连一行代码都没有。
林哥想分享的是林哥最初自学编程的经历和心路历程。
1.决定
(图为2008年的白色苹果笔记本)
2009年初,在一所背靠竹林、潮湿、肮脏的大学宿舍里,其中一张桌子上放着一台纯白色的Apple Macbook电脑,与环境格调格格不入。 她是林大哥业余时间最好的朋友。
林弟兄在商学院主修金融。 过了半年无忧无虑、放纵颓废的大一生活,他总觉得自己需要学点本事,挣点钱。
于是,林弟兄做出了一个现在看来对他的人生影响重大的重要决定:
使用10天! 系统学习网站编程!
林哥那年十九岁,身上却有一股现在看来可笑的傲气,总觉得自己以后的日子要和别人不一样。
现在回想起来,当年的林大哥不过是个电脑比别人会用的渣男,被水淹没的脑袋也不知道哪来的自信。 他真的是太年轻太天真了。
大学一年级的时候,虽然个人电脑已经进入千家万户,但创业和互联网还没有今天这么喧嚣,移动互联网的概念还没有形成。
对于外行来说,计算机技术更像是一个技术世界。 没有人会和你谈论融资、产品、市场和运营。
父母资助林弟兄买了一台苹果电脑,这在当时算是稀罕物。 价格接近五位数,拿到这样的电脑,林大哥感动不已。 林大哥说:我肯定不玩游戏了,我要好好学习。
不能玩游戏的坏电脑,用来干什么? 学习使用各种软件或学习编程。
就这样,系统自学编程的想法诞生了。 商学院还没毕业,他连面试都没通过,结果林大哥一头雾水,进了一家老牌的大型上市软件公司(也是他小时候梦想的公司),当了程序员。
这一切都源于2009年系统自学编程的10天。
2. 基础知识
(图为小时候用来画的LOGO编程语言)
在说10天自学编程心得之前,不得不先说明一下林哥的计算机基础。
上幼儿园的时候接触过386电脑。 我会用MSDOS系统玩一个叫“波斯王子”的游戏和象棋。 后来开始用Windows 3.0(从Dos输入命令进入Windows,那时候菜单还没有启动),里面的软件很少。 可怜。
小学一年级的时候,正好被分到一个计算机实验班,学校会教一种叫做“认知码”的输入法。 输入法我学得不多,但学会了拼音快速打字的能力;
小学五年级的时候,用Dreamweaver、Fireworks、Flash、Photoshop(网页制作三剑客,三个软件)制作个人主页,用FTP(文件传输工具)上传到虚拟主机) 制作网站;
在接下来的几年里,我沉迷于电脑游戏。 玩了很多年,一直没钻研技术。 高中毕业后开始折腾三个PHP开源程序,分别是Discuz、PHPWind和Wordpress,还运营了一个PHPWind校园社区。 然而,我并不知道如何通过编程来开发一个网页产品,我只知道一个网页产品是如何制作出来的。
所以,在大学正式系统自学编程之前,林大哥的计算机应用基础还是不错的。
不过,那时候的林大哥,对编程还没有系统的认识。 他只知道计算机软件程序是由编程语言控制的; 我不知道如何使用它们来制作软件程序。
3.小目标
要决定自学编程,首先要设定一个小目标。
这是非常重要的!
很多计算机系毕业的本科生,你让他们做一个简单的H5页面,他们都做不来。
或许很多人的回答是老师没有教。
是的,国内大学的计算机课程一般都是从C语言或者Java语言的基础开始,然后开始学数学,数据结构,算法。 确实有很多人直到毕业才学会如何制作网页。
所以有时候,程序员是一个非常专业的职业。 做后端的不知道前端,做前端的不知道后端,做苹果的不知道安卓,做移动开发的不知道不懂计算机开发。 这是正常的。
不管是哪种开发,编程语言都只是起着最基础的作用。
你怎么理解的? 我们可以将不同平台上的软件开发视为使用不同的交流语言编写:
让你做一个Apple iOS App,就像让你用英文写文章一样:你不仅要学英文单词,还要学英文语法、英文句型、地道词汇;
让你做网页就像叫你用西班牙语写一篇文章:你不仅要学习西班牙语单词,还要学习西班牙文化、西班牙语语法、西班牙语音标……
比如Java语言不仅可以开发Android程序,还可以做网站后台开发。 那么,一个正在做Android开发的Java程序员是不是马上就可以做网站后台开发呢?
不,两者之间还有很多开发条件和工具链是不同的。
所以,选择一个小目标,自上而下的思考和学习是很重要的。。。而我当时的小目标是做一个网页——林大哥想美化他的博客网站的界面(用由名为 Wordpress 的网站软件建立的博客)。
这个目标够小了。 我只需要学习 HTML、CSS、PHP 就足够了。
这也是林哥想要系统学习编程的一个重要原因——实现这个小目标。
4.信息
那10天里,林弟兄学习了什么?
林大哥学了四门技术:HTML、CSS、PHP、MySQL。 一般来说,这些是开发网站的基本技能。
走进图书馆的计算机相关书架,你会发现很多计算机相关书籍厚重得吓人,而且相当多的都是前言、理论和案例,让初学者无所适从,无从下手。 .
上图中,随便拍一张你身边的三本书,分别是700页、500页、300页! 太厚了,谁有那么多时间看!
对于一个什么都不懂的初学者来说,一堆理论只会让人一头雾水。
所以,对于想要学习编程的初学者来说,最好的学习方法就是:少看,现在就开始。
我使用什么学习材料? ? 是时候带出我的老师了 - w3schools.com
(图:w3schools.com 2017年截图,啧啧,林哥记得当年这个页面是红色界面。)
不幸的是,这个国外的英语教学网站在中国已经无法访问了。 学习的好网站,却被墙挡住了,真是无奈。
不过很早以前,国内有人抄袭他:W3Schools,你可以用。
毫无疑问,林哥用的是纯英文的老外版。 (词典软件忙)
w3schools.com是一个专门从事网络开发的学习网站,其特点是:
废话少说,都是干货。
(图:W3School HTML 简介)
w3schools.com上的教程,几乎没有长篇大论。 比如上图,一个简单的介绍,用HTML做一个网站,然后点击开始教程,迎面而来的按钮就是“Example”和“Try it”。
(图:w3学堂,试一试,现场体验代码)
常见的编程语言入门书籍一般都会在开头花很大篇幅介绍如何搭建环境。
比如学习C语言,仅仅为了让一个Hello World运行起来,就需要浪费大量的精力,安装各种开发环境,编译器,然后学习用命令行编译……
也许,几周过去了,终于,一个Hello World打印到了屏幕上……
而使用w3schools学习编程,你不需要安装任何东西,只需要在“Try it”中使用网络浏览器,就可以立即体验到编程学习的成果。
(图:列表的形式表示论)
其中,理论表述一般采用罗列的形式:用尽可能短的文字把这个问题解释清楚。
五、时间分配
在这10天里,我是如何分配这个技能学习的时间的?
因为之前有基础,所以除了MySQL数据库部分,其他部分都通过的比较顺利。 CSS,看完了,好像很好理解,但是需要极度练习。
在学习过程中,遵循三个原则:
第一个,当你读完基本概念时,你可能会一知半解; 二是代码训练,验证基本概念; 第三个,看完整个教程再回过头来,看看之前没看懂的,可能已经明白了,编程的知识点是相关的。
其实在自学的过程中,哪怕是w3schools这样简单明了的教程,我也没有一个一个仔细看,而是快速看完。
遇到不懂的部分,就做一遍。 如果还是不明白,就不要浪费太多时间了。 第一,用最快的时间浏览全文。
在有了宏的认识和实践之后,回过头来,我意识到,“哦,原来是这样的”。
有一件事必须刻意去克服——
英语,别渣! 英语,别渣! 英语,别渣! 重要的事说三遍!
有人说学编程,理科特别好,比如数学,这样才能学好?
我打扰! ! !
在实际工作中,大多数情况下,你处理的是英文! 英语! 英语!
如果你写了很多代码,你会发现写代码其实就像写一篇英语作文。
说看到代码就晕的,一般都是看到英文就晕。 这里说的英语不一定代表你的英语成绩有多好,语法有多好,但你不应该厌恶看英语,一定要有一定的单词量。
学编程,英语也不错。 否则,很难在编程的世界里走得更远。 如果你英语好,你就会打开全世界程序员技术的大门,全世界的程序员都在帮你解决问题。
时至今日,工作中90%的技术问题,林大哥几乎可以通过谷歌找到答案; 对于新兴技术,去官方英文网站看官方教程,没必要买厚书。
因此,我们必须培养阅读英文技术文档的能力。
学习编程,不要死记硬背,要培养感官。
因为,即使是今天,在工作过程中,林大哥也会不断地通过百度、谷歌搜索引擎寻找“遗忘”的语法和代码。 比如林大哥经常做这样的搜索关键词:
仍在使用的搜索关键字:
“Python for 循环”、“Java 接口”、“JavaScript 类”,一些非常基本的语法
林大哥用过11种不同的编程语言做项目,他从不介意,记住哪个函数和语法怎么写。 可能学界看到这里会觉得三观毁了,但是我们生活中的很多事情都是这样的。
比如,工作几年的人,小学、初中、甚至高中的数学,都会忘得一干二净。 当你真的想用,但是实在想不起来的时候,你可以去百科里搜一下,很快就回来了。
编程语法也是如此。 不需要死记硬背,只需要培养自己的思维,需要用到的时候就可以借助搜索引擎来解决问题。 通过教育,我们得到的更多的不是知识,而是认知。
所以有时候,我很反感一些技术面试过程中需要写具体代码的问题,因为具体的代码过段时间就会完全忘记,但是编程思维,或者说编程的感觉,是非常吃力的。 它永久地印在脑海里。
当我需要的时候,我知道在哪里可以找到她,这就足够了。
就好比,我们家的水龙头坏了,首先想到的是找专业的师傅,而不是马上去学修水龙头,这是有道理的。
代码是一个广阔的世界,死记硬背是没有意义的。 更重要的是理解编程思维,而不是如何写代码; 写代码的实践不仅是为了让技能熟练,更是为了培养对编程思维的理解。
6.实战
10天后,如果你真的通过了HTML/CSS/JavaScript教程,就可以尝试开始实战了。
当年,林哥干了一场很囧的实战——
那时候我是班长,经常把一些班工作当做技术实战的试验田。 有一次需要对全班进行问卷调查,林弟兄决定自己动手做一个网页。 (那时候还没有问卷之星这样的在线问卷调查工具)
这个网页可以提供几道选择题自学软件开发,然后按确定提交选择。
这需要使用 HTML 和 JavaScript。 我打开代码编辑器,上传HTML代码,然后用JavaScript将每次提交的结果保存到一个数组中。
(图:做了一个很简单的多选网页)
然后,我将它连接到一个独立的网络服务器,然后带着我的笔记本电脑和 iPod Touch 去上课。 我用那个 iPod Touch 打开了完成的 HTML 多选网页。
然后,将iPod Touch在全班同学中一一传递,做出选择并提交。
使用 iPod Touch 有一个缺点。 如果学生用多只手按下中间的home键,多选网页就消失了,他们不知道从哪里重新打开网页。 该怎么办?
所以我用厚厚的透明胶带把HOME键粘住,让它按不下去了。。。
7、一理通万物
下一步是什么?
就拿当年的例子来说,过了这10天,林大哥开始学习PHP和MySQL,不久之后,他就开始帮学校建网站赚点小钱。
当时林哥的目标是尽快通过编程有能力做项目,毕业后赚钱。
这是一个自上而下的学习过程,学得更快,通过动手,可以快速上手一项技能。 无数计算机专业的学生在毕业时迷迷糊糊地踏入职场,而林师兄在大一就开始了自己的项目开发。 (大四的时候也帮计算机系的几个师兄做毕业设计。)
在这些过程中,林弟兄逐渐发现了“一个道理说得通”的道理。 后来,在剩下的大学生涯中,我自学了 Java、C#、Python、Ruby 等常见的编程语言及其框架。 不同的编程语言,它们的很大一部分知识实际上是相互联系和相关的。
随着学习的深入,当你已经熟悉两三种编程语言,可以开发各种软件的时候,这时候就需要学习一门新的语言,而且学到的更多的是思想。 理解了新语言的思路和学习了工具链后,就可以上手了,完全是1-3天的事情。
因为不管是哪种编程语言,它们的基本语法都是由条件、函数、循环、数据结构组成的。
与学院派自下而上的过程相比,这种自上而下的学习过程可以更快地提高小目标,激发兴趣和成就感。
至于一些基础的底层知识,正统计算机课程的数据结构、算法、计算机底层知识,林大哥并不靠谱,但怀着足够的好奇心,在之后的工作时间里,自己慢慢学习。
(图:乔布斯访谈)
乔布斯曾经说过:
我认为每个人都应该学习一门编程语言。 学习编程教会你如何思考。
不管你出来工作后是否以此为业,你都有一定的编程功底,可以用编程思维去思考问题,这对你终生都有用。
8.导师
总结林大哥以上自学编程的方法:
其实以林大哥的心态,我觉得根本用不了10天。
2016年之前,林弟兄一直引以为豪的人生格言之一是:
“我有两个老师,一个叫谷歌,一个叫百度”。
然而,我不这么认为了! ! !
当年,林弟兄无人辅导。 他在大学利用10天课余时间,靠自学对“网络编程”有了系统的认识。 开发框架。
今天林大哥建议可以缩短“快速过教程”的过程。 如果你有一定的计算机基础,一天多分配点时间,5天,把基础理论和实验都过一遍是没有问题的。
林哥觉得因为少了一个良师益友,林哥在个人技术知识的增长上也走了很多弯路,浪费了很多时间。
互联网的发展带来了信息的爆炸式增长。 大量的信息让我们的世界变得扁平,信息不对称正在逐渐减少。
例如,我们在购买商品时,会先在网上搜索并比较价格,以防自己被骗。
但是,不同的人对信息的思考和处理结果不同,这就导致了对同一信息的不同认知,即认知差距。 这种认知需要导师的指导。
比如现在的人,看一部电影,都会先去豆瓣看看评分。 一部明明看不懂又让人睡得安稳的电影,怎么可能得高分呢? 虽然看不懂,但是因为它评分高,所以还是关注了,给了高分。
要解决这个认知鸿沟,与其在信息丛林中翻阅大量资料,不如找一位认知导师。
要知道,林哥在整个编程生涯中,连导师都没有遇到过。 他所有的知识都是从互联网上的信息中挖掘出来的,并且是他自己生成的。
当然,这也有一个好处。 很多事情,林大哥都会有不同的角度去思考技术问题。 虽然不知道这样好不好,但至少现在回想起来,林弟兄的一些见解是独到的,有用的。
9.学习
早“练”
关于创业,我们会看到这样的笑话:
我有一个价值十亿的想法。 我只要开发出这样一款APP,半年就有1000万人使用,一年就可以在纳斯达克上市。 项目规划的很清楚,启动资金也很充足,“万事俱备,只差一个程序员!”
你那么好,你都不想花10天自学,还不如上天啊。
别忘了,无数成功的企业家都是程序员,像比尔盖茨、马化腾、李彦宏。
就算不懂代码,至少也要懂技术思维。 像乔布斯对“面向对象”的深刻理解(林哥认为这种理解超过了80%的专业程序员),还有马云1996年做的中国黄页(可以看出别人看不到的新兴技术的商业价值) see),可见这些商业巨头对技术的理解很深。
在林大哥看来,编程是一门艺术,而不是一门技术。
在学校课堂上,学到的只是技术。 要把它变成艺术,需要丰富的经验、强烈的好奇心和不同的眼光。 这些仅靠网络资料是很难学会的。
这就是林弟兄写这篇文章的原因。 通过传递林哥的自学心得和思维维度,让更多人在科技大爆发的时代提升认知和技术思维。
林哥不比别人聪明,但是林哥也学会了,相信大家都可以。
毫不夸张地说,这短短的10天改变了我的人生,让我走上了技术之路。
林哥自学编程的心得,想分享的东西太多了。 下一篇林大哥想谈谈对于想自学编程的初学者来说,哪种编程语言比较好。
如果觉得有用,你也想学编程或者投身科技行业,但不知从何下手,欢迎留言自学软件开发,说说你的小目标和小故事,林哥会继续分享自学心得、方法和技巧,提供微薄的帮助。