開發者漲薪指南:提升軟、硬實力
作者 | 田瑋靖
出品 | 《新程式設計師》編輯部
“成長”是一個永恆的話題,伴隨著生命的始終。而在生命中佔據很長一段時間的職業生涯,是提及成長最多的時期。作為開發者,在職業生涯的不同時期會遇到不同的挑戰。初入職場時,容易遇到技術瓶頸問題如某項技術怎麼實現、程式碼質量如何提升等。在職場摸爬滾打幾年後,開始管理技術團隊,此時如何與人溝通,說服大家為了共同的目標努力,以及怎麼提升團隊的研發效能等管理問題撲面而來。如果後續擔任企業CTO或選擇技術創業,還將思考技術如何更好地賦能業務發展、如何排兵佈陣和斷事用人、如何佈局未來及制定戰略方向等問題。
不難發現,推動開發者職業通道不斷上升的自身因素主要有兩方面:硬實力、軟實力。前者主要表現為技術開發維度,而後者涵蓋了洞察力、判別力、決斷力、溝通力、管理力、領導力等多個維度。如何提升軟、硬實力?或許我們可以從已經獲得成功的前人身上汲取經驗。
在《新程式設計師:我們的技術時代,我們的程式人生》一書中,多位知名“技術大神”和正在奮鬥的開發者分享了他們的成長經驗。其中,C++之父Bjarne Stroustrup、MySQL之父Michael “Monty” Widenius、SUSE CTO Brent Schroeder;阿里巴巴CTO程立(魯肅)、技術創業者和投資人戴志康、遊戲開發者雲風提到了技術能力與管理能力的提升,希望能給渴望提升實力的開發者帶來啟發。
1、硬實力提升
初級開發者:訓練邏輯,打好基礎
作為與資料打交道的初級開發者,嚴密的邏輯思維是不可或缺的,也是寫好程式碼的基礎,而能夠讓邏輯思維升級的重要手段便是學習數學。
被稱為“C++之父”的Bjarne Stroustrup(以下簡稱Bjarne)曾這樣建議:“程式設計師在數學上付出的努力永遠不會白費。學習數學是訓練我們大腦的最佳方法之一。”Bjarne用其四十餘年的程式設計經歷告訴開發者,雖然在很多應用程式的開發中不會用到數學,但在構建基礎設施或大規模部署應用程式時,容量和成本問題忽視不得,為了獲得更大容量的同時使用更小的成本,演算法就會起到關鍵作用,而如果不具備深厚的數學知識,或許得不到最優解,甚至會帶來危害。
另外,對於大多數開發者來說,學習數學的用途主要體現在概率和統計方面,用來判斷程式碼速度是否夠快、某個功能是否有足夠的擴充套件性、某個故障的發生概率有多大及其影響範圍有多廣,等等。
《新程式設計師》資深開發者:追根溯源、融會貫通
從普通開發者成長為資深開發者,再從資深開發者升級為“大神”開發者,最重要的能力不是程式碼寫得多巧妙,而是追根溯源、融會貫通的能力。
知名技術創業者、天使投資人戴志康在接觸無數技術創業者並閱覽他們的創業經歷後,總結出優秀開發者和普通開發者的區別:優秀的技術人就是能夠從更高的角度看問題,‘知其然知其所以然’,而普通的技術人,通常是將別人抽象、總結的東西拿過來,不善於或不習慣親自探究‘所以然’,這時總會碰到‘這個能做,那個做不了’的問題。為什麼優秀的技術人很少遇到這種情況?因為他的思考框架已經涵蓋技術周邊(即橫向如前端、後端、運維、產品等)和技術縱深(即縱向如架構、演算法、資料庫、作業系統等)兩個方向。此外,他還可能觸類旁通發現許多事物的類似規律。
可見,開發者變“強”的關鍵在於突破橫、縱兩個方向的認知維度。而對於突破認知維度的方法,戴志康以自身實踐的經驗舉例:“二十年前我用PHP語言開發軟體,PHP的上游是什麼?是作業系統、資料庫等基礎軟體。而在資料庫中,有SQL語句、執行計劃、儲存結構、存取機制等,逐一鑽研。因為只有清楚SQL語句的上游需求,這條SQL語句才能寫好,只有瞭解作業系統執行邏輯,才能寫好PHP。”正是通過不斷地追根溯源,戴志康發現他的技術開發能力提升了一大截。
正所謂“實踐出真知”,在計算機的世界中,很多問題通過假設、驗證、分析的方式都能找到答案,如怎樣的程式碼會讓程式執行速度加快,再如不同的檔案尺寸和變數會對解釋型語言的執行有什麼影響。通過鑽研和總結每次實踐的結果,瞭解程式的執行邏輯。當一個開發者清楚自己寫下的每一行程式碼會以何種邏輯、何種速度執行,以及帶來何種結果時,他就突破了縱向的認知維度。而突破橫向的認知維度,簡單來講是跳出崗位本身的限制,從全域性思考上下游鏈路的需求、原理、方法等,並將技術邏輯運用到其他領域分析問題,做到融會貫通。
《新程式設計師》“大神”開發者:看透本質,將複雜的問題簡單化
與追根溯源、融會貫通相輔相成的能力是看透本質,將複雜的問題簡單化。
如果開發者可以用足夠簡單的方法解決根源問題,拋開中間的一些枝節干擾,那他就具備了所謂“10x程式設計師”的能力。就技術開發而言,很多年輕程式設計師都喜歡炫技,擁有近四十年的碼齡的“大神”開發者雲風年輕時也一樣,但如今他認為炫技不能解決問題的本質。這與把事情做簡單有什麼關係?以前雲風認為寫出複雜的程式並且不出錯是一種出色的能力,可隨著時間的推移,程式碼需要被別人維護,可能還要和其他人合作,這時會遇到一個問題:怎麼讓程式碼更容易被理解?因此,開發者必需讓程式碼足夠簡單,讓別人一看就明白。好程式碼是開發者的一張名片,什麼樣的程式碼是好程式碼?雲風的程式設計經歷告訴他,“並不是看上去好像沒有問題的程式碼,而是看上去所有東西都清清楚楚,斷定它肯定不會出問題的程式碼。”
那麼,如何寫出足夠簡單的程式碼?除了上文提到的對程式執行邏輯的掌握,雲風提到一項重要能力——評估事物和自身的能力。一方面要了解一件事情的來龍去脈,以及需要多長時間完成、需要什麼條件完成,這是靠開發者經年累月的經驗堆出來的,沒有捷徑;另一方面,要對自身有清晰的認知,這樣才能規劃好做事流程和用時,減少返工。
MySQL之父Michael “Monty” Widenius也發表過類似的觀點:“寫程式碼時要儘量將程式碼一次性寫成,而不是寫完後再沒完沒了的修改。”這也是他長久以來所遵循的程式設計法則。對於一個開發專案而言,普通開發者和“大神”開發者都可以做,但區別體現在哪?體現在“大神”開發者一週就能完成的任務,普通開發者需要一個月才能完成。因為當一個程式設計師經驗不足時,他評估一件事可以用兩天搞定,但他又花費更多時間來解決他做事過程中發現的問題,不停地改錯和返工導致任務完成時間和預期出入很大,這就是評估能力的差異,因此,具備評估能力就是寫出簡單程式碼的開始。
《新程式設計師004》紙質書限時預售44.5元
2、軟實力提升
技術層面的硬實力固然重要,但在開發者的職業通道中,不是隻有技術專家這一個選擇,還可以選擇做管理者、創業者或大型企業的CTO等,這時,軟實力就顯得更為重要。有很多硬實力很強的資深開發者,因為無法突破軟實力的限制,只能停留在技術開發領域。
技術管理者:人際交往能力比技術實力更重要
對於選擇技術管理通道的開發者而言,SUSE CTO Brent Schroeder指出:與人交往的能力往往比技術實力更重要。在帶領團隊的過程中,思考的不僅是個人成長,更重要的是讓團隊成員如何更好地迎接挑戰並實現成長、如何通過激勵機制或發揮帶頭作用使整個團隊得到提升。另外,對於表現欠佳的團隊成員,管理者也需要加以引導甚至進行鍼對性的培訓來鼓勵他們,改善他們的表現。除了團隊內部的管理外,團隊外部的協作,如說服他們為共同的目標努力,也非常考驗人際交往能力。但不幸的是,這種能力很難從課本上獲取,只能通過不斷地自我實踐來培養。
不過可以肯定的是,人際交往的第一步是建立信任。在團隊協作中,信任共事的人,接受他們做得不好的方面,以把整件事情做好為主。根據雲風的經驗,“每個模組都按照你的想法做,通常是行不通的。你可以找準你真正想要的那件事,圍繞那件事情,把它做好,其他事情放心交給你的夥伴。接納其他人的不同想法,求同存異,把整件事做好就可以了。”
CTO六部曲:跟隨公司業務發展不斷進化
隨著技術管理者能力的不斷升級,或許會成為大型企業或創業公司的CTO,此時,“核心不是看方向,而是怎麼做好技術”,阿里巴巴CTO程立(魯肅)根據其自身經歷分享道。看方向是CEO的職責所在,而CTO需要通過技術讓業務增長更加高速地增長,並保障業務不被技術拖慢增速。
通常,企業遵循著波浪式的發展過程:一開始要先找到一個方向,進入一個業務的軌道;如果這個方向判斷準了,企業就會進入快速增長階段;發展到一定階段,就必須要脫離現有的慣性,再去找新的發展方向……在此過程中,CTO主要承擔兩份職責,一份是技術保障,重工程能力,另一份是組織能力,重領導能力。對於兩份職責所涉及的不同事項,從個人層面而言,或許不能將每件事都做到極致,但“核心思考是,技術創業者需要跟著公司業務發展不斷進化。”
程立根據其從螞蟻技術到阿里巴巴經歷的六個階段,總結了CTO的六步曲:
-
跟團隊一起定義好目標,一起做成一些事情。
-
多瞭解團隊和業務,知道未來要去哪裡,與團隊共創一個願景,點燃大家的熱情。
-
避免自己成為團隊的天花板,把自己當成團隊的地板,用人做事而非做事用人。
-
別忘了“晴天去修屋頂”,永遠居安思危。一旦危機出現,樂觀地看待,每個危機背後都有機會,轉危為機。
-
不只看當下,也要佈局未來,為公司建立技術縱深。在業務發展早期,技術的縱深就是一個點。當發展到像阿里巴巴現如今的規模時,技術縱深就是一個多面體,必須有充分的、多面的佈局,才能支撐公司的發展。決定佈局投入多少,要和CEO充分對焦。
-
薪火相傳,人才是公司未來發展的關鍵。阿里雲曾經有一位技術負責人分享什麼是一家公司技術能力的最高境界,就是誰來當CTO都能當好。
當然,無論是管理團隊還是領導團隊,二者的軟實力是相通的,並不矛盾,可針對自己的不足之處進行逐一提升。只是成長沒有捷徑可言,需要投入足夠多的時間,進行足夠多的自我實踐,在過程中講究方法,時常回顧自己怎麼才能把這件事學好、做好,發現偏差時及時修正。
3、48個程式人生故事的啟發
做更好的自己
除Bjarne Stroustrup、Michael “Monty” Widenius、Brent Schroeder、程立、雲風、戴志康的人生經驗外,《新程式設計師:我們的技術時代,我們的程式人生》還邀請到了C#與TypeScript之父Anders Hejlsberg;PostgreSQL全球開發組聯合創始人Bruce Momjian、Vue創始人尤雨溪、百度CTO王海峰、Caffe作者及阿里巴巴副總裁賈揚清、指令集創始人兼CEO潘愛民、OceanBase創始人陽振坤、LVS創始人章文嵩、科技作者吳軍等各技術領域的先行者及代表人物,分享他們的程式人生經驗及感悟。從技術開發領頭人,到新生代程式設計師,他們的故事伴隨著技術發展歷程橫跨了六十餘年。
以技術名人堂、技術領導力、技術先鋒、技術創業者、技術管理者、我是程式設計師、女性力量、技術向善、斜槓程式設計師這九個模組劃分,通過48個程式人生故事,讓你瞭解技術發展、汲取成功經驗、獲得成長方法、升級自我認知、認清未來方向。
「紙質書+電子書」同步預售
由CSDN策劃出品,中國水利水電出版社出版,《新程式設計師:我們的技術時代,我們的程式人生》紙質書、電子書同步開啟預售(2022年5月底正式發貨),數量有限,先到先得!
現在,掃描下方二維碼即可預定。
『紙質書+電子書』限時預售價:55 元
相關文章
- 如何快速提升自己硬實力
- 《提升能力,漲薪可待》-Java併發之AQS全面詳解JavaAQS
- 阿里畢玄:程式設計師如何提升自己的硬實力阿里程式設計師
- 架構師所需的硬實力與軟技能架構
- libusb開發者指南
- 硬實力和軟實力,哪個對測試人來說更重要?
- 【牛客_2020.10.20】漲薪
- Java開發5年,如何繼續提升技術實力?Java
- 智慧數字經營怎麼提升門店推廣硬實力?
- 軟體開發命名指南
- 漲薪【貪心】【快速冪】
- 新國潮榮威遇上百年故宮:把文化軟實力變成發展的硬實力
- 東軟發力!提升政務大資料治理能力大資料
- 【實用】iOS開發者後臺快速上手指南iOS
- 平庸開發者的生存指南
- 提高開發生產力 - 生產力指南篇(之一)
- 【軟通動力】HarmonyOS三方件開發指南(6)-ActiveOhos_sqlite元件SQLite元件
- [譯] 使用 Architecture Components 開發 MVVM 應用:MVP 開發者的實踐指南MVVMMVP
- 力軟敏捷開發框架幫您開發什麼軟體敏捷框架
- 微信硬體JS-Api開發不完全指南JSAPI
- 力軟敏捷開發框架工作流實現技術敏捷框架
- Ebistrategy亦策軟體提升仙婷貿易競爭實力
- 實踐指南-前端效能提升 270%前端
- 薪資福利上漲龜速——大資料從業者有話說大資料
- 這個應用魔方厲害了,讓軟體開發者效率提升10倍
- RK3399全套軟硬體開發資料
- Sentry 開發者貢獻指南 - 配置 PyCharmPyCharm
- Sentry 開發者貢獻指南 - Feature Flag
- 給Android開發者Flutter上手指南AndroidFlutter
- Sentry 開發者貢獻指南 - SDK 開發(事件負載)事件負載
- Sentry 開發者貢獻指南 - SDK 開發(效能監控)
- 百融雲創提升創新硬實力 持續賦能金融數字化轉型
- 開源Android容器化框架Atlas開發者指南Android框架
- 主流開源開發者工具落地阿里雲,進一步提升開發者體驗阿里
- 縱觀 Excel 演化史,開發者如何通過“表格技術”提升企業生產力Excel
- 嵌入式軟硬體開發中遇到的坑
- WWDC 2018:寫給 OpenGL 開發者們的 Metal 開發指南
- 軟體開發者六要