作為程式設計師,在開發崗位上做了幾年,特別是到了30歲,這個而立之年,我們會來到一個重要的人生岔路口。就是管理和技術兩個選擇,一邊專業路線,一邊是管理路線。
在網際網路的頭部企業,對管理和技術是平等對待的,所以晉升會存在管理和技兩個通道的
既然有了選擇,就會有人糾結,不知道是選擇專業路線,還是選擇技術團隊的管理路線。
這個選擇是程式設計師人生中第一個大的選擇,也是第一個障礙,倒不是說這個障礙是到底要不要選擇管理,而更多的是對做管理的遲疑,懷疑到底能不能做好管理,做了管理之後,技術是不是就荒廢了。
這種狀態猶豫不決、搖擺不定的狀態保持時間長了,最終會導致技術和管理都沒做好,這是得不償失的。
為了解決這個問題,有必要分析程式設計師職業發展的路線到底有幾條,分別需要具備怎樣的能力,從而做到”手中有糧,心中不慌“
01技術
技術類上,是有兩個方向:架構師和技術專家
架構師他的側重點是在“廣”上,他主要負責技術的整體和架構,在業務上,需要有很深的理解,有豐富的經驗,甚至能做到“走的橋比你吃的鹽還多”。在技術上,能夠廣泛涉略,掌握的技術知識越多,內力就越加深厚。
我覺得架構師還需要三點必備能力,其一需要有極強的執行力,能夠快速的給出合理的方案,推動技術落地。其二需要有極強的判斷力,能夠準確的找到複雜系統的疑難問題所在,就像武林高手,一眼就看出對方的破綻。最後還需要有極強的創新力,能夠創造新的解決方案,解決現有技術難題。
所以從程式設計師到架構師的成長之路,總的指導原則是:積累經驗,拓寬視野,深度思考(可以參考我之前文章《程式設計師進階必備能力——深度思考》)
技術專家他的側重點是在“專”上,這個就很好理解,就是在某個領域能夠深入,能夠熟悉其背後執行原理。不同的領域都會存在專家,例如:Java專家、前端專家、影像演算法專家、Linux核心專家等等。專家相對架構師,更加專注,並不會考慮太多整體方案。
所以從高階開發成長為技術專家,主要是擴充套件領域內的技術寬度,提升領域內的技術深度。因為領域也不是特別窄的一個面,而是包含多個技術面。
舉一個例子:Linux核心專家,要想成為Linux核心專家,需要掌握,Linux CPU排程、記憶體管理、程式管理、儲存管理、檔案系統、裝置管理和驅動、網路通訊、系統呼叫、系統初始化等技術面。
在每個技術面中,同樣包含了很多技術點,這些技術都是知識盲區,所以需要提升技術深度。
02管理
管理也分為了兩個方向,技術管理和職業管理。顧名思義,技術管理更加傾向於技術,而職業管理完全拋開了技術,純粹的商業方向。
技術管理,這個方向是程式設計師最自然的選擇。大部分的技術管理者,在其從程式設計師轉為管理崗位的時候,都是在領導或公司的要求下,被動的推到技術經理崗位上的,並非是自己當初有強烈意願、主動去選擇管理崗的。然後走上曼曼打怪進階的路線,從技術經理崗到技術總監,帶領幾十號人的團隊衝關,然後到成為技術業務部和事業部的技術副總裁,相當於CTO了。
技術管理需要在業務上有較深的理解,在技術上能夠根據技術發展趨勢,進行技術規劃。在產品上能夠極強的洞察力,進行產品規劃。在團隊加上能夠規劃團隊建設、組織結構等等,所以這是綜合素質的要求。
職業管理
職業管理者往往更加關心於整體產品業務的團隊,不限於技術團隊。比如某個事業部的總裁,或者是某個業務部的總裁。大家往往都聽過某某事業部空降了領導,這個領導就是屬於職業管理者,他的移動性更加強,能力更加通用。這個方向是可遇不可求的,有些人一輩子都不可能觸及到。這個就是天花板上的別人家的樓板,你說難不難?
03創業
創業這個方向上,一般是作為技術合夥人來參與,如果想要自己的創業公司能夠成功,必須是全能型創業團隊,在技術、產品、營銷等方面不能有明顯的短板。
我舉一個真實的例子:我的上一家公司的直接領導,辭去技術總監的職位,作為一個技術合夥人建立了一個團隊,主要提供物流解決方案。前幾個月和他聊,公司已經在去年實現盈利1000多萬,通過股權上操作,已經成為最大的股東,掌管著整個公司的前進方向。
說到這裡挺惋惜的,創立之初,當時極力的拉我入夥,被我拒絕了,理由是工資太低了,這個理由在現在看來簡直可笑啊
04其他
專案經理
這個方向也是程式設計師比較常見,也比較自然的方向。專案經理其實一種組織整合能力。不同於技術管理,這條路線走起來,幾乎不需要任何外界依賴因素。
最需要關注的是進度、質量、人力、成本、風險。
那如何提升專案管理能力呢?
首先需要對專案管理知識框架有個大致的認識,避免在龐大的知識體系中迷失方向,比如:
-
範圍管理:專案為何總是做不完?範圍管理要界定
-
風險管理:專案風險引發的問題、成因以及防範方法
-
溝通管理:做好專案溝通計劃
-
質量管理:加強專案質量
-
時間管理:專案進度控制
-
成本管理:產品成品控制
-
等等
其次需要掌握專案計劃、專案變更、專案進展報告、覆盤等過程方法。
最後需要掌握跨部門協作,多維度溝通上進行加強。
產品經理
程式設計師轉產品經理,需要做到技術思維到產品思維的轉換。
技術思維角度是從功能開始,而產品思維的角度是從業務開始。
作為程式設計師,當要做一個專案時候,我們最關心的是這個專案有哪些功能,然後考慮每個功能如何實現;
而作為產品經理,當要做一個專案時候,我們看重這個專案的業務場景是什麼,解決使用者什麼問題
技術思維角度是怎麼去實現功能,而產品思維角度是為什麼要這個業務。
從技術思維的角度關注一個需求時候,總是先關注一個需求如何去實現,即HOW;
而從產品思維上來關注一個需求時候,應該多問一下WHY,為什麼需要這個需求,多思考為什麼,從而找到需求或問題的本質。
技術思維角度是向專家一樣行動,而產品思維角度是向小白一樣思考。
作為程式設計師,我們日常接觸到最多的還是技術人員,這些人一般來說邏輯思維都較強,擅長使用和處理各種軟體,所以總是將這種形象代入到客戶身上。
但作為產品人員思考時候,將使用者想得越“小白”越好,假設他們是不懂電腦,不太會玩手機,甚至不會打字的人。
05總結
上面4個方向是程式設計師主要的職業發展路線,作為個人來看,如果能一直做自己熱愛的工作和喜歡的角色,應該是最好的狀態。
不管走那一條路,一些能力是共通的,比如:技術規劃、團隊建設、溝通、時間管理等。處於自己的選擇,可能不會選擇管理方向,但是難免在以後的工作中會和管理者打交道。管理作為一種通用的素質,希望大家能夠技多不壓身。
總之,作為程式設計師,技術和管理,就像人的兩條腿,所有的職業發展路線都離不開,畢竟一條腿是走不遠的。
推薦閱讀(乾貨)
覺得不錯,記得關注、轉發和在看!多年經驗分享,實屬不易,感謝支援!
博主是一位物聯網大廠技術總監,從業7年。從軟體開發、高階軟體開發、技術經理再到技術總監,分享職業發展、技術管理、職場晉升、技術成長等個人多年經驗和心得。一起成長!其他文章可以加我公眾號如下: