03.03 身為程序員的你,用了多長時間學習研究某一框架、軟件,才達到該領域技術專家的水平?

合浦仔林哥


從來不覺得技術專家是研究哪個框架,那種設計語言就可以。①你需要多接觸大項目,你才有可能理解什麼叫“”業務需求不是你的技術需求”。②獨立思維能力,能從複雜的業務場景中梳理出一定的邏輯順序,預見一些別人想不到的業務場景,之後提交不同領域去討論,這個過程中,你會體會什麼叫“說人話”。③分水嶺。如果你執著技術,你會發現,想做專家,你需要重新學習你大本時候最討厭的一門課程,“高等數學”。如果你轉向業務實現,你會發現,想做專家,你可能要不斷深入現實中的業務場景,甚至掃垃圾這種最低級的工作,你都應該有切身的體驗才可以。


Echo1980


我在做開發的頭三年的目標,是讓自己成為垂直業務方面的開發熟手。

4-5 年,我讓自己成為了專家,人家有問題了常常來問我,業務和架構上我也有自己的見底與把握。

6-8 年,梳理業務、做架構、帶團隊,總結和提煉技術能力與思想。

從開發生涯伊始,學習方法論、各種思想、最佳實踐(包括看源代碼),嘗試一些新東西,這個階段漫長而有彈性,不斷實踐與總結,行事方式固化為習慣,最大的收穫就是開始做某一項事情時,心裡有底,有思路有方向有方法,不會抓瞎,少走彎路。

學習代碼的人和編寫代碼的人如果不在一個理解層面,閱讀並不能幫到你什麼,更不能說通過了解了代碼的實現就成為了這個領域的專家。瞭解代碼實現頂多只能應付面試問題,當別人問題為什麼的時候,答案並不在代碼實現當中。

閱讀代碼的精髓在於你完全瞭解了作者在領域中面臨的問題,並在紛繁複雜的代碼邏輯中抓出了作者解決這個問題的關鍵。自稱熟讀過的人,其實少有人能做到

這個收穫很難用量化來衡量,但就像蓄水池,越蓄越多的感覺。

所以題主你提的三個“明白”,不是說不重要,但太死板,天天坐在那裡看源代碼看書是看不出什麼來的,必須定好眼下要達標也可操作的 Flag,結合業務去追求跟實現,不斷實踐與總結。

天天看框架源碼,即使你寫出一個框架來,在業務實現方面你可能仍是 newbie;你就算花再多時間在編譯器知識上,但是業務跟編譯器毫無關聯,你的編譯器知識也不可能提升。

總之先考慮好第一步——定好眼下要達標也可操作的 Flag,結合業務去追求跟實現,不斷實踐與總結。想太多會提升焦慮感,虛無還沒好處,目標定得太完美就是失敗。


木子羽辰


從這個問題的描述來看,顯然是有一個前提的——程序員。

那麼針對“程序員”這個稱號,顯然還應該再從兩個方面來將問題分解。


一、初級程序員

作為一個剛剛入行不久的初級程序員,他自身可能對某一個編程語言的編程語法和 API 比較熟悉,但是對基於這門語言實現一些實際的項目和應用,可能還停留在瞎子摸象或者井底青蛙的層面(這裡沒有貶義,只是做一個比喻)。那麼這種情況下,要研究某一個框架、軟件,他就會缺少很多其他層面的知識、技能、經驗的儲備。比如你只是一個初級的前端開發者,剛剛熟練編寫 HTML/CSS/JavaScirpt前端 Web,那麼要研究 nginx、Node.js、Vue.js、Angular 4+、Flask 等等,可能前期就會顯得比較吃力。因為這些軟件、平臺、框架裡,包含了關於負載均衡調度、request/response、依賴注入、Component、Python裝飾器、路由、重定向等基礎知識。

那麼要達到該領域的技術專家的水平,因為這位程序員可能平時還要上班,所以在保持勤奮的前提下,大約需要 3 個月左右的業餘時間完整的學習有關的知識。

但是僅有這些還不夠,還不能形成你的能力。另外還需要 2~3 個月的時間,好好利用新的框架去開發實現若干個項目,而且這些項目還不能太簡單,必須要有一定的複雜度。

只有這樣,你的開發經歷才能更全面的覆蓋到這個框架的更多的方面,才能稱之為技術專家。


二、中高級程序員

這類人群已經在程序員領域有了一定的工作年限,也有了一定的開發經驗。他們已經掌握了一些框架和軟件等技術。那麼他們面對新的框架和軟件,會根據自己以往的經驗和技術邏輯去領會新框架的原理。古語中對於一項技能有“道”與“術”的區別。那麼這些中高級程序員對新框架的“道”的方面已經瞭然入心,因為這些新的框架其實與他們以前掌握的那些在邏輯架構和運行原理方面都是很相似的,他們需要學習的僅僅是原理上的不同,還有在編程語法、實現方式上的不同而已,那麼這就是“術”的層面,而“術”是很容易掌握的,就好比是從模仿到掌握的過程。


野生動物Frank


從事軟件開發十幾年了,對於程序員的工作有一點自我的見解,首先程序員的工作屬於一個技術活,技術類的工種需要時間的積累,但要達到某個領域的技術專家,首先是時間層面的積累,但僅僅是積累是不夠的,不是達到多少年一定成為技術的專家,成為某個領域的佼佼者,時間只是其中一個因素。

如何成為某個技術領域的專家?

