第八期 沸點,掘金團隊請來了知乎專欄《V8 引擎》、LibrarySniffer 做者 -- justjavac 作了爲期三天的 Ask Me Anything (AMA) 活動(已結束)。html
咱們在此精選了一些來自用戶的提問及 justjavac 的回答。前端
- 掘金專欄地址:juejin.im/user/55b9d2…
- 我的博客地址:justjavac.com/
- 微博地址:weibo.com/justjavac
- GitHub 地址:github.com/justjavac
很是想系統學習一下 V8 引擎,可是總是看文章,總感受少點什麼,學的不深刻,請教一下 justjavac 大大 V8 學習經驗,怎麼系統有效的去學習? 須要什麼前置知識的vue
我學的也不繫統,九牛一毛而已。V8 確實太複雜了,並且裏面的奇技淫巧太多了,若是僅僅是想知道 es 規範是如何被引擎實現的,那不如是看 jsc。但畢竟 V8 是 js 引擎界的一匹黑馬,吸引着不少人來研究。java
- 官博 v8project.blogspot.com/
- youbute 視頻,我整理了一個 V8 相關的播放列表 www.youtube.com/playlist?li…
- Google I/O 或 Developer 的 V8 介紹
- 博客:
- 源碼
看了全部的問題,你的最有意思,第一個回答你吧。node
- 我不是 V8 的貢獻 / 維護者,我只是一個 V8 的業餘愛好者,喜歡把本身的空閒時間拿出來研究一下 V8/Chrome/Node,也喜歡把本身的心得寫成文章分析給你們,只是作了一些 trivial 工做。 參與一個大型項目,能夠從提 bug 和修 bug 作起,這也是不少人蔘與開源項目的入手點,由於大部分 further 都是核心開發人員在維護,不過也得看運氣,我曾經給 Babel 提交過些 bug,隨後賀老修復了 bug 並提交了 pr,可是官方遲遲沒有合併,最後核心團隊直接在 bebel 7 的重構代碼裏面修復了。 注意開源禮節,好比仔細閱讀 CODE_OF_CONDUCT.md 和 CONTRIBUTING.md。
- 尤大的一句調侃,其實咱們在微信裏面,不乏有比這更過度的調侃。而這個稱號也是我最初自嘲時發明的,這一點不少人都知道,根本緣由是我在 github 的一篇 markdown 得到了國內的 star 數最高榜。以前有人嘲笑「首席 webpack 配置工程師」時,我回了一句,我仍是「首席 markdown 程序員」呢,後來就一發不可收拾,被人作成了表情包。
- 第三個問題很難評定。"但行好事,莫問前程"吧。關於"技術產出",你大概指的是狹隘的 github 上的開源項目吧,那個人產出確實很少。關於"社區的知名度",我沒有以爲個人知名度有多麼高,若是你有這種錯覺,多是咱倆的社區圈子重合度過高了。我混的社區很少,知名度大多有早期紅利在裏面吧,若是簡單的評價下:
- 掘金社區:個人產出 > 知名度,我是掘金的早期用戶,到底多早呢,比掘金還早。看到我此次的 AMA 照片了嗎,這是我多年前來掘金是照的,那時候還叫稀土,公司都尚未成立,而掘金上線後,文章都是由聯合編輯來發表,我是早期的聯合編輯之一。我在掘金有什麼知名度嗎,沒有。
- iteye:我混的第一個社區,當時也只是作作筆記而已。10 年時間寫了 600 多篇文章,總訪問量近 500 萬次,我以爲個人文章應該幫助了很多人。至於社區知名度,我不知道那是啥。只知道我朋友被異鄉好居誣告時,我寫了篇文章,而後給 iteye 創始人範凱發了條信息,問他能不能幫忙轉發一下,他回覆我:"沒問題。你這個 id 我看這特別眼熟"
我在知乎回答了 500 個問題,在 sf 回答 1000 個問題,我私覺得我對社區的貢獻不小,即便在社區得到了某些所謂的知名度,不也是很合理嗎。python
剛看了評論 爲何不建議作外包?是由於對於技術要求比較低嗎?react
這麼跟你說吧,有不少 5 年以上經驗的開發者,其實呢,他們只有半年經驗,而後重複了 5 年。在個人招聘要求中,不招 2 種人:一種是培訓機構的,另外一種是一直作外包的。webpack
是由於他們對技術要求底嗎?是的,並且一年作幾十個項目,大多也都是同一個技術用 N 年。爲何呢,穩定,成本低。有 code review 嗎?沒有。有重構嗎?沒有。有 UT 嗎?沒有。。。git
對比一下產品和外包的開發流程。當最終開發完上線後,意味着項目(外包)結束了,能夠驗收交付了。而產品呢,當最終上線後,纔是剛剛開始。不停的反饋、迭代、打磨、……把一個十幾人用的軟件作到幾萬人,幾十萬,幾百萬,每一個階段都是不一樣的技術,不一樣的架構。程序員
作完一個能交付的軟件 vs 持續不斷的打磨一個軟件
1.雖然外包公司很大一部分像您說得那樣,但是並非作外包的公司依然沒有像樣子的code review,項目雖然是迭代了,但是每次的迭代都是草草上線,並不會給你太多的時間去怎麼優化代碼 怎麼codereview的 並且 來北京後 我發現很大一部分公司都這樣 不過只是我從面試上來推測得出的。全部的公司產品都是業務導向的。具體代碼層面那一塊就看技術領導的技術能力 方向 責任了。
萬事沒有絕對,只是「半年經驗,而後重複了 5 年」在外包型公司的比重很高而已。即便作產品,也不必定會持續優化代碼,大部分公司還只是注重最終結果,也就是最終的產品質量,而無論代碼質量和開發流程。
即便我帶過的團隊,作過的產品,也同樣。我以爲產品 v1.0, v2.0 沒有必要作 review,也沒有必要重構,這個階段的產品,目標是「能用」,可以快速投入市場。若是被市場承認了,再持續迭代優化,達到第二個目標「好用」。在這個過程當中 codebase 也愈來愈大,愈來愈複雜,也慢慢開始注重代碼的質量和開發的流程。
外包也分不少種,也不能一棒子打死。有些是長期型的服務外包,項目週期是幾年甚至不按期。可是大多數外包公司的項目都是中短時間的,項目週期是1-3個月,甚至更短,包括但不限於公司官網建設、企業 app、小程序、商城、等等。還有一些是作某個行業的項目,好比餐飲業。就是接各類餐飲業的項目,具體開發流程就不用細說了,基本都是套模板再加一些定製化開發。和流水線上的操做工沒有啥區別。
誘人的地方就是面試簡單,容易進,這也成爲了不少應屆畢業生的選擇。薪資方面,一般每一個項目作完都會有或多或少的項目獎金。我有一個高中同窗,比我晚畢業一年,當時我工資只有 3k 的時候他就已經7-8k了(這個對比可能有些不公平,他在北京,我在天津),後來個人工資達到 20K+ 時,他也終於突破 10K 了。後來整個外包行業不景氣,他們公司的業務也不行了。好在他自學了 iOS 編程,跳槽去了一家手遊公司。
閱讀一些逐漸深刻的書籍,如何有效處理長篇大論枯燥難尋。
停下來,思考一下,玩會遊戲,而後繼續。給本身定個目標,一次讀 20-30 分鐘,硬着頭皮讀,而後思考 10 分鐘。我用這種方式,花了3個月的時間並行讀完了愛因斯坦的《相對論》和 Harari 的《人類簡史》,而後整理了 200 多頁的筆記和草稿。
也有一部分緣由是生活和工做壓力太多了,讓不少人有了焦慮感。當讀書讀不進去時,就增增長了本身的挫敗感,最終造成的惡性循環。尤爲是隨着年齡的增長,接受新事物新觀念新知識也變得愈來愈難。
我上大學時,從圖書館借了 2 本 Martin Fowler 的《重構》,一本英文原版,一本中文翻譯版。兩本書對照着看,大概用了不到一個月的時間吧,就把英文版讀完了。
工做後,就只能利用天天的早起時間讀書了。再後來我和老婆定了一個家庭讀書日,每個月選出一個週末,這天一塊兒看書 4 個小時以上。若是再加上選書、佈置環境、營造氛圍什麼的,基本上得耗費一天的時間。
閱讀是一種習慣,堅持下來就行
再補充一句,其實儀式感也很重要,忽然就以爲讀書變得很神聖了
再再補充一句,找個女友,一塊兒學習更有動力
我進入編程徹底由於興趣,相對別人而言,很沒有天賦,可是一直在堅持,如今的公司屬於成長期,沒法鍛鍊技術,想重新捋一遍前端技術,又沒有時間,請問大神你有什麼好的建議嗎
「公司屬於成長期」我是否是能夠理解爲公司的開發流程各類不規範,沒有提高的空間了。
我通過了好幾家成長期的小公司,也在大公司帶過百人以上的團隊。其實規範不規範徹底不在於公司的規模。並且從不規範到規範的過程也是一種成長。
而你說的"又沒有時間",這就徹底是藉口了。只要你有時間刷微博朋友圈,就有時間學習。只要你有時間刷掘金,就有時間學習。只要你有時間打遊戲,就有時間學習。天天兩個小時,擠擠就出來了。
你可能還年輕吧,我像你這個歲數時,有的是時間。現在有了家庭,有了孩子,時間忽然就少了不少,可是晚上依然有時間打打遊戲,刷刷知乎,我通常都是早上 5 點半起牀讀讀書,寫寫代碼,寫寫文章。
若是老闆告訴你把 xxxx 學完,給你漲薪2W,我猜你立刻就有時間學習了。說白了,仍是動力不夠。
從頭學一遍前端技術,這個沒有必要,你能夠從新學,可是沒有必要從頭學。仍是基於你目前學習的技術,繼續學習相關的技術吧。或者以前沒有深刻學習的知識點,如今再進行深刻學習。
前端只是一小部分而已。先作一名合格的程序員,而後纔是合格的前端程序員。有不少技能是不限於語言和平臺的。
jjc老師好 個人技術棧是Node.js 和 React各一半。 若是接下來繼續將時間分給兩個技術棧一家一半, 感受哪邊都無法作出點名堂。 但願能得到您的一些建議,謝謝。
並不須要放棄一半,只是把其中的主要精力投入到一家,而次要精力投入到另外一家而已。有側重點的學。即便那些所謂的全棧工程師,也都有側重點,好比狼叔,號稱Nodejs全棧,可是他的技術棧的側重點則在後端。
什麼是全棧,就是不要給本身設限,從一個技術點輻射出其餘相關的技術點,而後不斷精進,這就是全棧。那些個既會react,又會vue,還會nodejs,還會MySQL,還會python的,……是全棧嗎,不是,那是打雜的。全部技術都學個皮毛,那學的再多又有什麼用呢。
若是你定位爲後端 nodejs,那麼就學習 js 語法,nodejs,平臺,類庫,框架;而後是內存管理、http協議,緩存策略;而後負載均衡,高併發,高可用;再慢慢一層一層的深刻,技術是一個由點到網的過程,學的越多,就會發現本身欠缺的越多。
前期能夠追求廣度,都多多幾門框架或者技術。可是後期必定要追求深度,把一個技術棧和相關的周邊技術學精學透,不要永遠停留在"會用"的水平。
本期 AMA 社區小夥伴提了許多實用問題,感謝 justjavac 認真地爲掘金小夥伴解答了很多疑問。瀏覽更多的問答,能夠到 justjavac 的 AMA 進行閱讀和討論。
justjavac 從全部提問中選擇 2 個提問者贈送他的書籍《人工智能》。記得查收通知喲~