转行前端一年回顾+一点学习心得

阅读 422
收藏 46
2018-06-12
原文链接:github.com

全文比较长,列个大纲
一、Why choose front-end
二、2017.01-2017.05(自学)
三、2017.06.01-2018.06.01(工作一年)
1. 勤奋
2. 养生
3. 学英语
4. 输出
5. 杂学
四、next to learn
五、一点学习心得
1. 合理利用时间
2. 补基础+看文档
3. 科学上网+学好英语
4. 搜索+提问
5. 总结、反思、归纳

一、Why choose front-end

2015.07毕业后,进了一家游戏公司做运营策划,写过营销方案、做过内容编辑、知道广告投放和换量,还得兼职产品经理画原型。
每天9.30-23.00以后,周末经常加班,像无头苍蝇一样碰撞一年后,我没有任何成就感,我开始思考自己每天做的是什么,将来会做什么,做的这份工作是自己喜欢的吗?在这个领域上将来会有所成就吗?
1、重复而繁杂 => No,我喜欢专心研磨一个东西,直到做好它
2、各种会议和无数遍的方案修改 => No,我做事的时候不喜欢被打扰,但这并不妨碍我是个喜欢交流的家伙
3、表面上付出了无数心血的产品,到头来说不出它哪些地方属于你 => 很可悲,螺丝钉,物质和精神上都没有得到回报
4、个人成长,想总结自己毕业一年的提升,除了满口的流量、DAU、PV等词汇和一套又一套的运营方法论,发现竟然都是一些很虚的东西(至少在当时的我看来是的)
5、高强度而无原则、低效率的加班

基于以上等等,从2016下半年开始,我不断的审视自己,我自己是个什么样的人,我喜欢做什么,我适合做什么,我会在什么领域有所成就

1、我经常会为了研究一个东西废寝忘食,投入而专注 => 貌似适合做技术
2、我能坚持做一件事情,不会三分钟热度 => 貌似适合做技术
3、我大学很喜欢捣鼓跟电脑相关的东西,从软件PS、AI、ID到优化电脑系统到重装系统到最后自己组装电脑 => 貌似适合做IT
4、我的舍友是后端,在我捣鼓第三点的时候他已经在帮学校和外面的公司写系统了,我很崇拜他,但大三大四读了《人人都是产品经理》,崇拜归崇拜,毕竟还是经理比较有吸引力,年少无知随大流
5、我是985通信工程专业,好歹见过C语言,知道数据结构,上过计网 => 这不明摆着去做开发的意思么

综上所述,我看到面前清清楚楚的写着三个字:程序员 再加上询问了一些朋友和同学的意见,2017.01.01开始在家全日制脱产自学,从前端开始……

二、2017.01-2017.05(自学)

嗯,自学开始,怎么学呢?

我并没有一股脑就开始学

这里得感谢第一份工作对我的锻炼,我利用了产品思维来看待这件事
目标:4-6个月找到一份前端工作
核心技能:HTML、CSS、Javascript + 一个框架(Vue)+ 一个项目

确认好需求后,我利用思维导图把这三个模块进行了需求拆分和梳理,每个大需求下要学的是什么,特别是最核心的模块-JS 然后是寻找合理快速的学习方法,我浏览了很多关于如何自学前端、前端推荐书籍、前端知识体系等等方面的内容,最后总结出来我要做的事:看视频快速入门 => 看书扎实基础 => 大量敲代码实践,期间不断积累好的博客资源,吸取前人的经验,特别是github(懂的自然懂)

下面是我四个月内陆陆续续买的书,都是经过前人们推荐的一些好书
301528361305_ pic

但其实,前面的我并没有消化多少,对新手来说
《Javascript DOM编程艺术》
《Javascript面向对象编程》
这两本书我觉得是比较合适的,其他的书都有它对应的阶段,强读不来
《Javascript高级程序设计》真是一本好书,入门后就值得不断的翻看了

到现在工作一年了,我的桌面上常备《Javascript高级程序设计》+《You don’t know JS》系列,闲来无事就翻一翻,个人觉得进阶必备

大学折腾过科学上网,看得懂hello world的英文水平(大学过完六级后就扔了)……在墙外发现了一些新世界:Google、Medium、Youtube、Twitter

四个月后的我,能写静态网站、JS基础能随口胡扯一点、会Vue的基础使用(对,烂大街的仿饿了么Web App)、用github page给自己做了个在线简历

这段时间留下来的积累是30多张知识脑图+50篇博客(不是现在github上的)

花了一个月去面试,此次省略一万心酸字,最终入职一家理想的互联网公司,产品技术驱动、最新技术栈、leader和同事是985大牛、技术氛围很nice、效率至上965
回想起来当初的自己真滴是渣渣,肚子里那点东西一眼忘穿秋水,换做现在我是面试官,说不定自己都会摇摇头
面试时得到的反馈:能学到的东西叫技能,花时间就能学会,我们要的是有自学能力和技术热情的人。
很感恩现在公司的CEO和前端老大,或许因为中大华工一家亲?

三、2017.06.01-2018.06.01(工作一年)

6.1儿童节当天正式入职,对我来说,还有个特殊的意义:在前端路上,我只是个儿童,刚刚开始蹒跚学步,未来路很长……

刚开始是内部管理系统的开发,vue对新手小白真的非常友好,过度平缓
然后写了两个星期的微信小程序,妥妥的练了一把手
紧接着就上了公司的react-native大船开发App(公司核心产品),一开始真的是一无所知,幸得leader炒鸡耐心,简直手把手有木有,在react的路上越走越远……
加入RN-App项目后,我花费了大量的时间去熟悉项目
加上我很喜欢从大局看问题,想掌控一个项目,所以不断的尝试如何从零搭建项目、移动端打包测试、项目部署、App Store提审等等流程,全部自己跑了一遍,有时候不懂的就直接拉着leader教自己,在此过程顺便了解了下gulp、webpack、Xcode相关操作
从添加小功能 => 负责独立模块 => 宏观掌握App => 参与重构
很快我就对react技术栈的使用得心应手,但并不满足于此,开始研究数据流、项目性能优化、总结踩坑,开始去了解virtual Dom和diff算法,顺遍入了阅读react源码的坑(路漫漫其修远兮,吾将上下而求索),结果发现redux的源码更简单一点……
读不懂的时候又会回去不断夯实JS基础,把变量、this、执行上下文、原型、继承等刷了一遍又一遍,期间不断做点小笔记在此 GitHub博客
JS基础和框架刷累了,又跑去宠幸一下网络相关,HTTP、缓存、浏览器等张口就来,满口性能优化却又无从实践,不幸还发现了事件循环这个东西,又赶紧跑去系统撸了一遍异步

大半年后,公司前端方面的业务都已经得心应手,功能开发和维护什么的都已经不成问题,这个时候的自己其实有点小窃喜了,感觉自己在前端方面有点无所不能的感觉,貌似只要有后端的接口,什么页面都能开发 幸好本人一直保持着一颗敬畏的心和危机感,马上意识到自己处于舒适圈了,必须得想办法打破它,给自己敲一个警钟

赶紧对自己进行总结:其实自己仅仅满足于获取数据渲染页面,就已经开始自我陶醉了

在面向内部人员的管理后台上,不太考虑性能优化、兼容性(只用chrome)、美观等,那么是否应该在开发复杂应用功能、优化权限系统、提高开发效率上下功夫呢? 在面向用户的App和web页面上,性能优化、兼容性又成为了核心要素

这时候很想试一下react同构和服务器端渲染,听说能解决白屏,大大提升首屏加载速度,但迟迟未和后端同事找到机会试,这时候就对后端的知识蠢蠢欲动,想自己动手

其实前端就够自己吃一壶了,加上node带来的各种工具,还有数据结构与算法、服务端、数据库等等,有点贪心不足蛇吞象,草草刷了一遍node撸了几个express的demo妄图通吃后端,却没练过实际项目,花了两天学完了python语法,却不知所措……

越学却越发心生焦虑,学的越多,发现自己越无知

学啊学的,某天终于悟出了一点道理:百艺通不如一艺精
天天听别人全栈全栈,这学一点那沾一下,太浮躁了
还不如在前端这个领域往下深耕,扎实基础,T型纵向深入,等时机成熟了,一点点去扩展服务端的知识,横向面的宽度很重要,但急不来,只有把目前所做的东西给撸清楚了,留下自己的思考和沉淀,才能为长足发展打下厚实的基础。

再加上跟一些群里的大牛虚心请教,给自己确认了一些打基础的方向,也是接下来的长期方向

作为前端

  • 把目前业务中用的框架用明白,总结坑,写文章(react性能、RN坑)
  • 读源码,写文章
  • 算法(从位运算开始)

