年終總結-2019

發表於2019-12-25

又一年過去了,到了交卷的時刻,在26歲的黃金時期,跑贏了夢想麼?

對待工作的看法變化

經歷了剛畢業時的無知"憤青",經歷過維護"屎山"程式碼,經歷過大牛同事充滿設計、思考的讓人膜拜的程式碼,經歷過摸魚達人的團隊,經歷過大牛團隊,總是在想自己到底適合什麼樣的環境,但現在的想法是,如果環境沒有差到不行,就不要對環境和其他人要求太多,多觀察如何在當前環境下發揮自己的價值,得到別人的信任和口碑。因為優秀是相對的,人精走到哪都發光,如果當前的環境裡都無法脫穎而出,總是都無法脫穎而出原因的

對待技術看法的變化

我經常會思考,技術的價值到底是什麼?

  1. 沒聽說過哪家公司因為技術原因,導致活不下去,但為什麼技術又這麼貴呢?
  2. 曾做過**搶票軟體團隊,程式碼奇爛無比,頁面沒有任何快取,切換頁面從來都是白屏loading、由於技術原因,左滑返回手勢禁掉了、動了這塊那塊出問題等等、CEO拿著美團的產品吐槽我們的產品體驗太差,但為什麼並不影響產品的成功呢?
  3. 為什麼經常會出現高階管理者並不是技術大牛,而且這貌似是大概率事件?
  4. 為什麼很少有前端的CTO ?
  5. 為什麼都在說演算法重要,可平時感覺並沒有用到?
  6. 為什麼讀框架原始碼成了政治正確?

首先是我並不喜歡寫程式碼,我喜歡健身、和與人交往積極陽光的生活,而不是一個人coding,最初是想做產品經理,但又沒什麼出色背景、以及並不知道產品經理應該學些啥,所以選擇了前端,作為進入網際網路的路線,只不過隨著時間和努力,做的還不錯,而且確實是一個可以給你很多想象力的職位,以及不錯的薪資,所以我並不喜歡沉迷技術,這不是我的希望,我認為,技術除了像華為、阿里雲、網宿、這些賣的就是技術的公司,其他場景下只是服務於商業的一小塊,而很多開發者往往侷限於自己的領域思考,比如怎麼提升渲染時間、如何組織專案、如何提升程式碼質量、怎麼減少的網路請求時間。這些重要麼?當然重要,但這些影響真的很大麼?這可能就要問一問了,比如上面舉到的搶票軟體的例子、再比如我實際經歷,當初我們公司app用react native開發,公司大牛對專案進行了很厲害的設計、尤其快取設計,真的是頁面切換毫無白屏,很牛。但直到我我仔細觀察了另一款我經常用app後,才發現原來它沒有做這樣的快取,體驗差距太明顯了。但這在我做開發者之前我是毫無感知的,雖然技術差的公司沒有最好的解決方案,但找到個能用的解決方案還是不難的。所以我選擇的方向是,每個技術花20%的精力,快速掌握各個領域主流技術80%最重要的部分,然後學習商業、運營、產品,等其他知識成為綜合性人才,並且有利於自己去完整的做一個產品,這是我最感興趣的事。

從react native 轉向全棧開發

react native 階段

在做 react native開發真的造成了極大的痛苦,95%的場景很高效,但剩下5%的問題卻會花費完全超乎想象的精力去解決,主要是和native端通訊、以及觸控衝突、多例項互動,最終不看好這個方向,決定轉向全棧工程師。但還好團隊的人都很厲害,學到了很多技術以及工作方式,並且能做app了,也是一件有想象力的事。

