在程序員界有一個悖論持續(xù)在困惑著很多技術人:在寫代碼的人的困惑是一直寫代碼是不是會喪失競爭力,會不會被后面年輕的更能加班寫代碼的人汰換。典型代表就是工作5年左右的核心技術骨干,此時正處于編碼正嗨但也開始著手規(guī)劃下一個職業(yè)發(fā)展階段的時候;沒在寫代碼的人困惑是我長時間不寫代碼(或者代碼量較少)我的技術功底是不是在退化,我在市場上還會有競爭力嗎,我的發(fā)展空間是不是被限制住了。典型代表就是帶業(yè)務項目的架構師或者團隊Team Leader,他們更多的精力是在業(yè)務需求理解和拆分,團隊事務的管理上。
?
這種圍城現(xiàn)象非常嚴重,是技術人在職業(yè)發(fā)展過程中必定會面臨的困境。但要回答清楚這個問題,其根源不在于是寫不寫代碼或者代碼量的多少,其本質(zhì)還是要回到什么叫技術能力以及如何提升技術能力這個根節(jié)點上來。我把我的一些觀察和思考總結下來,供大家參考。
?
到底什么是技術能力
要解釋清楚什么是技術能力還得看透技術能力的本質(zhì),從源頭上來做剖析。挑選幾個程序員日常的工作問題來做個剖析比對,從我們的日常感觀中來辨識下哪些是有技術能力的做法,哪些是沒啥技術能力的做法。
?
兩類日常工作
重復瑣碎類工作
有一類工作是專門處理其他組技術同學對組內(nèi)業(yè)務的疑惑進行解答,我們稱之為daily支持。比如咨詢你負責的系統(tǒng)在開發(fā)環(huán)境有一個報錯影響了他們的項目聯(lián)調(diào)是什么原因。這種工作的典型特征就是,隨時都可能有人來問你問題,還有可能是同一個問題不同的人來問你很多遍。這類工作稱歸納為重復/瑣碎類工作。這類工作我們來看看幾種做法:
第一種:就事論事,把這個問題回答了結束。到這個程度你只是解決了一個具體的問題。很可惜我們很多技術同學都是處于這個層次。
第二種:解答完這個問題后即整理成文檔,把排查步驟寫清楚,提升自己和同組人的工作效率。到這個程度說明你看到并解決了內(nèi)部效率問題。
第三種:將此排查問題的方法和邏輯固化為小工具給到咨詢的同學去用,讓他以后可以自助排查解決,這樣既解決了別人的問題也徹底釋放了自己和同組人的效能。到這個程度說明你重新定義了效能問題并找到更好提效的辦法。
第四種:將此問題背后根因找到,從業(yè)務原理或者產(chǎn)品功能上去找解法。將技術工具抽象為業(yè)務功能的完善。到這個程度說明你已經(jīng)從單純的技術提效看到了架構合理性問題,并嘗試在業(yè)務上尋求徹底根治的辦法。
這四種不同的做法我們可以看出來,即使是這些重復的瑣碎類工作,我們也可以從擴大受益面的角度去提煉價值,然后尋求多個層次的解法。在解決問題的過程中自然而然也鍛煉了自己多層次的思考和抽象能力。
?
抽象復雜類工作
還有一類工作是相對抽象和復雜的工作,它的典型特質(zhì)就是需要只能感受到現(xiàn)象,很難找到根因,沒有明確目標和固定解法,需要自己做方案定策略。舉個實際中遇到的例子,就是在復雜的系統(tǒng)鏈路中往往會出現(xiàn)聯(lián)調(diào)效率十分低下的問題,每個研發(fā)同學都在抱怨各種各樣的問題,但就是沒法去根治。面對這樣的復雜抽象問題,也有好幾種做法:
第一種:找到抱怨的同學,問一問具體的問題是什么,然后針對性解決。
第二種:更加廣泛收集問題,然后列出來表格,歸類分析并安排負責人跟進解決,最后定期跟蹤進度。
第三種:深入分析表格的中的問題并對問題進行抽象,從架構調(diào)優(yōu)和產(chǎn)品功能的角度去尋找原因,并尋找解決這些問題帶來的業(yè)務價值,并確定目標拆解路徑,最后按照任務推進和跟蹤進展。
第四種:從更全局角度去思考此目標與年度目標的關系,與組織發(fā)展的關系,思考如何擴大此事的效益,思考如何通過這些事的解決鍛煉和培養(yǎng)團隊同學。
可以看出來這種抽象復雜的工作,其實也有多種做法,看得更加細致是可以看到技術架構的調(diào)優(yōu),看得有深度可以與目標、組織成長結合在一起。當然也有很一般的做法,那就是純粹單個問題解決,純粹是變成項目經(jīng)理,通過任務列表跟蹤進度。
?
技術能力層次模型
通過上面兩類日常工作的分析,我們很明顯可以看到有技術能力的做法特征是能夠通過現(xiàn)象看到本質(zhì),并能夠通過對問題的抽象歸納進行技術架構層調(diào)優(yōu)以解決同類問題。
因此我對技術能力的定義是:技術能力是一種以解決某種問題為目標的思路、方法與執(zhí)行手段,其本質(zhì)就是解決問題的能力。在編程領域,就是對遇到的業(yè)務問題進行抽象、提煉以及邏輯的構建,通過研發(fā)工具以提升解決問題的效能,減低人工低效的重復工作。
?
如果用技術能力這個定義的方法論對“什么是技術能力”進行剖析,我提煉了一些模型來表達。
??
這個能力模型按照逐步境界階段分為了三層:
術,硬核技術能力
術這個層面其實更多是硬核技術能力,基本上就是技術的基礎功底(如計算機基礎,分布式技術,質(zhì)量意識等)。雖然這個歸為是基礎類,但這也是技術人的立身之本。工作3-5年的同學基本上都還是處于這個階段,即需要大量的練習使得自己的技能非常嫻熟。
處在這個階段最重要的就是需要有技術好奇心,要有技術的專研力,通過時間的磨煉持久去學習去練習,使得自己能夠成為團隊的核心骨干力量。
?
法,技術架構能力
法這個層面其實更多的是技術架構能力,即通過現(xiàn)象看透本質(zhì),通過模型、原則來表達本質(zhì)以解決抽象復雜類問題。這是一種高階的技術架構思維,基本上5-10年的同學會處在這個階段。這個階段更多強調(diào)問題發(fā)現(xiàn),問題定義,問題分析,問題解決的能力。
處在這個階段是需要很強大的認知能力提升,這里必備的素質(zhì)就是皮實和包容,要容得下不同的觀點也要禁得起各種挑戰(zhàn)。但這個階段也有很大的誤區(qū),即非常容易被簡化為就是要學習很多方法論或者套路。
?
道,技術領導力
道這個層面其實更多的是技術領導力,即通過技術影響力去尋找愿景和目標,帶領組織拿取結戰(zhàn)略結果。在這個階段我們要基于深厚的技術架構能力和技術硬核能力。通過技術思維去解決超越純技術領域的問題,一般來說10+年的同學會遇到這類問題。這個階段的成長也會更多面臨人的底層素質(zhì)能力升級,需要更多靠領悟而不是純粹的訓練和問題驅(qū)動的思考。這個階段其實也有很大的誤區(qū),即很多人只學到了表面功夫而沒有深得要領,純粹就變成是對己就是自我修養(yǎng)的提升,對別人就是PUA。
如何提升技術能力
隨著把技術能力層次模型定義出來,其實如何提升也有了一定指南。后續(xù)有機會可以分章節(jié)來論述這個技術能力的提升過程。但產(chǎn)出詳細章節(jié)的實踐論述前,還有一篇“內(nèi)功心法”可以分享給大家:
?
尋找成長的源動力
大家往往對這個問題不以為意,覺得成長是每個人都想要的,但是大家沒有仔細琢磨過促進你成長的到底是什么:是你自驅(qū)想要享受這個練、思、悟的過程 還是 因為渴望得到周邊人的認可/反饋/評價。這兩者在你順利的時候可能沒什么感覺,但當你面對晉升失敗,項目不利等挫折的時候就會有非常大的差異。
如果你能夠找到自己成長的源動力,那么在遇到真正的困難和迷茫時候才能夠擺正好自己的心態(tài),尋找突破口,讓自己走出困境,得到長足的成長。
常態(tài)化的總結與反思
不管是編碼類的技術基礎學習成長,還是相對抽象的問題解決,還是技術領導力成長。只要是成長,只要能夠抓住這兩個關鍵就一定能夠成功。
第一個就是反思,能夠敏銳地反思自己的不足,然后不斷去修正自己的心態(tài)和行為讓自己蛻變。
第二個就是總結,總結的過程是不斷梳理自己的過程,把自己迷迷糊糊,是是而非的東西分類歸類,而且總結越多就能夠用好時間的復利,就能夠越促進成長。
找到了源動力就解決了底層動機問題,通過總結和反思是能夠利用上時間的復利,通過這兩樣心法就能夠使得自己成為一個能夠不斷豐富完善自己的人,達到這樣的狀態(tài)必定能夠成為技術強人。
?
實用技巧
要做到常態(tài)化的總結與反思,最簡單的技巧就是寫文章,通過文字的整理可以讓自己的思考更加成熟,想得更加成熟以后自然而然對外就能夠講得更加清楚,能夠?qū)ν庵v清楚就能夠更好分享交流才能夠真正去校正自己的想法是不是正確。所以我提了,以寫代想,以想促講,以講驗真的 實用技巧。
(責任編輯:代碼如詩) |