牢固的基本功。要達到某種境界沒有牢固的基本功做鋪墊幾乎是不可能的事情,程序員要說到基本功其實是一種很籠統的說法,基本功不僅僅是編程語言的語法,還包括常見的一些編程技巧,還包括一些基本的算法基礎,不同的人對於基礎的理解也不相同。對於初學者理解基礎就是編程語言的語法,從心理上覺得編程語言的語法搞定了,但在真正意義上的編程的時候,只是掌握基本的語法是實際的編程經驗需要在項目中提煉。

如果放在技術專家的要求來定義基本功又會是另外的一個境界,從心理上要認識無論哪個層次的程序員都要重視基本功的積累,在平時工作之餘要拿出時間來溫習基本功,按照一個標準的程序員的要求看認識基本功,常見的項目有編程語言的語法,項目操作過程中遇到的一個困難的總結匯總,數據結構基礎算法,常見的編程場景處理能力,這些都屬於編程基本範疇。

編程框架能力。這點就足夠拉開了和普通程序員的區別,之所以能夠在一個行業內成為頭部的玩家,就需要具備一定的高層設計能力,這種能力不僅僅是簡單的模塊設計能力,還需要具備整個系統的設計開發能力,有些程序員做一輩子都未必真正設計搭建過一個框架,所以不能簡單的認為能夠設計好一個模塊的框架就能把事情做得非常利索了,不能簡單的認為。

其實框架能力在行業內講就是造輪子的能力,當然不是每個人在自己的技術生涯中都有設計框架的機會,如果能夠趕上一次也是不錯的機會。

堅韌不拔的意志。這點主要是在精神層面的,不是每個人都能在一個領域長期堅持不懈的待下去的,能夠數十年如一日堅持做好一件事都是對人毅力最大考驗,能夠一直堅持做這件事人數已經不多了,如果在加上做的出色的數量將會變得更少了,所以講工匠精神不是每個人都能堅持做到最後的。

要想成為程序員裡面某個領域的專家,不是僅僅靠時間來積累出來的,但時間的積累達到的一個典型的基礎,不要覺得入行的時候自己的基礎不好,但時間長了堅持的長了,常見的編程模式或者套路也都能掌握清楚了,不是誰天生就是某個項目的專家,什麼事情就怕一個堅持的勁頭,一股不服輸的精神,堅持的時間長了在理論上還能縮減成為專家的次數,希望能幫到你。


大學生編程指南


這個問題,我想起一個博士的話,一門模式的編程語言,一個月我就入完門了。現在只談我自己的情況,應該就一個月左右的時間,說不上達到專家級,超越70%人應該是可以的,夠用了。如果我想學新知識,先買書,再看入門博客知識點,動手實驗實驗,找人交流交流。作為程序員,寫的代碼要符合設計模式,程序寫給CPU看,更重要的是寫給未來的自己、同行看,大家的技術才能一起上一層樓。


積問累識


邊學邊在項目中使用,半年已經足夠了。不實際使用,可能十年也就瞭解的程度,所以,能動手就別bb,跑一跑什麼知識都瞭解了。生產上出了問題,部門老總在你背後看著解決,幾次你就成專家了。



暖寶寶爸


根據通常的1萬小時定律,一般要成為某個行業裡的專家,需要在這行業裡工作1萬個小時。但是軟件行業不一樣,他是一個迭代更新非常快的行業。特別是系統架構。要是你研究一個系統框架1萬個小時,那麼這個框架說不定已經過時了。

學習某一個技術框架,成為這個框架的專家水平。我覺得因人而異。有些技術基礎紮實的人,或者本身就是其他技術架構的專家,那麼他學習一個新框架,估計1,2個月就差不多了。如果是一個有潛力的小白,那麼我個人認為要成為該領域的專家,至少需要2-3年的潛心研究。還要通過項目的實踐才能成為技術專家水平。當然如果你只是拿著框架在使用,不潛心研讀他的底層代碼,那麼你至多能成為一個熟練的老手,很難成為專家。這是個人的淺見,歡迎批評指正


滬皖新世界


因人而異,如果有基礎,數據結構+算法基礎好,學習框架很快,1-3個月即可熟練運用,而如果缺乏基礎可能得半年、一年。從我自身來講學習某一框架需要學習1個月到1年不等,再實踐3年,才可以說是非常熟悉,瞭然於胸了。

當然也看框架和軟件本身的複雜度,越複雜自然學起來越難,同時框架跟某特定業務有關,如果你從事這個方向自然就容易熟悉。比如做Web要熟悉Spring全家桶、Nginx,做大數據熟悉Hadoop系列,做ai熟悉PyTorch或TensorFlow等。框架或軟件是分領域的,如果所從事的非這個方向,往往學起來很費勁。但如果是同一方向,是手到擒來,輕鬆無比。


刀法如飛


框架就是別人給你制定的條條框框,學會了就像工廠的流水線上的操作工一樣會幹活了,不過換一個流水線你還得掌握另一些條條框框,專家、架構師就是給你制定條條框框的人。很多程序員以掌握某個架構然後自稱架構師然後指點江山,指責其他不會某個架構的人,心中充滿了偉大感,是不是很可笑;如同一個生產線上的操作工自稱掌握了這條生產線。


大司馬劍平


如果是已經有編程經驗的話,學習能框架,特別快!!

看你每天花多少時間!

比如每天你花三個小時到四個小時左右,你大概一個月,就能掌握一門比較成熟的框架!

假如說你每天花半個小時到一個小時,你可能得2到3個月,甚至四個月,才能熟練的掌握一門框架,並利用它來開發!

如果是有有3到5年工作經驗的朋友,他學習一門新的語言,或者新的框架可能1到2個星期,基本上就能應用了!





分享到:


相關文章: