一位前端 2018 绝地求生记 | 掘金年度征文

自我介绍

国际惯例先自我介绍。我叫lien,17年毕业于双非大学非科班,是一位玩了3年视频后期,在网易游戏做了1年视频后期与活动运营。

在某次机缘巧合,程序员同事给一些网站给我看的时候濒临灭绝动物我的世界预约等网站,并深深吸引,好像抓到自己从事视频后期无法得到的东西————与用户的互动。从此埋下考研想去研究图形学的苗头(哈哈然而一开始不是前端)。之后考虑很多然后辞职去考研,但是事情没那么美好,由于只有半年时间准备,考研失败了。只能匆匆忙忙学点点前端然后找工作,当时已经毕业只能社招,自己又是刚学,很多时候都没得面试机会,就算有也是被各种嘲讽

连vue都没听过你还好意思面前端。

你这种水平是不是本科时候是不是天天打游戏等等。

那时候连3K工作都找不到,身边的人也各种嫌弃,觉得我本科毕业居然连工作都找不到。真的压力真的很大,心里想如果再找不到,就只能去上海或者杭州做回视频后期,但是又想做前端,一直挣扎。最后还是有家没怎么问我前端知识,考了我一些组成原理,数据结构和一些基础题(这些都是毕业考研时候学的),然后给我7天试岗机会,从此4月份踏上前端行业。如果想了解我更多可以看我的个人小博客

为何学习不够一年时间也敢出来写心得,里面东西会有人看吗。我敢保证里面很多干货,而且经过一年的实践证明我的方法论是可行有效。这是由我过去做视频后期和活动运营策划时候和身边的优秀的人学习到,结合自己实践所形成的一套方法论。

  • 降维打击来思考问题

  • 刻意练习提高自己

  • GTD管理生活

程序员的成长道路

所谓的降维打击来思考问题是当分析一个问题,不仅要从问题出发。要从更高的维度分析。 如果要如何学习前端,那么可以先从一个程序一生的成长道路出发,再反过来回答这问题。同推荐看一下这篇文章。

原文是《一个程序员的成长之路》-张云龙,每次看都有新的感悟,我这里做一下简单的概要。张云龙将职业生涯分成三个阶段

  • 第一阶段,一技之长。就是做好专业技术。
  • 第二阶段,独立做事,当技术达到一定深度开始学会独立承当责任,需要思考如何独立做事
  • 第三阶段,拥有事业,带领团队实现。

而一技之长又可以分为

  • 行业内知识(JS,CSS,HTML浏览器等等)
  • 栈外技术(充分了解上下游)
  • 工程经验(架构设计,性能优化)
  • 带人做事(学会领带别人一起合作)
  • 业界发声

那么可以看出来专业技术是前端最重要的也是第一步需要的。 这里我就只针对一个小小部分来分析如何学好专业知识。

技能地图

在学生时期,我们需要学习什么都是由教育局,学校和老师决定的,所有人学的都一样,都有明确的目标,从来不会有我要学习什么的迷茫,而当我们出来工作后,没人会告诉你你要学习什么,所有经常陷入迷茫。特别我刚刚接触前端的时候,这种迷茫更为强烈,身边没有人带我,只能上网看别人的分享。以下都是个人经历和观点希望有用。

软件工程师应该具备的技能

在成为前端之前你必须是一位软件工程师。计算机基础知识是十分重要的,如果你是科班出身那基本没问题,但是大多数人都是从别的专业和行业转过来的,缺乏计算机基础知识,甚至有人认为编程不太需要计算机基础知识。但是基础知识真的很重要,很多大佬都是说这些基础知识决定了你的天花板,大家都听到厌倦,那今天我换个角度来说。计算机基础知识就不仅仅是学习知识,他更重要塑造正确的计算机观念,如同人的三观一样。

这么说有点抽象,那我举个例子。我们大多数人都接受过教育,都知道下雨是因为水被蒸发变成云,然后云积累变重最后变成雨。但是有些老一辈可不这么认为,他们认为下雨是因为有雨神。正因为这种不能正确认识事物的观点,才会导致求雨舞蹈甚至拿人命祭天的悲剧。那么再举一个简单实际的编程的例子。

