當前位置:  首頁  >  PHP資訊  >  職場攻略

怎樣成長為技術大牛,幾個細節你需注意

近幾年,除了學技術之外,也花了些時間帶技術團隊,陸陸續續和大家聊了許多關于技術、管理以及成長方面的話題。聊天總歸比較零散,今天以文字的形式,把我的所思、所想做一下系統的整理和總結,也許,對正在徘徊的你有所幫助呢?

近幾年,除了學技術之外,也花了些時間帶技術團隊,陸陸續續和大家聊了許多關于技術、管理以及成長方面的話題。聊天總歸比較零散,今天以文字的形式,把我的所思、所想做一下系統的整理和總結,也許,對正在徘徊的你有所幫助呢?

我眼中的技(手)術(藝)人成長曲線

成長曲線

如果起點是進入一個行業的小白,那么到成為這個行業的專家,至少經歷三個階段:

1 、知識的原始獲取階段:剛進去一個行業,我們都是“學徒”,不懂的東西很多,每天只要稍微動動手、動動腦就可以感覺到不錯的成長。畢業工作后開始融入一個團隊,開始參與項目的開發,有師傅帶、有同事學,很多時候你不想學到東西都很難。所以,在這個階段,是自身技術的爆棚期,是一個快速成長的階段。

     2、知識的結網積累階段:八年抗戰,經歷過第一個階段以后,大家都有了自己的看家本領,技術足以應對日常的工作和研究。每天忙忙碌碌,但是感覺都是重復性的工作,“收獲很小”。即使繼續學習,發現每天研究和接觸到的新知識很多都是重復性的內容。渴望伴隨著迷惘可能是這個階段的特點,從“靈魂深入”隱約感覺到自己應該再多學點東西,但是每次付諸行動感覺都收獲頗少,所以開始懷疑和迷惘。

其實,大家忽略了這個階段最本質的特點:由于知識的廣度加快,知識的深度速度“變慢”,但是廣度的知識,往往給人一個“膚淺”、“無用”的幻 覺。“廣”在某個程度上就是“深”,看似無關的經歷經驗、看似無關的知識點,其實,在經歷一個長期的獲取、思考、吸收之后,突然有一天,點成線成網,人有了一種“大徹大悟”的感覺,迅速進入第三個階段。

3、知識的沉淀升級階段:大徹大悟之后的升華,開始一段新的快速成長的階段。

曲線只有最低點,沒有最高點,所謂“心有多大、世界就有多大”。做為一名技術人員,時刻清楚自己當前的位置。另外,我覺得這個曲線除了對技術人員適用,應該同樣適用于其他行業,共勉。

技術大牛成長史

我會在每個階段,根據我切身的經驗,聊一下我的想法。

階段一:知識的原始獲取

這個階段,就是讓自己擁有一技之長,可安身立命。簡單點說,就是“我有別人認可、不可被替代的價值”! 

做為技術人員,當然首先體現在這幾個方面:

至少熟悉一門編程語言。不管這個語言是啥,JUST DO IT,把它搞熟,至少做到寫代碼得心應手,基本語法、高級技巧了然于胸!很多人總喜歡對(糾)比(結),A語言好還是B語言好,這就像,你看到有人開奔馳,有人開寶馬,所以你就開始糾結以后我到底是往奔馳的方向努力,還是往寶馬的方向努力?買奔馳還是買寶馬,糾結這個,倒不如去糾結:今天我是開奔馳,還是開寶馬!

技術鷹擊長空

至少熟悉一個數據庫。不管是MySQL、SQLite還是PostgreSQL,還是其他的RDB。熟悉不僅僅是可以寫出“別人看不懂的SQL語句”,更多體現在你對這個數據庫的了解和駕馭程度,例如性能調優、索引優化、庫表設計、數據庫設計的原理以及最佳方案。熟悉使用各種項目協作工具。這是團隊合作的基礎,例如溝通IM工具、代碼管理工具、任務追蹤工具、Wiki/Markdown文檔編輯工具,等等等等。

