又一年過去了,到了交卷的時刻,在26歲的黃金時期,跑贏了夢想麼?
對待工作的看法變化
經歷了剛畢業時的無知"憤青",經歷過維護"屎山"程式碼,經歷過大牛同事充滿設計、思考的讓人膜拜的程式碼,經歷過摸魚達人的團隊,經歷過大牛團隊,總是在想自己到底適合什麼樣的環境,但現在的想法是,如果環境沒有差到不行,就不要對環境和其他人要求太多,多觀察如何在當前環境下發揮自己的價值,得到別人的信任和口碑。因為優秀是相對的,人精走到哪都發光,如果當前的環境裡都無法脫穎而出,總是都無法脫穎而出原因的。
對待技術看法的變化
我經常會思考,技術的價值到底是什麼?
- 沒聽說過哪家公司因為技術原因,導致活不下去,但為什麼技術又這麼貴呢?
- 曾做過**搶票軟體團隊,程式碼奇爛無比,頁面沒有任何快取,切換頁面從來都是白屏loading、由於技術原因,左滑返回手勢禁掉了、動了這塊那塊出問題等等、CEO拿著美團的產品吐槽我們的產品體驗太差,但為什麼並不影響產品的成功呢?
- 為什麼經常會出現高階管理者並不是技術大牛,而且這貌似是大概率事件?
- 為什麼很少有前端的CTO ?
- 為什麼都在說演算法重要,可平時感覺並沒有用到?
- 為什麼讀框架原始碼成了政治正確?
首先是我並不喜歡寫程式碼,我喜歡健身、和與人交往積極陽光的生活,而不是一個人coding,最初是想做產品經理,但又沒什麼出色背景、以及並不知道產品經理應該學些啥,所以選擇了前端,作為進入網際網路的路線,只不過隨著時間和努力,做的還不錯,而且確實是一個可以給你很多想象力的職位,以及不錯的薪資,所以我並不喜歡沉迷技術,這不是我的希望,我認為,技術除了像華為、阿里雲、網宿、這些賣的就是技術的公司,其他場景下只是服務於商業的一小塊,而很多開發者往往侷限於自己的領域思考,比如怎麼提升渲染時間、如何組織專案、如何提升程式碼質量、怎麼減少的網路請求時間。這些重要麼?當然重要,但這些影響真的很大麼?這可能就要問一問了,比如上面舉到的搶票軟體的例子、再比如我實際經歷,當初我們公司app用react native開發,公司大牛對專案進行了很厲害的設計、尤其快取設計,真的是頁面切換毫無白屏,很牛。但直到我我仔細觀察了另一款我經常用app後,才發現原來它沒有做這樣的快取,體驗差距太明顯了。但這在我做開發者之前我是毫無感知的,雖然技術差的公司沒有最好的解決方案,但找到個能用的解決方案還是不難的。所以我選擇的方向是,每個技術花20%的精力,快速掌握各個領域主流技術80%最重要的部分,然後學習商業、運營、產品,等其他知識成為綜合性人才,並且有利於自己去完整的做一個產品,這是我最感興趣的事。
從react native 轉向全棧開發
react native 階段
在做 react native開發真的造成了極大的痛苦,95%的場景很高效,但剩下5%的問題卻會花費完全超乎想象的精力去解決,主要是和native端通訊、以及觸控衝突、多例項互動,最終不看好這個方向,決定轉向全棧工程師。但還好團隊的人都很厲害,學到了很多技術以及工作方式,並且能做app了,也是一件有想象力的事。
收穫
-
具有了app開發能力,也是一件有想象力和有趣的事。
-
見識到了厲害團隊的程式碼、以及工作方式,印象最深的如
- 要求儘量群裡溝通,儘量不許私下溝通,有問題要積極暴露問題
- 每天下午5點小規模站會同步各方進度
- 嚴格把控會議時間,並且會議後必須要有結論
- 對待技術謹慎態度,和對技術風險的謹慎態度,(但我個人感受是,雖然質量得到了保障,但技術過於陳舊、真的影響了效率)
- 交付儀式感強烈,時間節點卡的很嚴格
-
學習能力、學習方法提升
-
業務上獨立負責完成了得到app的講座業務線,並且為公司帶來的利潤很不錯
-
並行開發了react native元件庫、主題方案等基礎技術
不好的事
- 在沒前景的技術方向上浪費了半年的時間
- 由於經歷的react-native坑實在是太多,導致加班嚴重,擠壓的個人精力,導致惡性迴圈,導致能力成長有限
全棧開發階段
關於全棧工程師的抨擊有很多,比如樣樣通,樣樣不精;半吊子工程師,等等,但我認為是"全棧"這個稱呼導致如此多的負面評價,聽上去就是啥都會,聽者心裡就會想,我一個技術都專研好久,你啥都會,你咋那牛逼呢?
個人認為全棧,其實說“無棧”的更妥帖一些,只是想正確且最高價效比的方式去解決軟體中遇到的問題,比如:
-
有利於降低溝通成本,只是越來越發現溝通成本是巨大的,每個人都對自己的技術足夠了解,知道怎麼做更好,但如果對另一方沒任何概念,無法理解某種方案對他的影響會是什麼樣。往往就不能做出最正確的決定。
-
有利於解決工作中遇到的問題。什麼都懂一些,解決一個問題就能從更高的角度去看待,比如一個頁面渲染的慢了,如果眼裡只前端,那麼你可能會去想如何寫函式減少js執行時間、如何分包載入、如何減少包體積等等、但前端優化的再優秀,和在ngix上加一層redis快取相比帶來的收益完全不是一個維度。
-
再有就是可以獨立完成一個軟體,自己有一些想法,或者想做一個軟體。如果僅僅有一端的知識,就會卡住,明明往前稍微走幾步,稍微學一下,就可以做到,但還要告訴自己,"我是前端,不能接觸後端",這麼做麼?
做了全棧工程師的感受
總體上感覺一個軟體體系是多麼的龐大,前端不過是其中的一小部分,而前端經常出現爭論幾個明明沒有核心差別的幾個框架誰優誰劣、到底該如何管理資料也是討論的熱題,更有數不勝數的輪子等等,當然我沒有否認前端的價值,前端面臨的數不盡的端,比如h5、pc網頁、小程式、electron、react-native、flutter、瀏覽器外掛等。以及更多的互動控制,後端可以抽象理解為一個input,一個output。確實所有面臨的挑戰都是有其價值的,我只相信市場上那隻看不見的手,大體上講,薪資確實能說明一切。但我的感受是,我在做前端時,真不知道大學學那些東西是幹嘛用的,cpu是怎麼工作的和我有毛關係?記憶體和我有什麼關係?而且記憶體爆了大不了重新整理頁面;不需要了解一個資料在硬碟上是怎麼儲存的,string 和number是如何佔用硬碟空間的,什麼樣的資料結構適合查詢,什麼樣的資料結構適合增刪改。說到優化,演算法、寫法層的優化可以說真的沒什麼意義,只要不寫出明顯錯誤的程式碼,大家寫的在使用者看來大多沒任何差別, 而真正的效能問題又不是靠寫法層面的優化能解決的(因為瀏覽器的效能,作業系統分給瀏覽器的資源、DOM的天然設計導致的效能瓶頸就在那,沒有量化指標的談效能優化都是扯皮);還有一個原因就是,作為客戶端,一個計算終端只為一個使用者服務, 可server端面對的卻是同時到來的成千上萬個計算要求,每一秒執行時間都會被無限放大。
服務端涉及到的模組可參考
其他想法
- 玩命加班真的是件不划算的事,很不利於發展,要麼給足夠的錢(可惜錢沒有夠的時候),要麼給出時間,商業不會感動你的付出,只會憧憬未來你會帶來什麼,精力都花在加班救火上,到頭來自己反而貶值了。
- 希望有一天能實現言論自由
- 如何提升思想深度,一直是在探索的事
成功的事
- 脫離了 react-native 客戶端開發,轉向全棧工程師方向
- 擁有了能獨立完成軟體的能力,接觸、會簡單使用了很多技術,雖然很多技術棧不夠熟練
- 中國大學mooc,刷完了計算機組成原理、作業系統、計算機網路,全部課程;軟體工程、資料結構、資料庫概論、物件導向開發設計部分課程。
- 終於不再月光了,有點存款了
- 戒掉了王者榮耀
- 養了一隻貓
- 花很少的錢就擁有了最喜歡的音響+最喜歡的降噪耳機+最喜歡的真無線耳機
- 賣掉了無法忍受的垃圾iphone11,換了華為v30 pro 實在是太好用了
- 做飯、洗完、擦地、洗衣服、越來越熟練和快速,大量縮短了做這些令人討厭的事的時間
- 父母一起來北京旅遊了,很成功
失敗的事
- 沒有喜歡上讀書,沒養成讀書的習慣,依舊是強迫自己看書的階段。
- 花比較多精力讀了哲學,但覺得並沒有對職業發展、能力、做人做事方式提升有明顯的產出,當然對待他人的情緒和心態,對待各種不確定因素都理解和平和了許多。
- 焦慮,大部分狀態就是不愛學習,又感覺沒有利用好時間去吸收新知識就會有負罪感。有時甚至實在不愛學習,但又焦慮,就裝樣子聽音訊、課程,但沒有全神貫注去聽,導致吸收很差。
- 活的不自然,人明明就應該有朋友,應該聊天、出遊、促進感情,但這些事在我看來會造成浪費時間的焦慮,導致學也沒學好,玩也沒玩好。
- 沒做到早睡早起
- 沒有和女朋友出遊一次
- 動手實踐不足,聽了大量的課程,對應的實踐卻有時自欺欺人,立的flag,學習必須要有總結產出完全成了放屁
- 在打王者榮耀上花了大量時間,而且每次花費大量時間後負罪感爆棚(還好終於戒掉了!)
- 沒攢下太多錢
- 工作沒有做到很出彩
- 戒掉手機依賴症中
- 看了很多書、學習上花了很大的精力,卻沒有成功的跡象,自己身上還有一大堆缺點,想改缺真的不知道為什麼這麼難,明明告訴自己不要那麼做,卻面臨突發的具體的事項時,隨口而出的又不是經過腦子思考的正確反饋
新年flag
- 不瞎練了,有計劃、正確飲食、作息的方式健身,整體維度一圈
- 更多的參與到與人和公司中,這明明是我感興趣的事,卻由於對時間的焦慮,做的不多。
- 和女朋友出去旅遊
- 盼著房價崩盤,讓我們窮人能有個地方住
- 做出一個完整的產品
- 寫出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分