作为程序员

  • 学英语(每天Anki背单词、听podcast、看英文文章和文档、无字幕看美剧和电影)
  • 补基础(操作系统、编译原理)
  • 学 C++(看情况,这个有点远)

以上几点都需要沉下心来,一点一点去积累,急功近利不得。

总结起来,这一年里有几个关键词:勤奋、养生、学英语、输出、杂学

1、勤奋

这一年里,在本职工作之外,我貌似活成了一个很“正能量”的人 公司九点半上班,我八点就到公司开始看书学习(家里离公司单程地铁一个小时,没错,我每天6点多起床),下班后或者周末,不是在家里就是在公司学东西

2、养生

每天六点多早起了,那自然是得早睡,11:00-11:30睡觉,最晚不敢超过12:00,对于一个程序员来说,是否有点unbelievable
晚上下班回家后会去健身房或者家里旁边的篮球场练球
周末的话,雷打不动至少有一个下午打篮球,坚持了10年的篮球
身体是革命的本钱,尤其程序员这种物种
另外,我几乎不吃外卖。

3、学英语

不知从哪个时间段起,发现经常要读英文文档,google和stackoverflow都是英文的,很多好的文章和博客都是英文的,youtube的视频教程是英文的

决心把自己的英语捡回来,然后开始每天记单词、阅读英文文章、尝试无字幕看美剧或者电影
附送一个9Kstar的学英语博客
GitHub - byoungd/English-level-up-tips-for-Chinese: 可能是让你受益匪浅的英语进阶指南

推荐一个叫Anki的软件,对于记忆内容非常有帮助,建议入手尝试一下

后面有幸参与了一位大佬的一个面试项目,到目前为止,是我见过的最全面、最有质量的前端知识面试图谱(不单单是前端,还有很多意外之喜) 有JS基础、浏览器、网络、性能、安全、数据结构、算法、Git、职业生涯等几方面内容,同时有中英版本

我在其中做翻译,把中文翻译成英文,这个项目预计今年7月份就会开源,保守估计上千star跑不掉,甚至5K,有兴趣的同学,emm……可以watch这个博客,我会第一时间同步项目链接上来的

可以先来个管中窥豹
ad05b373-22ac-40db-8568-1deaddb6b263

4、输出

输出很好理解,就是写博客,坚持写
我充分利用了bear、MindNode、Axure、github这几个工具
把自己所学所想所思的内容都沉淀了下来,也就是现在这个博客,欢迎star

这是bear,一个markdown软件,日常记录所用
682c04af-a1ef-4dd2-8889-c62666bab0c5

这是MindNode,思维导图软件
8d276915-afb6-43f9-9fbd-c1180b75bc52

这是Axure,原型工具,我用来画流程图
0aa0c523-f167-468b-a902-fe2a32737bc2

5、杂学

对于杂学这个词,我想了很久,其实这个词不好,有点类似上面说的,啥都学一下,啥都不会

其实我真正想表达的是:我拥有对新技术的好奇心和热情,会主动关注最新技术趋势。对知识拥有饥渴感,以前端为中心发散开来的技术领域,我都会保持关注,但不仅限于前端,给自己的定位应该是解决实际问题的工程师,前端只是我目前的一个职业。

四、next to learn

对于接下来要学什么,上面笼统的写了个大方向

作为前端

  • 把目前业务中用的框架用明白,总结坑,写文章(react性能、RN坑)
  • 读源码,写文章
  • 算法(从位运算开始)

作为程序员

  • 学英语(每天Anki背单词、听podcast、看英文文章和文档、无字幕看美剧和电影)
  • 补基础(操作系统、编译原理)
  • 学 C++(看情况,这个有点远)

还是给自己一个一年内的目标吧
1、继续react源码学习(学有余力就把vue的源码也学了)
2、学Node,并用Node+react(vue)写一个完整的前后端项目
3、把《算法》第4版啃完

时隔一年,多亏自己有写东西的习惯,还能勉强写个总结
新的一年,希望自己能更上一层楼
虽然自己起步晚,但有句话:种一棵树最好的时间,一个是十年前,一个是今天,不要被这个事情影响
另外,坚持是制胜法宝

五、一点学习心得

丑话说在前头 有人会觉得,大神们才有资格写学习心得,你算个什么东西,你的资历呢,请先show出阿里腾讯的5年经验!

个人初衷,写这一part是把自己这一阶段的学习态度、方法、心得记录下来,可能哪天自己回头审视的时候,发现这个阶段其实有点学习方法是错误的,那么也能及时更正自己。重点:这是我自己的学习方法
另外一方面,目前的确还有很多小白还苦恼于如何学习,希望能有幸对这一群体有点点帮助,那我也是做了好事,算回馈社会了吧。
所以,大神们请绕道啦

