1. 程式人生 > >程式設計師技術發展瓶頸該如何突破?

程式設計師技術發展瓶頸該如何突破?

在知乎看到一個問題,相當有代表意義,即技術人員本身的技術發展瓶頸的突破問題。

具體問題如下,通常情況下,技術人員在某一領域工作3-5年後,會成為團隊內或者公司裡的核心技術骨幹,這個時候他們也會面臨幾個問題:

技術學習的困惑:當達到一個瓶頸時,可以學習的參考系越來越少,首先是因為高階技術人才呈現倒金字塔形態,身邊缺少能引領你的人生導師;其次,業內的技術交流,大多數在做科普以及刷存在感,到達一定階段後對個人提升作用越來越小(甚至用一天時間參加技術大會效果還不如用一天的時間在咖啡館看書學習);再次,國內的文化導致技術人專家逐漸轉向管理崗位,技術缺少積累,特別容易出現斷層和繼承。

技術深度與廣度的選擇的困惑:

技術深度的進一步提升,可以逐步做到業界大牛,專業技能越來越強,廣度的延伸也更容易變成全棧技術人才,兩者各有利弊,個人時間和精力有限,如何抉擇?

技術方向的困惑:大型網際網路公司的技術框架基本都在最初選型時確立,與當時的業務規劃、業界當時的技術趨勢、個人的過往經驗積累相關,成熟規模大的業務從穩定性考慮,一般技術選型落後新技術2、3年,對於技術人員來說,從實際工作考慮需要使用老技術,但是業界的趨勢又是在朝著新技術的方向發展。

這種困惑相信很多技術人員和技術管理人員都存在,包括我自己,當然這種困惑本身也是符合學習曲線規律的,即任何一個技術學習和實踐,越是到後面學習的時間越長,本身能力提升越慢。但是往往真能夠堅持和專注,能夠耐得住寂寞等到量變到質變的那一刻,就是一種一覽眾山小的新境界。

對於上面提到的三個困惑點,自己簡單思考如下:

其一,技術學習的困惑,任何新技術或知識點的學習,在當前網際網路和資訊如此發達的情況下,只要你有興趣就一定能夠找到相關的學習資料進行自我學習,興趣往往是第一個驅動點。但是問題的關鍵點還是在於學習後的新技術如何深入,新技術如何去實踐?沒有真正的實踐總結,沒有真實的大型專案實戰驅動,你將發現理論終歸是理論,理論要轉化為你的實戰經驗是相當困難的。

如果一個新技術的學習沒有實戰機會,那麼你自己也很難真正保持長久的興趣,能夠做到熟悉或知道已經不錯了,而要真正做到精通或理解就很難。大量技術的深入學習往往都是在實踐中真正遇到了複雜的問題,在問題驅動下的學習和深入,這些錯綜複雜的問題往往涉及龐大的知識面,而且各個知識點之間相互影響。我們如果有實踐機會能夠不斷的解決這類問題,不斷優化和持續改進,技術自然深入。

舉一個簡單的例子來說,對於海量資料處理下的高併發網際網路架構,這類架構知識有不少書籍都在系統的講,往往也有很多技術專家的實踐分享。我們學習這些理論往往看起來簡單,也容易理解,但是即使你學習了這些知識,如果沒有相應的大型網際網路系統架構設計場景給你實踐,那理論終究是理論,這些理論本身你也很難真正的深入學習。正是由於這個原因,技術學習的困惑不是簡單的興趣問題,而是是否有大型專案實踐機會和鍛鍊的問題,但是往往大部分的公司都無法真正提供這種大型專案的機會,你要完全通過自己學習和模擬試驗來深入掌握這些技術就變成了空話。

其二,技術學習的深度和廣度問題,對於這個問題簡單回答就是對於技術管理型人員重點是更廣的知識面和綜合能力提升,即廣度更加重要而不是落入某一個深度細節。對於專業技術型人員,則是技術深度更加重要,因為技術的深度往往才真正為你創造更大的價值。

技術管理型人員需要更加關注整個知識體系的構建,其中包括重要的軟技能。這類人員的重點是總體規劃和設計,能夠對問題進行分解。對於分解後的技術問題和細節則可以轉交到細分崗位的專業人員去做。要做到這點我們仍然需要有大量的技術積累,因為這是你和專業技術人員溝通的橋樑和通用詞彙。

對於專業技術人員,技術的深度往往更加重要,深度才是最終創造價值。前面已經談到過,技術深度的提升越到後面越慢,學習的週期和時間成本越大。也正是由於這個原因,能夠超這個技術金字塔頂尖上去發展的人越少,自然你個人的核心價值體現越大。個人的精力是有限的,要想做到全棧技術人才的人相當少,即使是全棧技術人才更常見的情況往往是在自己最擅長的專業技術上能夠打到95分以上,而圍繞核心專業技術的相關技術能夠打到80分以上。

理解了這點,我們就更加清楚技術人員應該更加註意技術深度的積累,能夠長期專注在一個專業技術方向上,這個目標選擇定了,你會發現對於廣度知識的選擇就不是漫無目的和隨意的,任何廣度知識的選擇都是這些廣度知識是為了支撐你在深度上進行突破。當我們技術深入到瓶頸期後,如果自己反思和回溯,都會發現是知識廣度上出現了問題,需要暫時停頓下來先補充廣度。但是廣度的補充不是最終目標,最終還得回到深度鑽研上來。

最後一點,技術方向的選擇。對於這點個人最大的一個感受就是當你真正在某一個技術領域發展到一定階段的時候,一定不會是像自己還是新人那樣狂熱的追求新技術和熱點。即專家更多要考慮的是業務和問題驅動技術,用最適用的架構在當前解決最重要的問題並保留一定的擴充套件性,而對於大部分技術思維人員往往考慮的是技術驅動業務,只是對技術感興趣而不是對業務和問題域感興趣。

技術發展趨勢和迭代的快速,你任何當前選擇的技術或框架都可能在2-3年後就過時,但是如果當前的技術能夠很好的支撐業務就是最好的技術。如果有不能更好支撐的地方我們就要考慮基於當前遇到的效能或擴充套件性問題我們究竟應該引入什麼新的技術來解決,並做好方案選擇和評估。

所以最後一個問題個人認為不是技術方向的問題,對於任何新技術都應該有敏銳的嗅覺去了解,但是並不是每個技術都要真正在專案裡面使用。專案不是新技術的試驗地,本身也不存在技術驅動的技術方向選擇問題。而只存在業務和問題域驅動的技術架構優化。業務和問題驅動IT和技術,是從單純技術思維開始轉變的一個重點。

最後 ,分享一套針對Java程式設計師學習進階的最新網際網路架構思維導圖,希望對你有幫助!

這套架構思維導圖是幾位架構師花費幾個月時間整理出來的,為此錄製了一些架構視訊資料免費提供!

歡迎工作一到五年的Java工程師朋友們加入Java架構開發:760940986

群內提供免費的Java架構學習資料(裡面有高可用、高併發、高效能及分散式、Jvm效能調優、Spring原始碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!

(1)常用原始碼框架

(2)網際網路分散式架構

(3)團隊協作開發

(4)架構基礎

(5)微服務專題

(6)效能調優專題

(7)併發程式設計