收穫
  1. 具有了app開發能力,也是一件有想象力和有趣的事。

  2. 見識到了厲害團隊的程式碼、以及工作方式,印象最深的如

    • 要求儘量群裡溝通,儘量不許私下溝通,有問題要積極暴露問題
    • 每天下午5點小規模站會同步各方進度
    • 嚴格把控會議時間,並且會議後必須要有結論
    • 對待技術謹慎態度,和對技術風險的謹慎態度,(但我個人感受是,雖然質量得到了保障,但技術過於陳舊、真的影響了效率)
    • 交付儀式感強烈,時間節點卡的很嚴格
  3. 學習能力、學習方法提升

  4. 業務上獨立負責完成了得到app的講座業務線,並且為公司帶來的利潤很不錯

  5. 並行開發了react native元件庫、主題方案等基礎技術

不好的事
  1. 在沒前景的技術方向上浪費了半年的時間
  2. 由於經歷的react-native坑實在是太多,導致加班嚴重,擠壓的個人精力,導致惡性迴圈,導致能力成長有限

全棧開發階段

關於全棧工程師的抨擊有很多,比如樣樣通,樣樣不精;半吊子工程師,等等,但我認為是"全棧"這個稱呼導致如此多的負面評價,聽上去就是啥都會,聽者心裡就會想,我一個技術都專研好久,你啥都會,你咋那牛逼呢?

個人認為全棧,其實說“無棧”的更妥帖一些,只是想正確且最高價效比的方式去解決軟體中遇到的問題,比如:

  1. 有利於降低溝通成本,只是越來越發現溝通成本是巨大的,每個人都對自己的技術足夠了解,知道怎麼做更好,但如果對另一方沒任何概念,無法理解某種方案對他的影響會是什麼樣。往往就不能做出最正確的決定。

  2. 有利於解決工作中遇到的問題。什麼都懂一些,解決一個問題就能從更高的角度去看待,比如一個頁面渲染的慢了,如果眼裡只前端,那麼你可能會去想如何寫函式減少js執行時間、如何分包載入、如何減少包體積等等、但前端優化的再優秀,和在ngix上加一層redis快取相比帶來的收益完全不是一個維度。

  3. 再有就是可以獨立完成一個軟體,自己有一些想法,或者想做一個軟體。如果僅僅有一端的知識,就會卡住,明明往前稍微走幾步,稍微學一下,就可以做到,但還要告訴自己,"我是前端,不能接觸後端",這麼做麼?

做了全棧工程師的感受

總體上感覺一個軟體體系是多麼的龐大,前端不過是其中的一小部分,而前端經常出現爭論幾個明明沒有核心差別的幾個框架誰優誰劣、到底該如何管理資料也是討論的熱題,更有數不勝數的輪子等等,當然我沒有否認前端的價值,前端面臨的數不盡的端,比如h5、pc網頁、小程式、electron、react-native、flutter、瀏覽器外掛等。以及更多的互動控制,後端可以抽象理解為一個input,一個output。確實所有面臨的挑戰都是有其價值的,我只相信市場上那隻看不見的手,大體上講,薪資確實能說明一切。但我的感受是,我在做前端時,真不知道大學學那些東西是幹嘛用的,cpu是怎麼工作的和我有毛關係?記憶體和我有什麼關係?而且記憶體爆了大不了重新整理頁面;不需要了解一個資料在硬碟上是怎麼儲存的,string 和number是如何佔用硬碟空間的,什麼樣的資料結構適合查詢,什麼樣的資料結構適合增刪改。說到優化,演算法、寫法層的優化可以說真的沒什麼意義,只要不寫出明顯錯誤的程式碼,大家寫的在使用者看來大多沒任何差別, 而真正的效能問題又不是靠寫法層面的優化能解決的(因為瀏覽器的效能,作業系統分給瀏覽器的資源、DOM的天然設計導致的效能瓶頸就在那,沒有量化指標的談效能優化都是扯皮);還有一個原因就是,作為客戶端,一個計算終端只為一個使用者服務, 可server端面對的卻是同時到來的成千上萬個計算要求,每一秒執行時間都會被無限放大。

服務端涉及到的模組可參考

後端架構師技術圖譜