重要的是,不管是前端、服務端還是客戶端,讓自己成為某一個領域的能手!

如果做到了這一步,只能說明你僅僅勝任一個優秀的軟件開發工程師。我覺得還遠遠不夠,最多只能說,這個階段完成了一半。另外一半更重要的就是自己的修行:

blob.png

自己知識結構的橫向發展。 如果你只熟悉一門語言,或者你用“熟悉一門語言的眼光”去看“另一門僅僅了解的語言”,就鼓吹說“PHP是世界上最好的語言”,只能說你是無知的井底之蛙。我們需要帶著一種對比的眼光,去了解多種語言,知道每種語言的優缺點以及適用場景,做到能夠根據產品特點、交付周期、團隊特點、性能等多方面考量下的語言和框架選型。同時,關系型數據庫之外,開始接觸和了解熱門的Redis、MongoDB等NoSQL數據庫,了解不同的數據庫的優缺點和使用場景。另外,讀優秀的代碼!讀優秀的代碼!讀優秀的代碼!至少你得讀過兩個比較熱門的MVC的框架源碼吧?“好奇”驅動,我和我的團隊常常說的一句話就是,代碼里所有你覺得比較“神奇”的地方,都值得你通過閱讀源碼把神奇的魔法挖出來。例如,一個請求的URL如何映射到你的action上?映射到你action上的context是如何被創建出來的?有一些工具方法不經過初始化、不需要引用你就能直接用?當你靠“腦補”不能補上這塊空白的時候,你需要挖進去,直到下次看到類似的神奇你腦補就能想明白。

blob.png

個人能力的全面發展。 開始扛起項目組里的攻關大旗,著手解決一些別人棘手和不能解決的問題,“解決難題”才能拉開距離,這是加分題!(把項目做出來,其實是一件非常簡單的事情,持續的維護和運維,才是一件非常困難的事情,個人的能力的深挖,也體現在這里)。另外,全面發展還體現在不斷提高自己的溝通能力(溝通的閉環原則),可以參見我另一篇文章《和開發組長聊聊溝通》,可以帶團隊、以項目負責人的角色制定項目計劃、執行項目計劃并完成項目或者產品的交付。

這個階段,持續1年還是5年還是更長,在我看來,決定因素不是智商,而是你到底為了獲得這樣的一技之長付出多少時間和汗水。如果,IT是你終身的職業,那么,榨干你智商之外的潛力,每個人需要付出的努力是一樣的,你唯一需要決定的,是在剛畢業、精力旺盛的頭幾年就把自己的潛力挖掘出來,還是拉長戰線用個十年八年?戰線拉的越長,投入產出比一定越低,辛苦程度一定越來越高。如果到成家之前,你都達不到第一個點,那以后工作帶給你的只有痛苦,任何新的技術的出現,對你帶來的都只是痛苦。

blob.png

這套理論或者說想法,我剛畢業的時候也不知道,也沒人告訴我要多努力多努力。只是我覺得我比別人的起點低,同時也算比較幸運,在我最有精力和時間的時期,在工作、技術成長上付出了幾乎全部的努力,來拉短這個差距: 
讀各種書籍:不管是在項目中用到哪種語言,幾乎看完了相關語言的經典書目看各種代碼:項目里相關不相關的代碼,通讀;用到的開源代碼,第一件事就是讀完源碼再動手使用寫各種代碼:嘗試的改進通讀的代碼,工作之外也練手了好多代碼

階段二:知識的結網積累

這個階段,更像是人到中年,不能靠拼體力、拼“編程代碼量”、拼時間來提高自己,而是漫漫長路上,練就內功大法。在我看來,主要包括兩個方面的修煉:

抓住機會拓寬自己的視角(擴大知識面)。機會可能是你接下來幾年參與或者主導的項目以及積累的項目經驗,也和你工作之外自己的努力有關。參與不同的項目、接觸不同的客戶,對一個人的影響和改變,“經驗”只是其中一個很小的方面,更大的影響則是你看問題的視角。不同的項目了解不同的行業,把工作、項目、產品做到自己能力的至高點,成為某個行業的專家(達到力所能及的高度);接觸不同的客戶,和不同風格的客戶合作、溝通交流,做到從容面對和善的、虛偽的、蠻不講理等等各色客戶,學會站在客戶的角度思考問題、講客戶聽得懂的語言、上下管理好客戶的預期;開始意識到團隊的重要性(你真的懂團隊嗎?),能夠架構團隊結構、成員的成長,帶出產品或者項目的同時,能帶出一個能打硬仗的隊伍。知識的廣度延伸,是一個緩慢的過程,工作中不懂技術萬萬不能,但是只懂技術也萬萬不能,而技術之外的領域,對技術人員來說,學好學精,也是最困難的地方。

blob.png

個人的持續學習(持續深挖)。冰凍三尺,非一日之寒。這個階段,對大部分人來說,是最難的一個階段,難在很多人會放棄(反正我可以應付日常的工作,滿足帶來的止步),很容易迷惘和浮躁(我還想學,但是每天看看看的,都是自己會的,那些不知道的對我的工作也沒啥用處)。而正確的改變自己的認知(抓住機遇、正確的對待自己的努力),是突破這個階段的前提。知識的積累,一開始就像在儲備知識這個網狀結構的節點。每一個知識碎片,都可以是這張網上的一個節點;而且很多節點在一開始的時候,你自己也搞不清楚到底有用還是沒用,更搞不清楚節點之間的聯系。就像如果你的腦子里只有兩個點,沒關就是沒關,你也連不上,但是當我們把這個結構無限的放大,節點多到一定程度,很多知識相互連接,就是一件很自然的事情。 
社交以及朋(戰)友。找到你的戰友,在你孤獨的時候、迷惘的時候,有陪你喝酒吹水的人。也所謂三人行必有我師,很感謝這么多年,我身邊的這些朋友,亦師亦友,讓我學到的遠遠大于我自己的能力所獲取之外。 
所以,我個人的經驗:如果你有非常明確的努力方向,那么腳踏實地,堅持不懈。有進步,那是正常的,如果你感覺不到進度,那也是正常的。切勿把自己放到一個結果導向的思維定式里。

如果你沒有明確的目標和努力方向,但是你要認識到一點,至少你有看家本領,你要做的就是把自己該做的事情做好就夠了,目標只是你不知道,其實“天知道”^_^.

blob.png

We are always putting ourself into the perceived world, break it!

有時候我也把這種方法,叫做“自我麻痹”。當你發現自己難有突破的時候,你要么找別人“麻痹”你自己,要么你找到一種合理的觀念自己“麻痹”自己。很多時候,沒人告訴我到底該怎么來做,我需要自己給自己一點信念,不斷的用那個還有點激情、還有點夢想的我去打敗那個滿足、懶散、浮躁的我。

仔細想想,你是不是也有兩個我?當你用一個我打敗另一個我的時候,要么你進入的第三個階段,要么你退回到第一個階段。

階段三:知識的沉淀升級

勝利即升華。 
這個階段,是蛻變成“大神”的開始,是用知識創造知識的量變到質變的過程:

blob.png

