劉博文:代碼無終點,堅持跑,就不會輸

圖片描述
圖靈訪談第1027期前端

2012年,他17歲,中專畢業。

2015年,他20歲,加入國內知名互聯網公司360,成爲360最大前端團隊奇舞團的一員。現任360導航事業部資深前端工程師。面試

2019年,他24歲,出版首部技術書籍《深刻淺出Vue.js》。後端

目前負責360導航首頁及二級頁創新項目等億級PV站點的設計與優化,推進Vue.js成爲部門內普遍使用的核心技術棧,獨立研發相關開發工具與技術解決方案並使之成功落地。前端工程師

從中專畢業的門外漢,到360前端工程師並出版技術書籍,他完成了職業生涯的巨大跨越。他是怎樣自主學習,快速成長的?本期圖靈訪談對話劉博文,一塊兒來了解他的前端之路。框架

8000塊錢在北京能活多久?

「雖然也很努力,但我以爲更多的是靠運氣。」

17歲那年我中專畢業,是學計算機的。但當時的中專就是告訴我什麼是計算機,有個職業能夠用計算機去工做。函數

剛畢業的時候,我到瀋陽的一家企業去上班,不會JS,CSS也只是略懂。面試的時候,他們可能不知道個人水平,以爲我還能幹活,就讓我去了。結果入職後發現,我啥也不會啊,又很差意思直接讓我走。就給了我兩個選擇,一個就是接着幹,當學徒,學徒就沒有工資;還有一個就是別在這幹了。我想了想本身確實挺菜,那就跟着學吧。工具

同窗都說我傻,不給錢還給人幹活。如今回頭看,是我運氣好。若是沒有這個當學徒的機會,我就沒辦法踏入這個行業。學習

2013年,我18歲,想本身來北京。那時家裏人有一點擔憂。他們是不支持的,但仍是給了我5000塊錢,以爲等我錢花完了就本身回來了,總不能在那餓死。開發工具

但他們確定想不到,我就用這5000塊錢,加上本身攢的,一共8000塊錢,一直堅持到如今。優化

當時我算好了這8000塊錢,要在北京租個房子,押一付三,一個月房租按1500算,一共須要6000。我包都拎來北京了,還沒找工做呢。就是住一個小旅店,天天還要花200塊錢。也就是說我要在10天內找到工做並租個房子。

當時也是命好,真的找到一個特別小的公司,讓我去上班。由於我知道本身的水平,能找到工做還挺高興的,先能養活本身就行。並且公司最好的一點就是供住,員工能夠每月花200塊錢住在宿舍裏面。這就直接解決了個人生存問題,也是我在北京邁開的第一步。

圖片描述

工做了一段時間後,我仍是隻會寫頁面,切圖,並且忙到沒有時間學習。這樣下去確定不行,我就換了一個比較輕鬆的公司,爲了有時間去學 JS。後來學到必定階段的時候,我遇到瓶頸了,由於學的東西沒辦法在工做中用上。

我就又換了一個公司,這家公司只用一種語言就是 JS,服務端是用 Node.js 寫的,比較符合個人須要。我能夠充分去實踐和提高技術,並且工做任務很繁重,那是我成長最快的一個階段。

再後來,就到了如今的公司360。360給個人感受像學校,總體工做氛圍是比較輕鬆和自由的,任務不會把人壓到一點時間都沒有,咱們有充分的時間本身去學東西。並且像月影、成銀、李鬆峯老師和屈屈這種大牛會常常在公司內部講課,有什麼不懂的還能夠去請教。

Vue.js 纔沒有看起來那麼簡單!

初識Vue.js時,它還未被衆人承認。想不到5年後,爲它寫了一本書。

我接觸 Vue.js 比較早,大概是2014年。由於上一份工做接手了一個同事的項目,就是用 Vue.js 寫的。當時它是零點幾的版本,尚未正式的一點零版本。我簡單瞭解了一下,發現它和 Angular 1 很像,挺輕,挺優雅的。需求都能知足,學習成本還不高。

當時用 Vue.js 的人比較少,你們都沒怎麼據說過。它不火到什麼程度呢?咱們組新來了一我的,跟我一塊兒寫項目,我說項目是用 Vue.js 寫的,就給他看了一下代碼,講了一下項目。而後,次日他就離職了。

有半年的時間吧,我都在想是否是由於咱們組的這個項目,用 Vue.js 他以爲太 low 了,因此不想幹了?直到後來 Vue.js 被你們普遍承認,我纔打消了這個想法。

我剛入職360的時候,咱們組的項目都運行了很長時間,很穩定。一次偶然的機會,咱們打算新開發一個後臺管理系統,你們開會討論技術選型。就業務來說,我認爲使用框架和對應的組件庫會極大下降開發成本,就強烈推薦使用 Vue.js 技術棧,由於考慮到學習成本比較低,並且我對 Vue.js 比較熟。

如今你們已經習慣了使用框架開發,但在當時,個人提議遭到了很是強烈的反對。你們不停地提出各類問題,我也不停地給出解決方案,會議室現場變成了辯論會。

最終,個人 leader 給了我一個機會,若是想使用 Vue.js,就要在短期解決兩個最重要的問題,登陸和部署流程。由於公司的統一登錄中心是結合後端來實現的,純單頁靜態項目就意味着以前的登錄徹底不能用了。部署流程也須要全新的解決方案。

當時我還有其餘任務,因此就只能利用下班和週末的時間去作,好在最終問題解決了。這就是咱們組正式使用 Vue.js 技術棧的時間點,也算是在後臺項目中的一次試水。後來,咱們組開發一個新產品,是面向C端的項目。在技術選型時,我又一次強烈推薦 Vue.js。由於上一個項目,有一些同窗已經熟悉了 Vue.js 的開發模式,此次我也解決了一些遇到的問題(因爲產品是圖文內容類,存在 SEO 問題,等等)。就是這個項目真正推進 Vue.js 成爲了咱們的核心技術棧。

對 Vue.js 愈來愈熟悉,我在博客上陸續發佈了一些梳理它內部原理的文章,做爲總結和記錄。2018年,王軍花老師看到了個人博客,找到了我,問我有沒有興趣寫本書。當時我感受很忽然,這東西我寫不了啊。內心邊是很想寫的,又擔憂寫很差,心裏很掙扎。一天後,我和軍花老師說能夠試一下。

可能跟性格有關係,我歷來都不是等把一切都準備好了,再去作一件事。通常都是機會來了,先幹着再說。中間有問題再去解決問題。

當時我給本身定了的目標是6月份交稿。我列了一個大綱,而後倒推,一個月爲一個節點。寫做過程當中,每一個節點的進度可能比預期的快或慢,但整體在可控的範圍內。

寫做時間就是午休和下了班以後,一天差很少要寫兩三個小時。其實後期也會以爲枯燥,沒有靈感。開始懷疑到底值不值得,這件事真的這麼重要嗎?我是否是用這些時間作其餘事更划算?但沒有真正想過放棄,就這樣堅持下來了。

圖片描述

在寫做過程當中,我對一些 API 原理的細節理解得更深刻了。

舉個例子,我發現 Vue.js 對函數報錯這方面作了很嚴謹的處理。當咱們使用 Vue.js 開發項目時,編寫的全部代碼都是 Vue.js 調用並執行的,因此它在執行用戶的代碼時,作了錯誤的捕獲處理。

還有就是計算屬性。一個函數,能夠返回計算後的結果。它要實現一個很重要的功能,就是當計算屬性所依賴的某個狀態發生變化時,計算屬性的返回結果也須要作相應的變化,這個我以前確實沒想過 Vue.js 是怎麼作到的。

工程師的賽道上決定輸贏的,只有兩個字叫「堅持」

「我本身特別在乎的事,多苦多累都要把它幹完。」

一直以來,驅動我作事情的都是「我想」,而不是外界的指望。

這種性格有優勢,也有缺點。好比說上學的時候,我學習很差,倒不是由於笨,而是由於我當時以爲,學習的結果就是分高分低一點,而這個分數什麼用都沒有。優勢就是我本身特別在乎的事,多苦多累都要把它幹完。包括來北京弄這個計算機。

我以爲個人職業生涯,更像是一條沒有終點的賽道。並且這條賽道是不公平的,你們不是在同一條起跑線上開槍往前跑。當我剛開始跑的時候,可能別人已經跑了五年了。別人跑了好幾萬米了,我纔剛開始第一米。