一、合理利用时间

请充分利用好下班时间

1、上班时长

如果你是996,加上通勤就没有自己的时间了,完全没有下班时间给自己充电,我建议还是尽快换一家公司

大部分情况下(除了项目上线+短期内敏捷开发),这些加班都是无谓的消磨时间,试想一下,六点半,感觉下班了,点个外卖或者出去吃饭,这里起码得消耗一个小时吧,七点半到了,吃完饭休息一下,这时候大部分人的心理是想着反正还要加班,吃完饭休息一会,找个娱乐活动,看会抖音、头条、斗鱼、动漫,就半个钟……八点到了,进入工作状态,离9点就剩一个小时,即使全程投入,有效加班时间也就一个小时,反正我是不相信白天的八个小时内无法通过提高效率和专注力来弥补这一个小时。
如果你说常态要加班到十一点之后,那么复出的就是身体的代价了,还有前途。工作时间的业务驱动,每个人都会有,你想比别人更有优势,就要利用工作之外的时间。
程序员是靠技术吃饭的,如果没有工作之外的时间来增长技术,还要赔上大量时间,你很快就废掉了。

请利用好下班后的那一两个小时,日积月累,你会看到不一样的自己,一万个小时理论。

as for me,除了利用下班时间,我还有早上的一个多小时可以静静看书,不受任何人影响。还有一个隐形的优势,吃的健康睡得早,我每天都精力充沛,所以我能保证白天的工作效率。

2、上班效率

1、列好todo list,分好优先级,做完一个划掉一个,比如这样

  • App **bug修复
  • H5 页面开发
  • 管理后台添加功能

2、工作一段时间起来休息一下,这是为了确保你下一个工作时间段更有精力,番茄工作法了解一下

二、补基础+看文档

计算机、软工的科班好学生可以忽略,我是转行的,所以我需要大量补基础 不单单是JS基础,还有网络、算法、服务端等等等

如果是学习新框架或者其他工具,请第一时间看文档,有代码的地方就对着实践一遍,别人的博客最起码也都是第二手资料了
官方文档作者是最了解这个东西的人,你不问他问谁?
遇到问题,也请第一时间查看文档+github issue,再看其他

三、科学上网+学好英语

普通程序员+google = 超级程序员
国外真的有不少好的资料,Medium、Youtube、Twitter请了解一下,github上也大部分是英文的
国内大部分资料都是二手的,除了慢,还有翻译是否准确的问题

想要吸收国外的精华,学好英语相信是毋庸置疑的

还有,不会英文你可能连报错都看不懂,还有google+stackoverflow的超级组合咧

学英语其实比学程序简单多了,而且产出比非常高,你可以从装翻译插件开始 你只需要坚持背背单词+强迫看一段时间的英文文章,技术词汇就那么点,很快你就能看得懂了。

这一点上,请相信我好吗,你不会后悔的。

三、搜索+提问

个人搜索问题三大步骤,请放弃百度,拥抱google,查看顺序
1、官方文档+github iuuse
2、Stack Overflow
3、国内答案、博客、其他

搜索不出来后,可以求助于同事或者朋友,请准确描述问题 不要没搜索过就问人,反正我就会很反感这样的人咯,别人的时间也很宝贵的

四、总结、反思、归纳

这一个,更多的是一个思维习惯 也是提升自己最关键的一个步骤

具体怎么做呢? 如果初中高中有做过错题本、喜欢做笔记的同学,特别是理科生,可能会比较容易理解这一块

最笨的方法,先从记录bug、写博客开始,得先有一部分的实践与素材才能开始整理归纳
然后慢慢归纳同一类问题,同一类优化方案
至于更高层次的举一反三,就要看个人积累与沉淀了

其实这一步也不难,对吗,也就是多写写,记录记录而已

另外就是,看了别人的博客文章,也可以记录下来,作为自己的经验所用
踩在别人的肩膀上,你会看得更远
如果踩的是巨人,那就更好了

后记

感谢您耐心看到这里,希望有所收获!

如果不是很忙的话,麻烦点个star⭐【Github博客传送门】,举手之劳,却是对作者莫大的鼓励。

我在学习过程中喜欢做记录,分享的是自己在前端之路上的一些积累和思考,希望能跟大家一起交流与进步。

评论
说说你的看法