而立之年——回顾我的前端转行之路谭光志

在成为程序员之前,我干过很多工作。由于学历的问题(高中),我的工作基本上都是体力活。包括但不限于:工厂普工、销售(没有干销售的才能)、搬运工、摆地摊等,转行前最后一份工作是修电脑。这么多年,月薪没高过3300...

后来偶然一个机会我发现了知乎这个网站,在上面了解到程序员的各种优点。于是,我下定决心转行(2016年,当时28了),辞职在家自学编程。并且也得到了媳妇的支持,感谢我的媳妇。

转行选择前端也是在知乎上看网友分析的,比后端好入门。

最好在网上多查查资料,找评价高的或者去豆瓣上找评分高的书。

我先学习了HTML、CSS,做完了第一阶段任务。再看完红宝书前十三章,做完了第二阶段任务。然后把红宝石剩下的全看完,做到第三阶段的任务四十五。后面的任务对于当时的我来说实在太难了,就没往下做。在1月的时候,又学习了ajax,了解了前后端如何相互通信。

我从16年11月开始自学前端,一直到17年2月。历时3个月,平均每天学习3-4个小时。中间有好几次因为太难想过放弃,不过最后还是坚持下来了。

找工作的过程非常艰难,我在网上各大招聘平台投了很多简历,但由于没学历、没经验,所以一个回复都没有。最后还是我媳妇工作的公司在招前端,给了我一个内推的机会,才有了第一次面试。并且第一次面试也很顺利,居然过了,这是我没想到的。直到多年后我和面试官又在一个公司的时候,才知道原因。他的意思是:看在我这么努力自学编程的份上,愿意给我一个机会。

虽然人生很艰难,但很有可能,遇到一个愿意给你机会的人,就能改变你的命运。

在正式的项目中写代码和在学习时写代码是不一样的。你必须得考虑这样写安不安全,会不会引起BUG,会不会引起性能问题。在工作的第一年,写业务代码对我的提升非常大。

第一年的主要任务,就是提升前端基础能力。因此我看了很多JavaScript的书籍来提升自己的水平:

这些书都是非常经典的书籍,有几本我还看了好几篇。

另外还学习了jquery和nodejs。jquery是工作中要用,nodejs则是出于兴趣学习的,没有多深入。

到了第二年,写业务代码对于我来说,已经提升不大了,就像一个熟练工一样。而且感觉前端方面掌握的知识已经足够把工作做好了。于是我就想,为了成为一名顶尖的程序员,还需要做什么。我在网上查了很多资料,看了很多前辈的回答,最后决定自学计算机专业。

这里引用一下书里的简介,大家可以感受一下:

本书通过展现简单但功能强大的计算机系统之构建过程,为读者呈现了一幅完整、严格的计算机应用科学大图景。本书作者认为,理解计算机工作原理的最好方法就是亲自动手,从零开始构建计算机系统。

通过12个章节和项目来引领读者从头开始,本书逐步地构建一个基本的硬件平台和现代软件阶层体系。在这个过程中,读者能够获得关于硬件体系结构、操作系统、编程语言、编译器、数据结构、算法以及软件工程的详实知识。通过这种逐步构造的方法,本书揭示了计算机科学知识中的重要成分,并展示其它课程中所介绍的理论和应用技术如何融入这幅全局大图景当中去。

全书基于“先抽象再实现”的阐述模式,每一章都介绍一个关键的硬件或软件抽象,一种实现方式以及一个实际的项目。完成这些项目所必要的计算机科学知识在本书中都有涵盖,只要求读者具备程序设计经验。本书配套的支持网站提供了书中描述的用于构建所有硬件和软件系统所必需的工具和资料,以及用于12个项目的200个测试程序。

做完这些实验,让我有了一个质的提升。以前感觉计算机就是一个黑盒,但现在不一样了。我开始了解计算机内部是如何运作的。明白了自己写的代码是怎么经过编译变成指令,最后在CPU中执行的。也明白了指令、数据怎么在CPU和内存之间流转的。

为什么我不建议阅读源码?因为阅读源码效率太低,而且相对于你的付出,收益并不大。到后面Vue出了3.0版本时,我也是有选择地阅读部分源码。

由于打王者的原因,第三年没学习多少新知识。基本上只做了三件事:

数据结构和算法有什么用?学了算法后,我觉得至少会懂得去分析程序的性能问题。

今年我做了非常多的事情:

研究前端工程化的目的,就是为了提高团队的开发效率。为此我看了很多书和资料:

操作系统是管理计算机硬件与软件资源的计算机程序。通常情况下,程序是运行在操作系统上的,而不是直接和硬件交互。一个程序如果想和硬件交互就得通过操作系统。