好多人想問我怎麼才能跑得更快,把這場比賽跑贏。其實沒有任何方法和經驗可讓誰跑得更快。即便在短時間內快一些,但在這條沒有終點的賽道上,沒有任何意義。大部分人跑到中途就主動放棄了,這就是爲何大牛那麼少。惟一能決定這場比賽輸贏的,只有兩個字叫堅持。在這條賽道上跑贏的,不是那些跑得快的人,而是爲數很少堅持跑的人。他們能跑贏,只是由於他們還在跑。

圖片描述

讀代碼實際上是一種能力,能夠鍛鍊。你一開始可能讀不懂比較複雜的源碼,能夠讀像 Underscore 那種簡單一點的工具函數,重要的是訓練你的大腦。常常閱讀代碼的人,理解力會逐漸上升。若是你不常常看代碼,一段就研究老半天。尤爲是框架,不是一段代碼,是一坨,你直接就蒙了。

全棧工程師養成計劃

對於習慣計劃與記錄的人,時間的脈絡變得清晰和可控。

我每一年都會給本身定目標,應該在哪一個技術方向上深刻一些,而後把相關的經典的書買下來,看一看。平時也會讀一些所謂沒有用的書來調節一下,好比哲學類和心理學的書。

幾年前,我發現一我的很難把全部東西都學會。若是漫無目的地去學,不少東西看完以後就忘了。我會挑比較感興趣的領域去研究,這個領域中的全部問題都看一下,可是對於其餘領域的比較深刻的知識,可能就先放一放,之後再去研究。

若是本身有目標的話,哪些東西是沒看的,哪些東西是應該看的,其實內心都有數。

平時作事我有一個小技巧,是使用番茄工做法。不是用做秒錶,到點了就停。對我來講,它是統計的工具。好比說以一週,一個月爲週期,記錄我天天有效的專一時間是多長。據我統計,我天天專一的時間很短,也就兩三個小時,差很少四五個番茄鍾。

一旦獲得了這個信息,我就能夠規劃,天天把專一的時間用於哪些重要的事。不重要的,或者一些不太須要腦力的工做,均可以日後放。

除了這種大目標,一年中我還會定幾回小目標。好比說一個月或兩個月,堅持作一件事。天天我都會爲它分配一部分專一的時間,持續下去,直到把這件事作完。

多是個人性格緣由,沒有辦法同時作不少事。我更適合一次只作一件事。

圖片描述

無論是寫本書,仍是平時本身學習,我以爲作一件大事要比無數小事要好。前幾年,我就是學得很雜,看什麼火學什麼,沒事就看論壇的各類文章。過了一年,都不知道本身看了啥,徹底記不住。就像一個漏斗,我細碎的時間所有漏下去,什麼都留不住。我應該把個人時塊變大,才能卡在這。

將來我想成爲一名真正的工程師,而不僅是前端工程師,打算涉獵計算機其餘領域。如今前端一些顛覆式的工具和創新,好比 Webpack,Babel,都不是一個純粹的前端工程師能創造的。好多超大型的項目,都須要前端後端綜合的解決方案。若是隻作前端,只能寫個 JS 的工具函數,僅此而已,解決不了真正的複雜場景下的問題。

生活方面的話,我比較喜歡旅遊,每一年都會計劃出去玩兩趟,將來仍是會出去多玩一玩。我喜歡去本身沒去過的地方,看一看,接受一些新鮮的東西。要是有緣分的話,找個女友。

世上並無偶然,若是一我的務必要獲得什麼,並最終獲得了,這就不是偶然,而是他本身的功勞,他的意願將他領向了那裏。——赫爾曼黑塞

圖片:劉博文友情提供
採訪:樂馨,李冰
撰文:李冰

深刻講解Vue.js實現原理

圖片描述

掃一掃,京東購

掃一掃,京東購

《深刻淺出Vue.js》 做者:劉博文

本書得到360奇舞團團長月影和《JavaScript高級程序設計》譯者李鬆峯做序推薦,從源碼層面分析了Vue.js。

相關文章
相關標籤/搜索