其他想法

  1. 玩命加班真的是件不划算的事,很不利於發展,要麼給足夠的錢(可惜錢沒有夠的時候),要麼給出時間,商業不會感動你的付出,只會憧憬未來你會帶來什麼,精力都花在加班救火上,到頭來自己反而貶值了。
  2. 希望有一天能實現言論自由
  3. 如何提升思想深度,一直是在探索的事

成功的事

  1. 脫離了 react-native 客戶端開發,轉向全棧工程師方向
  2. 擁有了能獨立完成軟體的能力,接觸、會簡單使用了很多技術,雖然很多技術棧不夠熟練
  3. 中國大學mooc,刷完了計算機組成原理、作業系統、計算機網路,全部課程;軟體工程、資料結構、資料庫概論、物件導向開發設計部分課程。
  4. 終於不再月光了,有點存款了
  5. 戒掉了王者榮耀
  6. 養了一隻貓
  7. 花很少的錢就擁有了最喜歡的音響+最喜歡的降噪耳機+最喜歡的真無線耳機
  8. 賣掉了無法忍受的垃圾iphone11,換了華為v30 pro 實在是太好用了
  9. 做飯、洗完、擦地、洗衣服、越來越熟練和快速,大量縮短了做這些令人討厭的事的時間
  10. 父母一起來北京旅遊了,很成功

失敗的事

  1. 沒有喜歡上讀書,沒養成讀書的習慣,依舊是強迫自己看書的階段。
  2. 花比較多精力讀了哲學,但覺得並沒有對職業發展、能力、做人做事方式提升有明顯的產出,當然對待他人的情緒和心態,對待各種不確定因素都理解和平和了許多。
  1. 焦慮,大部分狀態就是不愛學習,又感覺沒有利用好時間去吸收新知識就會有負罪感。有時甚至實在不愛學習,但又焦慮,就裝樣子聽音訊、課程,但沒有全神貫注去聽,導致吸收很差。
  2. 活的不自然,人明明就應該有朋友,應該聊天、出遊、促進感情,但這些事在我看來會造成浪費時間的焦慮,導致學也沒學好,玩也沒玩好。
  3. 沒做到早睡早起
  4. 沒有和女朋友出遊一次
  5. 動手實踐不足,聽了大量的課程,對應的實踐卻有時自欺欺人,立的flag,學習必須要有總結產出完全成了放屁
  6. 在打王者榮耀上花了大量時間,而且每次花費大量時間後負罪感爆棚(還好終於戒掉了!)
  7. 沒攢下太多錢
  8. 工作沒有做到很出彩
  9. 戒掉手機依賴症中
  10. 看了很多書、學習上花了很大的精力,卻沒有成功的跡象,自己身上還有一大堆缺點,想改缺真的不知道為什麼這麼難,明明告訴自己不要那麼做,卻面臨突發的具體的事項時,隨口而出的又不是經過腦子思考的正確反饋

新年flag

  1. 不瞎練了,有計劃、正確飲食、作息的方式健身,整體維度一圈
  1. 更多的參與到與人和公司中,這明明是我感興趣的事,卻由於對時間的焦慮,做的不多。
  2. 和女朋友出去旅遊
  3. 盼著房價崩盤,讓我們窮人能有個地方住
  4. 做出一個完整的產品
  5. 寫出100+讚的文章、100+star的專案

掌握框架評估

前端

  • ES6 85分
  • css 勉強夠用
  • html 夠用
  • react 75分
  • vue 30分
  • mobx 60分
  • redux 30分
  • webpack 40分
  • apollo 40分
  • graphql 20分
  • react-native 60分
  • git 40分
  • eslint、babel 40分
  • antd 70分
  • npm 40分
  • puppeteer 20分
  • echarts 20分
  • mock.js 40分
  • 小程式相關 50分
  • gatsbyjs 45分

服務端

  • node.js 30分
  • koa 45分
  • express 30分
  • radis 15分
  • mysql 30分
  • linux作業系統 25分
  • http協議 40分
  • sequelize 40分
  • ts 40分
  • 持續整合 40分
  • 正則 40分