1. 程式人生 > >一位前端 2018 絕地求生記 | 掘金年度徵文

一位前端 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 與我的技術之路 徵文活動正在進行中......