如js深度拷贝,闭包这些初学者头疼的问题。要解决这些问题,就要回到计算机基础知识。要解决深度拷贝,就要先知道基本类型引用类型的区别。要想理解他们的区别就要知道计算机是如何存储数据,这就涉及到计算机组成原理的基础。同样要想理解闭包,也必须了作用域。什么是作用域,也是涉及到计算机基础。可见计算机基础和学习是息息相关。

当你没有对计算机有个正确的认识的时候,你虽然会使用像Object.assign这些API,但是出问题就会一脸懵逼。

再高级一点,数据结构和算法。计算机本质就是处理数据,而数据是以何种结构储存这就是数据结构,而对这些数据操作就是算法。举个生动点的例子。图书馆的书就如同计算机的数据,而按一定类型分区存放形成一定的结构,这就是数据结构。当你要找某本书,是一本一本找还是按分类去找这操作就是算法。可见,为了完成一个目标找到某本书,一本一本找和按分类来找或者别的办法的所耗费的时间是不一样,这如同系统的性能。由于现在大多数都是使用别人封装好的库和框架,加上前端相比后端对数据处理没那么频繁,所有很多人都忽略数据结构的重要性。

那么作为一个软件工程师需要掌握以下知识点

  • 常见的数据结构
  • 网络工程
  • 计算机组成原理