如果你掌握了操作系统的知识,你就知道程序是怎么和硬件交互的。

例如你知道申请内存,释放内存的内部过程是怎样的;当你按下k键,你也知道k是怎么出现在屏幕上的;知道文件是怎么读出、写入的。

对于操作系统,我主要学习了以下书籍:

计算机网络的作用主要是解决计算机之间如何通信的问题。

例如A地区和B地区的的计算机怎么通信?同一局域网的两台电脑又如何通信?学习计算机网络知识就是了解它们是怎么通信的以及怎么将它们联通起来。

对于计算机网络,我主要学习了以下书籍:

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。

学习以下书籍:

软件工程是一门非常庞大的学科,我只学习了一点皮毛。主要学习的是关于代码怎么写得更好、结构组织更合理的知识,这需要一边学习一边在工作中运用。

英语对于程序员的好处非常非常多,就我知道的有:

在我转行前英语词汇量只有几百,三年多过去了,现在词汇量有6000(都是用百词斩测的)。

个人认为写作的好处有三点:

总之一句话,写作对你只有好处,没有坏处。

我觉得学习一定要有非常清晰的目标,知道你要学什么,怎么学。对于前端来说,我认为很多框架和库都是不用学的。例如前端三大框架,没有必要三个都学,把你工作中要用的那个掌握好就行。

比如你公司用的是Vue,就深入学习Vue,如果要看源码就只看重点部分的源码。例如模板编译、Diff算法、Vue原生组件实现、指令实现等等。

我觉得好的学习方法非常重要,对我比较有用的两个是:

费曼学习法在《写作》一节中已经说过了,这里着重说说第二个。

你有没有过这种感觉:觉得自己会的东西很多,但其实掌握的知识很多都停留在表面上,别人要是往深一问,就懵逼了。

后来我尝试改正这种状态,在学习新的知识点时,时常问自己三个问题:

当然,不是所有问题都能适用灵魂三问,但它适用大多数情况。

先了解一下HTTP请求是啥,查资料发现原来是向服务器请求资源用的。

查资料发现:HTTP请求需要经历DNS查找,TCP握手,SSL握手(如果有的话)等一系列过程,才能真正发出这个请求。并且现代浏览器对于TCP并发数也是有限制的,超过TCP并发数的HTTP请求只能等前面的请求完成了才能继续发送。

这是一个HTTP请求,请求的文件大小为28.4KB。

名词解释:

使用HTTP2,所有的请求都可以放在一个TCP连接上发送。HTTP2还有好多东西要学,这里不深入讲解了。

经过灵魂三问后,是不是这条优化规则的来龙去脉全都理清了,并且在你查资料动手的过程中,知识会理解得更加深刻。

下面提前回答一下可能会有的问题。

百度前端技术学院2017年及往后的任务,如果没有报名,那就只能做部分任务。2016年的任务则由于百度服务器的问题,很多题的示例图都裂了。这个其实是有解决方案的,那就是看别人的答案。把别人的源码下载下来,用浏览器打开html文件当示例图看。这两年的任务我都做了大部分,附上答案:

我从18年开始,已经报考了成人高考大专,19年报了自考本科。大专明年1月就能毕业,自考本科比较难,可能2021年或2022年才能考下来。

从转行到现在,已经过去3年多了。不得不说转行当程序员给了我人生第二次机会,我也很喜欢这个职业。不过这几年一直都是在小公司,导致自己的技术和视野得不到很大的提升。所以现在的目标除了学习计算机专业外,就是进大厂,希望有一天能实现。

虽然今年已经32了,但我对未来仍然充满希望。努力地学习,努力地提升自己,为了成为一名顶尖的程序员而努力。

THE END
1.预算不多,学生党如何挑选高性价比电脑?对于学生党而言,选购一台性价比高的电脑是一个重要的决定。无论是用于学习、娱乐还是将来的工作,一台合适的电脑都能大大提升效率和体验。然而,市面上的电脑种类繁多,品牌和型号琳琅满目,如何从中挑选出最适合自己的那一款呢?一、挑选电脑的关键要素 处理器(CPU):处理器是电脑的大脑,决定了电脑的整体性能https://baijiahao.baidu.com/s?id=1818655790854833899&wfr=spider&for=pc
2.用电脑学习的好处和坏处在这个科技发达的年代,大多数家庭都有了电脑,可电脑带来的事有好处也有坏处,下面,让我来讲解一下吧! 好处:电脑上有美团外卖、支付宝、微信、地图……它们给我们带来了很多的便利。比如说美团外卖可以在网上买吃的,而且还可以送到家,不用让人跑出去买吃的,很方便。微信可以让我们在网上聊天、发图片等。最大的https://www.meipian.cn/2r2qcn06
3.电脑的坏处和好处有哪些有什么注意事项电脑的好处有哪些呢一、电脑的好处有哪些呢 让我们的视野更开阔 用电脑上网已经成为一种获取知识的重要方式。因特网是一个信息极其丰富的百科全书式的世界,信息量大,信息交流速度快,自由度强,实现了全球信息共享。中学生可以利用网络随意获得自己需要的资料,比如用“Baidu”“Google”“Yahoo”等著名搜索引擎查找资料,不仅查阅快捷,而且也https://yangsheng.120ask.com/article/158537.html
4.初中网络安全教育主题班会(精选10篇)(2)做任何事都要有一定的度,如果对网络过于沉迷,就会影响学业,甚至玩物丧志,沉迷游戏等各种虚拟世界,无法自拔。这样的例子在我们周围并不少见。 (3)学习和网络是可以相辅相成的,关键在于自己的调节。 (4)目前最主要的“学习氛围破坏者”之一就是电脑、网络。有人因为沉迷网络而荒废了学业,有人因为身边人的沉迷https://yjbys.com/cehuashu/zhutibanhui/1343626.html
5.孩子学编程的好处和坏处有哪些好处:通过学习少儿编程,可以提高孩子的综合能力,例如编程能力、综合学科能力、逻辑思维能力、未来职场竞争力和领导力等。坏处:孩子本身自控能力差,而且长时间使用电脑有辐射,对孩子生长发育不是很好。 1孩子学编程的好处 1、锻炼孩子的逻辑思维能力 编程程序就是把问题拆分,然后一个问题一个问题的去逐一解决。在编程的http://www.chusan.com/zhongkao/257845.html
6.网络安全教育心得体会(通用20篇)虽然电脑有很多好处,但它也有很多缺点:对于我们的初中生来说,过度沉迷于网络游戏会对我们的身心健康造成很大的伤害。有时病毒进入电脑,让你措手不及,现在让你告诉你如何防止病毒对电脑本身的伤害,你提前安装了“安全防火墙”,“安全防火墙”是电脑抵御病毒入侵的保护措施,可以保证电脑的正常运行。每个人都认为网上聊天https://www.gdyjs.com/lizhi/xinde/462264.html
7.因为沉迷于电脑游戏是对学习有坏处的的翻译是:Asaddictedto需要什么资料 If my younger brother goes to Singapore to study abroad, needs how many expenses.Needs any material[translate] a打斯诺克 Hits Si Nock[translate] a因为沉迷于电脑游戏是对学习有坏处的 Because sinks confuses has the fault in the computer games to the study[translate]http://riyu.zaixian-fanyi.com/fan_yi_3602005
8.小学生学习电脑编程的好处都有哪些?计算机编程语言是人类和计算机对话的一种语言,它和我们用于沟通的汉语、英语等语言一样,有着相似的学习过程。随着大数据的不断发展,掌握一门编程语言能够明显提升自身的综合竞争力。那么小学生学习电脑编程的好处都有哪些呢?下面就由小编跟大家详细介绍下。 https://www.jikestar.com/zuixindongtai/2878.html
9.用笔记本电脑做机器学习的训练会对损害电脑吗用电脑做笔记的好处用笔记本电脑做机器学习的训练会对损害电脑吗 用电脑做笔记的好处,大家在日常的学习、工作中少不了要做笔记,把一些注意事项、重要的内容、容易忘记的事情记录下来,防止自己忘记。不过有一些网友习惯于使用纸质笔记,有的网友则更倾向于使用电子笔记,那么纸质笔记和电子https://blog.51cto.com/u_16099296/8112256
10.电脑的好处儿童学习电脑的好处 儿童学电脑 1.儿童学习电脑是顺应科学技术的发展潮流产生的电子教育类产品。相对于一般的玩具和书籍,让小朋友学习电脑,可以更有动力和兴趣。因为电脑能综合教育和娱乐,更加吸引小朋友的注意。在科技一次次更新中,儿童学习电脑配置的内容体系逐渐变得科学完整,内容上也有了更多的选择。儿童学习机的内容https://www.yuwenmi.com/zw/505327.html
11.学计算机有什么好处200字,关于电脑的作文200字(通用10篇)在日常学习、工作抑或是生活中,大家对作文都不陌生吧,根据写作命题的特点,作文可以分为命题作文和非命题作文。那要怎么写好作文呢?以下是小编整理的关于电脑的作文200字(通用10篇),欢迎大家借鉴与参考,希望对大家有所帮助。 电脑的作文200字1 神奇的电脑今天上午,爸爸带我到网上去查阅作文资料,没想到上面真多啊,https://blog.csdn.net/weixin_42380646/article/details/118061648