構造模型,用“已知”加速掌握“未知”。我們經常談,誰誰誰學習能力比較強。什么叫“學習能力”?就是誰能快速的用自己的舊知識來掌握新知識、未知的知識!怎么做到?思考(對重復性業務的抽象和未來業務拓展的前瞻,強調過去的經驗和對行業的預見)》找到規律規則,也即模型》應用模型規則》改善。雜亂無章的東西,不符合人的認知,只有從雜亂無章的事物里找到規律,才能被人的認知體系所接受。找規律的過程,就是建模的過程。 
舉個例子。技術人員經常講(噴) “這個語法是抄的哪門語言的”。什么意思?因為你的認知體系里已經有一個語法的模型,所以你在用你已有的語法模型去認識新的語言里的語法模型。我們要學一門新的編程語言,學什么東西?“哎呀,我在熟悉的那門語言里是這么寫控制語句的,這門新語言是這么寫的” “哎呀,我在熟悉的那門語言里是怎么定義類和函數的,這門新語言是這么定義的”。等你語言見多了,你就會有自己對語言的認知模型,然后你就會罵人:“這些創造語言的大牛都該去死;有毛病,用 function 用的好好的,你非要改成 func,或者改成def;我用花括號好好的,你非要改成冒號;我聲明變量的時候,把變量類型放到前面,你非要改成寫到后面。”... 如果你這么想,而不是“PHP是世界上最好的語言”,恭喜你,你已經開始有了自己認知的模型,然后你會抽象出這樣一個模型:編程語言其實是按照編程語言創始人的理(喜)論(好)定義好讓你寫字的規則而已;所以學習新的語言,就是了解一下別人定義的規則,沒有好壞對錯,我們都是牛人的“跟屁蟲”而已。等你代碼寫更多之后,你會這樣來認知新語言:了解一下語法規則;看一下框架;熟悉一下生態(libs是不是足夠過,應用場景都有啥,你熟悉的工具在這個生態下有沒有類似的替代)。所有這些放在一起,才是你做技術選型的依據。

再舉一個例子,開發框架,給你一個新的開發框架,你需要了解啥?這個“需要了解啥”的定義,就是你認識編程框架的模型:路由機制是啥樣的;模板機制是啥樣的;插件擴展性體現在下;工具集有哪些;性能考量和開發效率考量有哪些。你可以按照同樣的方式和方法去認識TCP/IP協議:特定場景(Context)下對0和1的解釋。有了這個認知模型,你學習TCP/IP其實就是在學:有多少種context,在每種context下每個位上0和1代表了什么意思。這同時也是性能優化的關鍵。再比如,按照這個思路應用到編程之外,和客戶合作的協議是什么?是基于信任與關系模型下的winwin。

blob.png

微創新,對已知的歸納總結、打磨升級。當你開始尋找規律、構建模型之后,接下來要鍛煉的就是,用這個規律和模型去不斷的認識新的知識,然后在認識了新的知識之后,返回去改進或者完善你的認知模型。 
最后,你會掌握了用自己的視角認知這個世界的方法。別人告訴你的世界都是假的,你從書上學到的知識也都是假的,只有你掌握了自己的認知方法,用自己的方法去認識這個世界,知識才為你所用。我一直用一種簡單的“協議模型”來理解和認識工作、社會以及世界。別笑我年紀輕輕,敢談認識世界,也許明天醒來,我就會鄙視我渺小的看法,但是,在這個時刻,我有自己對世界的認知模型。兩年前我給團隊做過一場“萬物皆協議”的培訓,那個時候,更多的關注技術中的協議,現在經過兩年的改善,也許下次可以分享一下我腦子里的新的“萬物皆協議”的理論了^_^

好不容易經歷了三個階段,以為自己成神了,其實,年輕人,你還是太年輕,醒醒:

blob.png

永無止境,靠眼望不到高度,靠的僅僅是你的想象力!

寫在最后

成長即意味著改變,而改變本身又是一件很痛苦的事情,但是改變之后,你能享受到的不僅僅是一次改變,因為變化會有連鎖反應,一次的改變之后,你的心態和你的認知可能會和以前大有不同。

改變只是一個開始!成長之路還很長,共勉!

以上就是技術大牛成長的全部內容了,感謝大家的閱讀!

吐了個 "CAO" !
  • 不會游泳的魚   2017-09-28 10:27:57
  • 不會游泳的魚   2017-09-28 10:28:10
    11
  • 閣下貴姓   2018-01-23 13:32:18
    +1
掃碼關注 PHP1 官方微信號
PHP1.CN | 中國最專業的PHP中文社區 | PHP資訊 | PHP教程 | 數據庫技術 | 服務器技術 | 前端開發技術 | PHP框架 | 開發工具 | PHP問答
Copyright ? 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社區 版權所有
     
28玩法