这些我也是自学,自学时间也比较短,所有只能给点小小参考。希望大家能给更好的建议。这里为了确保重点就不展开,可看我的[小博客-软件工程师学习路径]((lienjack.github.io/Blog/knowle…)

前端工程师需要的知识

我觉得前端工程师的知识可以分为三种

  • 工具知识
  • 专业硬技能
  • 抽象经验

工具知识

工具的本质是解决某种的问题,提高效率而诞生的,本质决定了他的性质————专门解决具体问题。而问题会随着时间推移消亡或者改变。如以前由于浏览器的兼容问题,所以诞生出来jQuery来解决兼容浏览器问题(虽然这里把jQuery列入工具是不太正确,应该属于库)。而现在越来越多项目都不用jQuery的原因不是因为有vue,react框架的诞生,也不是代码像意大利面不好维护,我个人觉得是因为他已经完成它的使命,现在浏览兼容和提供原生的api已经足够好,可以参考你可能不需要jQuery。它已经完成它的历史使命,可以退出历史的舞台。

而且现在的工具很容易时代的浪潮给吞噬,昨天大家都用gulp,今天大家又用webpack3.0,明天又有webpack4.0。这种迭代速度太快了,可能之前还没学会明天就不用了。对于工具的态度肯定是要学,毕竟他能大大提高效率,但是应该把时间更多放在语言特性和框架原理上面。对于初学者,不是太推荐直接学工具,等基础打扎实再学能学得更快。如你css玩得好,less、scss就很快上手。

哪些是工具

  • 构建工具webpack、gulp、Rollup
  • CSS 预处理语言 less、scss
  • UI框架

专业硬技能

HTML、CSS、JavaScript三剑客,不仅要好好学,还要深入学。这个之后会有专门的章节来分析如何学习,还有掌握一门框架和一些经典的库。

抽象经验

主要是设计模式、设计理念、性能优化、架构设计。这些没人能教的,只有自己摸索。哪怕别人教你设计模式,但是当你真正使用的时候发现可能自己无法很好驾驭,真需要大量时间去承担,但是这也是程序员最宝贵属于自己的东西。按照阿里P7评判标准。拥有自己的一套方法论,并能根据场景快速提供几个不同行业解决方案,这些就是抽象经验,只有自己不断模式总结才能拥有。

好了说了这么多废话,那就开始从零开始如何学习前端。

如何学习html

html本身就是语义化,所以学习起来不会有困难。可以上网找点视频,或者各种跟着以下网站敲一下。

慕课网-初步认识html与css

w3cschool

MDN-HTML教程

如果实在看不下去就买点视频教程吧。虽然个人不支持盗版,但是有时真的太穷没办法。

在网易时候买的微专业,花了1k多,心痛。员工还没折打。。。。。

不过玩笑归玩笑,这课程真为我节约很多时间,差不多用金钱买时间吧,没有这个可能连第一份工作都没有。如果有能力还是支持一下正版。

特别对于刚刚接触的小白,推荐看视频能快速入门,由于是专业人士指导,还能在学到知识的同时学到一些学习技巧。

如何学习css

可以按照上面的网站的教程来敲一下,然后推荐几本书 《css手册》 查缺补漏

《CSS权威指南》 打基础

《CSS揭秘》 里面有丰富的案例和技巧

《css世界》 这个需要基础扎实并有一定经验看,此书会让你大呼过瘾

如何学习JavaScript

好了重点来了。看完这个可以结合后面的刻意练习使用,效果更佳。

之前的css和html都比较用于入门,毕竟他们都是属于标记语言,本身就具有一点的语义化,弱逻辑,但是JavaScript就不一样。JavaScript博大精深,需要用大量时间学习和专研。在推荐教程之前,我们聊聊如何渐进式学习JavaScript。

那么我们以一个武侠小说主人公为例子来简述

  • 初入江湖
  • 拜师入门
  • 苦练绝技
  • 大战沙场
  • 追溯本源

初入江湖

这时候的你跟着教程走,可能对闭包原型链这些一点都不会。但是都是没有问题。就像打游戏一样,不可能新手教程都没过就直接打BOSS,这不现实。这时候的你敲点demo,了解一下JavaScript是干啥用,在大脑里面有点印象就好。

对于《高级程序设计(第三版)》看不懂先记下来。之后回头随着你敲代码的数量增多,会有一定的理解。

推荐教程

《JavaScript高级程序(第三版)》

慕课网-JavaScript入门篇

慕课网-JavaScript进阶篇

w3cshool-JavaScript

MDN-JavScript

拜师入门

我也想有个师傅带带我o(╥﹏╥)o,可惜并没有。这时候的你对JavaScript有了更高的要求,也可以做点简单的demo。但是这还不够的。你需要翻越名为作用域、原型链和异步这三座大山,而这三座大山即使你把《高程3》反反复复看也难以一时顿悟。那么以下几位师傅能帮到你。

书籍推荐

《你不知道的JavaScript(上)》

这书对于作用域,闭包讲解非常棒。

《JavaScript 忍者秘籍》

这书可能对于现在的你还有点早,需要一定功力才能看懂,但是没关系。看完一段时间再回来看会有所获的。

推荐视频教程

慕课网-前端JavaScript面试技巧 这个真的很好,我看书的时候一脸懵逼,但是看完这个后就突然开窍,再去看书豁然开朗。 我只有3个月试用期,学不会就失业,所有工资基本都是买书买视频教程,不仅贫穷还欠了挺多钱。这里推荐的付费教程是我在这么多中,我觉得对我很有帮助的。并没有收一分钱广告费

苦练武功

这时候的你已经有一定的基础。但是单靠有基础是无法应对工作的,这时候的你需要一些工具与框架。

ES6开启

所谓的ES6只不过是新的规范,由于目前不同版本浏览器兼容问题,需要使用babel来编译。为何还要这么麻烦还要使用es6。因为使用ES6的语法会更加高效,如果用砍树来比喻,ES5是用斧头砍,ES6是用电锯砍。开发效率真的高了很多。

阮一峰 ES6入门 一本就够了,不用其他了。

vue?react

这个看个人或者公司。对于新人个人推荐vue,因为他渐进式容易上手,而且框架思想上是相通的。把vue学了,如果出来工作需要用react很快上手。

怎么学vue,虽然说别人说看官方文档是最佳的学习路径,但是别人是老司机,我看官方文档时候是一脸懵逼的。因为缺乏很多基本概念和实践,无法领会作者的意图。

特别那时候在试岗期,我连ES6都没学就要开始准接项目,只能仿照视频教程把东西给做出来,然后在慢慢理解。

我个人建议是看点视频敲点demo,然后看官方文档会顺很多。

推荐

技术胖 技术胖业界良心,看教程不花一分钱。

慕课网-vue-去哪儿 这个是学习vue的比较基础东西,敲完就看官方文档没有障碍。

慕课网-vue-饿了么 之前有个vue1.0的,没想到居然重置了。这个我还没看,不过黄轶老师讲课不会差到哪里。

慕课网-vue-京东 这门课程最大特点是让你有模块化和工程思想。

webpack

是时候学点工具,提升工程效率。

我是用webpack,所有推荐以下webpack学习路径。

webpack官网-中文文档 其实官网挺完善,学习webpack先了解一下基本概念。

技术胖 webpack3.0 注意版本,目前是4.x了,但是学习3.x主要是学习概念和动手写一下,一定要自己动手写一下。

深入浅出webpack

这书最好有把上面推荐的给看了和敲了。这书比较系统,能完善知识盲点。

jQuery?

虽然现在jQuery越来越少人用,但是不少公司老项目还是要维护。本人也把公司旧项目的jQuery替换成vue。看需要学吧,看菜鸟教程中文文档也够用了。

虽然jQuery已经慢慢退出历史舞台,但是他的设计理念永远不会过时。他的源码包含丰富的设计模式和很多实用的工具函数,jQuery源码比较多可以看zepto的源码。本人目前也经常看zepto的源码,把里面的工具函数抽离出来变成模块并应用在工程中

大战沙场

你已经拥有足够的基础和能力去面对工作上面的业务逻辑。已经能做出一些项目,经历过如此痛苦的苦练功夫阶段,这阶段你要做的是什么

答案只有一个了 ———— 不断实践和反复修炼武功。

把之前的书反反复复看,完善自己的知识库。因为你做得多,对基础有又更深入的了解,因为你对基础有深入了解,你会越来越熟练。这就像滚雪球效应,只会越滚越大越快。

推荐以下查缺补漏

面谱

javascript工程师必须知道的33个概念

冴羽的博客

汤姆大叔的博客

追溯本源

这时候的你对于业务代码的实现已经不是问题。很多人也满足于此,但是这还是不够的。这时候你还只是个“码农”,并没有成为真正的程序员,没有创造出属于自己的东西。然而创造永远不是简单的活。这时候这句话可以帮到你

好的艺术家模仿皮毛,伟大的艺术家窃取灵魂

这时候你需要关注一些设计模式和设计原则,开始去看源码。模仿别人的轮子,开始自己造轮子,模仿并不可耻。全部人都是通过模仿,然后积累成为自己的东西。

《JavaScript设计模式》-张容铭

《JavaScript设计模式与开发实践》-曾探

这两本都可以,随便挑一本。 小孩子才做选择,我全都要

然后就可以开始源码之旅。怎么看源码,当然不是一上来就从第一行看,而是先找找别人的看完写的经验。当然有人说有一手资料为何还好看二手甚至三手资料,这观点又对的地方也有不对。对的是一手资料信息量更为广大和正确,错的是或者说不适合的是,每个人水平不一。对于刚刚看源码的人来说,直接看源码会像看天书一样,不知在看啥,又浪费时间又难受。这时候需要前人把你梳理一下知识。就像刚刚出生的鸟儿不能直接吃虫子,需要母鸟咀碎后才能吃。当你看源码看多后,形成自己方法论后再直接看源码也不迟。

一开始就又简单又实用的underscore.js入手。代码量不多,而且有很多实用的工具函数。不需要一口气看完,每天按模块看一点。

源码入门

undersercore-源码分析-吴晓军这个就够,先把本看一下,然后再去他的GitHub看中文备注的源码,自己再敲一下。

看完undersercore可以试试看Lodash,这两个都是一脉相承。

如果有空的话还可以看看zepto,代码量不多。推荐看Zepto源码分析-Hefty

vue

对于vue这么庞大的源码量更加需要前人的指点。我看源码的顺序是这样的。

  1. 剖析 Vue.js 内部运行机制这么便宜买不来吃亏。把原理抽象为小 Demo,真的对新手十分友好。看完这个后再去作者的GitHub里面看补充的染陌同学

  2. 逐行级别的源码分析这个我还在看,收益很多。

  3. Vue.js 源码全方位深入解析 这个快500元。我一开始就是看这个,看得我一脸懵逼。这是因为那时候我功力还不够,基础没打好也没有太多看源码的经验,所有不是黄轶老师讲得不好不够深入浅出。现在看回去真的发现讲得挺全面的。

其实当你看完剖析 Vue.js 内部运行机制就可以开始模仿别人写的UI框架。

我推荐是先看Mint UI里面的源码写得不算难,但是由于在vue1.0就有,里面有很多东西都没有充分利用到vue2.5的特性。导致可能看上去写法没那么高明,但是有个好处就是易读。

Vue.js 组件精讲这本书只有你经历过写组件,每天看别人源码,自己模仿,每天百思不得其解的痛苦后看,你才能深深感受到他的价值。我看的时候内心只有,还有这种操作,令人窒息的操作。毕竟我之前也是经常看iview的源码,那时候好多都没有了解到作者的意图。主要是自己太菜

看完组件精简小册子可以挑一个自己喜欢的UI框架慢慢看,慢慢模仿。

我自己大概拿这些参考

造轮子造到质疑人生。

刻意练习

你以为我只是推荐链接和教程就完事?当然不是,接下来或许才是精华。

推荐大家看一下《刻意练习》这本书

这里我结合一下我学习前端的经验来谈谈如何把刻意练习用在学习前端上面。 刻意练习具体流程是这样的:

  1. 明确目标
  2. 注意集中力
  3. 反馈
  4. 跳出舒适区
  5. 循环反复

从本质上来说,所谓的刻意练习就是迭代。他让你每次都有一点点进步,当时间累积久了就会从量变变成质变,就像滚雪球,一开始滚得很慢,但是时间久了之后雪球越滚越快,越滚越大,最后无人阻挡。

明确目标

这是第一步,也是最重要最难的一步。为何如此难,因为工作不像读书时代,有个明确的分数。读书的时候每次考试都有明确的分数,每题都有得分和扣分,比如这次满分考了80分,那么下次目标就是90分,而现实工作没人给你打分,甚至可能连反馈都没有。所以要想有可量化的目标就要引入心理表征这概念。

心理表征听上去很高大上,但是其实他人人都在用。以一个最简单的例子,比如说打游戏。当大家看职业选手打比赛的时候,都会不由自主开始评判,如我觉得他很叼,他补刀和意识很强,我觉得他很菜,一点打野抓人的意识都没有。这些就是心理表征,也就是我们对这事物的评判标准和个人见解。只有心理表征明确了,才能知道自己打游戏水平在哪个段位,和自己哪里不足需要练习。才能有下面的刻意练习。

对于学习前端如何有自己心理表征来评判自己,由于本人身边没有导师也没人指点,身边也没有参考物,所有经历差不多大半年才形成自己对于前端的模糊评判标准。正因为有明确的评判标准,这后半年进步速度连过去的我都没法想象。

首先一定要有对js基本知识自己到哪种水平的清楚定位。如何做到,可以试试看书和写博客。我之前看高程3的时候看了好几遍,感觉自己懂了,但是其实当我去看你不懂js和忍者秘籍的时候才发现自己对于闭包和原型链还停留在表面认识,通过看不同书籍,然后拿自己的观点和作者的观点做对比,就有个大概的定位。再自己写一下知识库的时候,发现还是有很多细节没有充分认识到,如AO等。这些只有自己写出来的时候才知道,看书是根本没意识到。当你意识自己不足的时候,就说明你的心理表征又进行迭代了,你就会查阅更多资料,了解更多更深入。当你对这事物有更深的了解,就可以意识到自己那里不足了,当你意识到自己不足的时候才能进步。

关于博客

一开始我是不想写博客的,因为一个是太费时间,另外一个是我觉得别人都写过的东西,比我写得好为何我还要写。虽然即使我不写博客,但是有建立自己的知识库的习惯,就把书上的和网上的好文章复制粘贴到自己有道云笔记,然后加点自己的观点,再把思路理顺一下。后来慢慢发现这种方法一个不利于我建立心理表征,很多东西看是一回事,自己写又是另外一回事,也缺乏反馈不知道自己写的是否正确,还有就是既然自己都花费这么多时间弄,不如分享出去,让大家看到后能一起交流。所以趁元旦放假的时候自己用vuepress搭建了简单的知识库。 lien的知识库并希望19年坚持写下去。

对于代码的如何建立心理表征,也就是说如何可以评判代码好坏是否优雅。这个真的很需要时间积累,不过可以从以下入手。

  1. 看别人开源项目代码,网上GitHub有很多。
  2. 学习像undersercore小而美的源码或者他人对这源码的解读undersercore-源码分析-吴晓军
  3. 有一定经验可以看看《重构JavaScript》,这书我现在还在看,看得还是有点吃力。不过最重要可以学到如何评判代码好坏的行业主流观点。
  4. 学会造轮子,造轮子的时候就能知道自己实现方式和思考方式与他人差距。
  5. 接受领导的反馈~~(我没有。。。)~~

只有当你有个清晰的心理表征,才能知道自己我在哪里,我要去哪里和如何到达。大多数人把工作任务交付完成就完事,虽然他们很想进步,但是由于缺乏明确的心理表征不知自己去哪里,就像没有眼睛的苍蝇四处飞,最终原地踏步。而现实表现就是瞎学,什么新东西就学什么,对于基础知识没有沉淀,所有一直没啥进步,最终学不动。

注意集中力

人的注意力是有限的,所有不可能一天都能集中注意力,但是可以进行调整而达到最优。

1. 学会主动休息

很多人工作都是从早上工作到中午,然后睡个中午觉,再从中午工作到晚上,这当然很累。就像手机电池一样,一用就用到20%,然后充电充电到60%又继续用,这样长期下来身体都不是处于精力充沛,效率就会低,经常写BUG,写了BUG又要DEBUG,浪费很多时间,晚上又要加班,加班就睡不够,恶性循环。所有可以试试像番茄工作法,每50分钟休息10分钟。当然休息刷朋友圈刷抖音不是很好,这不算休息。正确休息方法是发呆,走走,假装去厕所,然后走去楼上再走去楼下,这对精神和身体都很好。

2. 在最集中精神的时候做最重要的事情

这里最重要事情不是最紧急的事情,对于我而已最重要的事情是学习。所有一般我会早上6点半起来,避开高峰和堵车。8点到公司,然后一直学习到10点。这段时间注意力最集中,而且没人打扰你,因为他们都没到公司(手动狗头)。周末都会去华工图书馆和朋友学习整个周末。一直坚持1年,缺点是真的好鬼累啊。当然可以因人而异。其实这种有点像投资的理念,把大量资源投资在最能获得收益的事情上面。而我就是把自己最好精力和时间投资在学习上面。

3. 良好的生活习惯

最重要的是早睡和锻炼身体。早睡是很重要,但是很多人做不到包括我自己。大学时候基本都9点下课,然后晚上10点打开AE和C4D开始做视频,一做就到3点,在网易就更过分,有时候由于项目等原因,1点下班或者直接睡公司是很普通的事情。周末基本从早搞活动到晚上,一年基本无休。身体状态不是很好,而且以前有个做后期的好朋友猝死了,有几次感觉肝部好痛,快死了,吓得我现在天天10点半就滚床了,即使活没干完早上早点起来继续干。

然后锻炼身体,这个也很难,没啥太多时间去健身房。只能每天下班从坐公交去地铁站,变成骑40分钟自行车到地铁站。周末去珠江边跑步,大概6-8km,在家做做keep。身体好了,人也精神了,效率更高了活就更快搞完,就有更多时间学习和研究轮子。然后因为研究轮子多了,有自己使用的库,又导致效率又更高了。这是正反馈过程。

4. 打造自己的工作流

人的精力是有限,把精力放在最重要的部分。但是如何做,可是试试用GTD工作法,这里就不详细展开有兴趣可以搜索一下。他的核心就是任务清单。把今天或者将来要做的事情全部写到清单上面,然后进行分类。从时间上分今天要做,明天要做,将来要做,可能不做。从工作四象限分为,紧急重要,不紧急重要,紧急不重要,不紧急不重要。然后按照优先度排序,去掉不做的。然后按照优先度逐个完成,完成后就打钩。一天过去没完成不要有愧疚,可以变成明天再做,最重要是早睡。这里只是泛泛而谈,以后有机会再写一篇GTD和瀑布流思想结合,打造自己的工作流。

5. 强烈的欲望

这个没法教,看个人经历。本人经历过从在网易指导新人(实习和正职都有),能独挡一面,自己承担整个小型项目(直播比赛活动),一条龙服务,自己作品如16年直播丁磊阴阳师抽卡项目中,栏目包装中不仅还原游戏场景,把整套美术素材加入自己理解和细节重做一遍,得到专业美术人员的认可。到考研失败到处被别人嫌弃嘲讽,连3k的工作都不要我,身边的人嫌弃的我的巨大反差。而这种难受的感觉一直折磨着我,无论是我清醒时候还是在梦里。其实这些可以看得开,但是我故意不解开心结。因为对于我而言这些都是能承受得住,而且这种强烈的欲望让我保持着极其可怕的上进心。抵制一切诱惑,王者荣耀,周末咸鱼等等。其实挺害怕解开心结后就失去抵制诱惑的力量。本人及其容易沉迷于各种东西。玩文明5经常从早上玩到第二天早上并毫无知觉。包括现在写代码,写着写着就到下班时间都不知道。。。。

总之这欲望是你决绝诱惑和坚持下去的动力。这玩意没法教的,只有自己经历过。

反馈

每次完成后最好有一个反馈来评判自己做的是否好。如果身边有很好的导师教练,那么恭喜你,你是非常幸运的人,可以不用像我我这么苦逼,但是大多数人没有,如何办。

1. 坚持写日报,周报和月报。

日报:

日报这个每天都要写,由于有目标清单,写起比较轻松。主要是记录今天做的时候,不用很多很详细,大概记录一下,主要是为了写周报。

周报:

这个就要不是一周结束时候才写,而是上一周就要开始写。主要是定下这周的目标,并将目标分解成一系类可量化的目标,将目标分配到每一天。然后周末时候统计每天完成的进度,写写这周新的,为何没有完成(如加班,突发事情,自己任务工作量估计错误)。并写下周要完成的任务。

月报: 月报和周报思路一样,不过他不太需要很详细,需要大概的目标。比如把深入浅出node看完,学习webpack等比较大的方向。而且大多数时候月报定下的目标会根据每周来调整。如我在9月就定下一个目标看vue的源码,但是那时候我基础不行,没有自己造轮子的经验,也没有阅读源码的习惯,更加不知道vue响应式的核心原理。所有坚持一周后,觉得这路不可行需要战略调整,就把目标改了。到现在1月份,有比较多的组件开发经验,看了挺多别人对vue源码的解读,也自己看了undersercore和zepto的源码,并尝试自己直接看源码,能看到点思路,才重新定下1月目标,把vue实例过程源码好好分析的目标。

上边例子告诉大家什么

  1. 目标需要结合自己情况进行调整。
  2. 要有明确的心理表征,知道自己功力到哪种程度可以进行哪种挑战。很明显这个时候的我高估自己功底,导致出现错误的决定。
  3. 正因为有清晰的心理表征,能对自己进行评判,及时给予自己反馈并进行调整。

2. 分享与交流

分享也很多办法,如写博客,写文章。把自己的见解分享出去,然后评论就可以收到大量的反馈。还有就是偶尔水群,当然水群也是有技巧。根据以前做后期水群水到认识一堆后期大佬,后来能进网易工作也是因为水群时候认识到网易的大佬。总结出一套简单的技巧。

  1. 最简单看群的人员。如果300-400人的话,那就算,浪费时间。最好选100-200+左右的群
  2. 加入一些质量比较好技术氛围好点的群。如有些博主功力挺好,写出很棒的文章,你也很欣赏他。这时候看到有他交流群,不要犹豫感觉加入。因为这些群不仅群主厉害,而且群主会维护群的风气,有比较好的技术分享环境,而不只是吹水。
  3. 进群时候最好有一定的基础,这个基础没有明确的标准。但是可以参考以下。已经脱离小白阶段,能解用百度解决简单问题。群友都很忙,没时间也没义务回答简单问题,所有在打基础时候少水群,或者看看大牛们在谈论什么,自己了解一下。
  4. 乐于分享,经常帮助群友。拒绝做键盘侠,少BB,多干货。
  5. 当你坚持做第4点时候,会慢慢开始树立你的小小个人形象,这时候有些人觉得你这个不错,就会拉你进更加核心的交流群。没错,我就是这样被拉进B站动画区小编粉丝群(其实就是一堆工作人员和大牛愉快吹水群)。这时候群里都是行业水平都挺高的群。里面技术氛围更加浓重,能学到的知识更多。这时候能交一下朋友,一起分享一起进步。

当然水群不要那么功利,本来就是交友解压,一起分享一起进步。主要水群时候,上班就少水群,提高工作效率。下班的路上可以水一水放松一下。

跳出舒适区

所谓舒适区就是自己做起来不费劲,没啥挑战性的。如一开始你写业务逻辑觉得很难,但是写多发现套路了,后来就基本就是复制粘贴。这就是舒适区。一直呆在舒适区虽然平时挺爽,但是也会停止进步,每天各种api的复制粘贴,把工作做完就完事,这样哪怕做得更多也只会原地踏步。如何跳出舒适区,就是做更有挑战,但是自己能做到的事情。

如写业务逻辑,你可以尝试把代码写得更“优雅”,简洁易读,性能更好。然后开始总结,把经常用到的方法如去重,数组扁平,深度拷贝等这些函数自己模仿实现一遍,并形成自己的工具函数库。

然后开始尝试模仿别人的轮子,对于造轮子。要先知道自己造轮子的目标。而这目标是分阶段的。一开始是为学习和更好使用别人轮子而造轮子。这时候你工作虽然还是使用别人的轮子,来确保准时交付工作,但是开始研究轮子的核心原理。当你了解原理之后,虽然实现细节还是不清楚,但是用别人轮子时候更加顺手,出bug的时候能更快定位问题所在。当一段时间后,可以开始关注实现细节。可以对把好几个同样功能的轮子做对比,然后自己研究出自己实现的方法。这时候你可以自己的轮子慢慢应用在工程(非生产环境),自己开一个分支版本,把里面的工作的简单的轮子换成自己的,然后在单独内部的开发环境测试。最后是反复琢磨,不断修改,开始用在真正的生产环境。就一个简单的button组件,我都重写了4次。最后是否放在生产环境由部门大佬决定,表面上可能弄了很多时间和精力,最后没有用是很浪费时间。毕竟周末都用在造轮子。但是你收获的更多东西,不仅知识和经验,还有一些抽象的套路和属于自己东西。

这段时间自己尝试参考之前说的组件库,写了一些组件,开始了解以前很多没有想过的东西。如写popup的时候,遮罩和弹窗之间如何管理,这就需要一个遮罩管理器。而这遮罩管理器需要管理弹窗的实例和挂载。涉及到extend$mount等api。为了能更好了解,就需要对vue实例发生什么,vue是如何实例挂载到el上面等等细节有更深入了解,需要看一下源码的实现思路。我也没想过一个简单popup,居然涉及这么多的东西。看mint和vant时候,虽然他们都是用了遮罩管理器,核心思想不变,但是实现细节差别挺大的。而且代码量也挺多的,涉及到东西挺多,如在跳出弹框时候如果用户按下返回按钮导致路由变化时候,遮罩和弹框是如何处理等等。这些不是像我以前想象中简单写过遮罩,然后弄个队列将弹窗的实例通过$mount挂载在到dom上面就完事。

对于2019年的期望

  1. 好好陪女朋友,这一年为了生存发疯学习,从早学到晚,从星期一学到星期日,导致没怎么陪女友,真的对不起她。
  2. 坚持写博客,完善自己的知识库。
  3. 完善自己的UI框架,并把经验分享出去。
  4. 是时候解开心结了。

今天是2019年1月10号,是我学习前端的265日,也是距离Fate Hf线电影大陆上映的倒数最后一天(手动狗头)

掘金年度征文 | 2018 与我的技术之路 征文活动正在进行中......

猜你喜欢

转载自juejin.im/post/5c36fe50518825253b5e94f4