工作4年多才學會怎麼去讀原始碼,可悲麼?
前言
最近慢慢的嘗試去看spring的原始碼,以前都是隻會用就行了,但是越是到後面,發現只是懂怎麼用還不夠,在面試的時候也會經常被問到一些開源框架的原始碼問題,即使在網上各種百度,當時也能回答出來了也是很皮毛,不痛不癢的回答。想問下各位是怎麼去讀原始碼的?
HOW
國內的資訊產業環境不成熟,舉個最明顯的例子,目前程式設計領域的從業人員超過半數都是透過培訓機構出來的,甚至那些計算機專業畢業的學生,也不得不透過幾個月的技能培訓,才能找到工作,那我上了四年的計算機專業學了有什麼用?透過剖析計算機從業人員接受的基礎教育結構,市場環境,還有企業需求,最終得到的結論是,一個標準 IT 企業需要具備的條件如下:
計算機底層研發能力
企業應用程式設計
推向市場的產品
相對於這三項對位的計算機從業人員團隊需要的技能如下:
計算機底層知識
企業應用邏輯程式設計
產品定位與規劃能力
從業人員的個人能力獲得途徑如下:
學校的資訊科技基礎教育(底層知識)
培訓機構 (程式設計能力)
企業工作經驗(產品能力,也就是專案經驗)
綜合國內基礎教育結構,市場環境,還有企業需求,可以看出,培訓機構是國內資訊科技教育缺失的產物,簡單來說就是學校只教基礎,而企業需要高層程式設計能力,所以培訓機構就是在這樣的環境下產生的。一句話總結本質原因就是:
產學脫鉤,導致學校人才供給無法滿足市場企業需求。
說明了原因,再來看另一個問題,寫程式碼的都知道有 “一致性” 的概念,大了說有架構一致性,小了說有程式碼風格一致性,看前人的程式碼看著頭疼就是因為你和寫程式碼的人設計,程式碼風格都不一致,所以會有衝突。
那麼對於我們從小學到大學的整個教育過程這個大專案來說,其實存在巨大的不一致性,舉個例子,你的小學老師教了你們六年,對學生的能力,特點是最熟悉的,可是升入初中之後,換了初中老師,這個過程中唯一留下能讓初中老師用的 “交接文件” 就是以前的分數,這樣的情況下,因材施教,因地制宜,從何而來?非要一對一的提高成績的話,那麼之前小學老師做的工作,初中老師要重複做一遍,才能對學生充分了解,並且初中老師只有三年時間,還沒算上中間換老師的情況。過了初中之後,同樣的情況會在高中,大學老師的身上重複發生,大家都在重複造輪子,就是因為一個求學者整個十幾年的教育流程中的設計和把控是有缺陷的。
這還是在學校教育專案內的問題,那麼像畢業之後參加培訓這種專案外的情況如何呢?這個影響就嚴重了,在沒有人引導和告知的情況下,培訓生普遍不知道培訓機構的本質是大學教育過程的延伸,幾乎所有的培訓生都是覺得,培訓就是用來找工作用的,潛在邏輯是,參加培訓,培訓機構包分配,然後我就能找到工作了。這種情況下,在培訓機構學到的東西與學校知識的對接,不一致性就極其巨大了。
透過以上分析,終於可以說回為什麼工作四年才會看程式碼這個問題。從培訓出來找到工作開始,之前分析的1,2,3條件中的2,也就是程式設計能力,已經在程式設計機構初步獲得了,3條件,也就是企業產品需求,需要在長時間的工作當中去獲得相關的感覺或者產品意識。當工作個五六年,隨著自身職稱的提高,遇到的問題也越來越難,面對企業的高併發,高訪問這些問題,已經不能用培訓機構獲得的 CURD 來解決了,這個時候學校底層知識才迎來了應用的機會。這個時候,才會回顧以前的職業生涯,總結經驗,然後把學校的底層知識撿起來,去解決 CURD 解決不了的難題。這個時候,才懂得了程式碼的深層意義。
可以看出,理想的情況應該是,大學堅實的底層技術,配合中間層的程式設計能力,然後獲得高層的企業工作能力,這個良好的架構設計最終因為現實原因割裂開了。底層是學了,但是沒有用武之地,學生畢業之後沒有在學校獲得程式設計能力,面臨的是 “斷崖式的成長”,是的,本來應該是平緩過度到社會,結果卻是斷崖式的,中間缺失的一部分,將在生活中,透過鼻青臉腫式的棍棒教育,在社會這所大學裡獲得。
大家讀到這裡,是不是覺得生活黑暗,要怨天尤人,並且抱怨為什麼有這樣的教育設計?這裡要說一下的是,先有雞還是先有蛋這個問題,是一個難題,好的學生是好教師教出來的,但是好的教師是哪裡來的?如果沒有好老師,那麼教出來的學生是什麼樣的?將來這些學生成了老師又會是什麼樣的?這樣豈不是惡性迴圈?要知道,教育問題,在世界上都是個及難解決的問題。並且教育問題不是靠個人能夠解決的問題,這需要國家,社會,企業,家庭,教師,學生等等一起努力去改革,家長簡單的把學生扔給學校,是沒有辦法100%培養出高素質人才的。我國目前還只是社會主義初級階段,國家的重中之重是經濟建設,有了錢,才能搞教育,除了教育,還有醫療,國防,還要抵禦西方的惡意抵制。用錢的地方那麼多,錢包卻那麼小,所以要辯證客觀的看問題。一個企業在資金有限的情況下還會有所權衡,更不用說一個16億人的大企業,我們所要做的,就是不灰心,充滿希望的繼續樂觀生活,只有國家強盛,才有我們生活質量的進一步提高。
總結
最後說一下怎麼避免工作很久之後才發現底層知識的缺失吧,不廢話,直接給出如下:
未雨綢繆,不要太功利主義,不要覺得之後能賺錢的知識才是要學的知識,平時多看些編譯原理,數學方面的知識,不是計算機專業的同學可以去搜一下國內外計算機專業名校的課程安排,然後去慢慢學習
多寫程式碼,沒有時間看底層,就反向去學底層,以程式碼為手段,遇到問題就深挖原理,在程式設計中深入底層,熟悉原理
培養全棧思維,全棧不是一個崗位,而是一種思維,可以用一種系統的觀點讓你重新認識自己目前的工作與崗位,獲得全棧的簡單方式就是多用新技術,然後橫向對比,最終回到自己目前所用的語言,也就是跳出語言學語言
尋求大神幫助,大神的經歷與能力都是經過實踐驗證的,大神的能力提升方法也一定是高效率的,透過大神的提點,能夠避免許多走彎路的情況。
多讀人文歷史類書籍,在團隊中工作,沒有好的情商,好的人文情懷,同事關係一定會出問題,技術只是實現產品的手段,產品之外還有廣闊的知識領域與人生樂趣,不要太封閉自己,多讀好的小說和書籍,你會發現一片不一樣的天地。
最後一點,對於以後想要成為大神的同學也是最重要的一點:警惕碎片化方式。不管是生活還是工作,大眾的生活習慣已經趨向於碎片化,這是社會高速發展的結果,而程式設計需要的核心能力卻是與碎片化相對的深度思維方式,不要小看碎片化,長時間在這種方式下生活,會喪失大腦的深度思考能力。是不是看超過5分鐘以上的長文會有頭暈不適的情況,是不是短影片app看的停不下來,有多久沒有讀一本超過300頁的長篇書籍了?適度的娛樂是沒問題的,但長時間如此的生活方式,會使大腦處理資訊的能力退化。未來 AI 浪潮是大勢所趨,國家也制定了相關的人工智慧戰略,而 AI 時代的程式設計從業者,需要的就是深度的,長時間的思考能力。 你可以不學底層,你可以繼續靠 CURD 就能月入過萬,但寒冬來臨時,如果被裁了,那就不能怨社會了。如今都在談論現在的寒冬有多可怕,又有多少人看到 AI 領域百萬難求一人的情況呢。這一冷一熱的兩重天氣,只有系統化思維的人才能看到原因,也只有這樣的人,將來的路才會越走越寬。寒冬不可怕,在寒冬裡沒有生存能力,才是最可怕的。
來源/開源中國
作者/麥克斯,新de程式碼
宣告:本文僅代表作者個人觀點,版權歸作者所有;如有需要請聯絡後臺(歡迎轉發到朋友圈~)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545820/viewspace-2636075/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 工作5年的Java程式設計師,才學會閱讀原始碼,可悲嗎?Java程式設計師原始碼
- 怎麼閱讀原始碼【除錯觀察原始碼】原始碼除錯
- 交友原始碼中即時通訊怎麼工作的?原始碼
- 學Python能幹什麼工作?工作前景怎麼樣?Python
- 為什麼會辭去Netflix的45萬美元工作? - Lin
- 為什麼要閱讀原始碼原始碼
- GTID 怎麼過去。
- petite-vue原始碼剖析-為什麼要讀原始碼?Vue原始碼
- 《Linux是怎麼樣工作的》讀書筆記Linux筆記
- 帶你讀 MySQL 原始碼:where 條件怎麼過濾記錄?MySql原始碼
- CRUD搬磚兩三年了,怎麼閱讀Spring原始碼?Spring原始碼
- Linux運維應該怎麼學?去哪裡學啊?Linux運維
- 冴羽答讀者問:怎麼平衡工作與生活?
- LinkedHashMap,原始碼解讀就是這麼簡單HashMap原始碼
- 閱讀原始碼後,來講講React Hooks是怎麼實現的原始碼ReactHook
- 你會怎麼去評估一個測試的能力?
- 「試著讀讀 Vue 原始碼」new Vue()發生了什麼 ❓Vue原始碼
- 工作太忙沒時間學習,怎麼辦?
- 閱讀原始碼很重要,以logback為例,分享一個小白都能學會的讀原始碼方法原始碼
- 扎心!“我學了六個月 Python,怎麼還是會找不到工作”Python
- 怎麼修改網站內容原始碼網站原始碼
- 帝國cms原始碼怎麼檢視原始碼
- 異常是什麼和怎麼去處理!--
- 【Flink】Deduplicate 去重運算元原始碼解讀原始碼
- 精讀《原始碼學習》原始碼
- 初學者怎麼學懂前端?Web前端原始碼、框架學習路線圖前端Web原始碼框架
- Python原始碼怎麼讀,聽聽頂級爬蟲工程師的建議Python原始碼爬蟲工程師
- 學會閱讀原始碼後,我覺得自己better了原始碼
- 為什麼建議你常閱讀原始碼?原始碼
- 我們為什麼要閱讀webpack原始碼Web原始碼
- 在成都的怎麼快速學會JavaJava
- 寶付敲寫Java怎麼自學找工作Java
- 新媒體會涉及哪些工作內容?新媒體運營該怎麼學
- 【菜鳥讀原始碼】halo✍原始碼學習 (一)原始碼
- 新手學Web前端有哪些方法?該怎麼去規劃學習?Web前端
- 系統設計(System Design)應該怎麼去學習?
- 選redis還是memcache,原始碼怎麼說?Redis原始碼
- 想看原始碼但是無從下口怎麼辦?原始碼