三十而立,作為程式設計師的我,該轉型嗎?技術or管理
一個程式設計師在考慮增值時無法迴避的一個根本問題是到底是做技術還是做管理(架構師除外)。這種基本方向上的選擇對後續很多細節上的取捨有關鍵影響,所以在考慮其他之前,最好先回答一下這個問題。這就和修煉時要選擇少林、武當、華山還是魔教一樣,一旦選擇,基本上是回不了頭。
當然選擇管理不意味著不需要掌握程式設計技能,畢竟當下大多公司還是信奉“宰相拔於州郡,將軍起於行伍”的。但當技術達到一定水平後,管理還是技術這種方向性的選擇將對下一步做什麼有比較大的影響。在考慮那個方向前,則要先弄清楚管理和技術的關鍵差異。
技術與管理的關鍵差異
到了30幾歲後,轉為管理人員的程式設計師經常會調侃自己的技術能力:當年解決這種有時出、有時不出的Bug時,我常常在其前後都加幾條除錯輸出,這招很管用很可能立刻就把它搞定了。結果多年後維護這程式碼的人困惑了,還來問我,這句為啥不能去掉,看著也沒用啊,其實我也不知道,只能說運氣和人品在程式裡也是很有影響力的。
這是管理人員的一種真實寫照,大家都知道,一旦走上管理崗位,那就和ppt越走越近,和程式碼越走越遠了。雖然他仍然要跟蹤最新技術的動向,但他很可能已經無法深究很多技術細節了。
據說微軟這樣的公司推崇一個人要想走上管理崗位,那要先把自己的程式碼用遠少於別人的時間寫好,省下來的時間才用來做管理工作。這很好,也不是完全不可能,但大多時候很難,需要很強大的天分,大多數人是做不到的。
要原因是管理和技術所要處理的問題有根本上的差異。
管理者往往需要處理許多與人相關的事情,這導致要處理的事情是碎片化的,如果堅持編碼,那麼每天的打斷往往會大幅降低寫程式碼的效能,大家都知道編碼是需要專注的。
管理工作總是需要面對大量的瑣碎工作的,比如:老闆對專案不滿要趕緊去說明,免得發酵成大問題;人力缺了要趕緊協調,一是要能要到人,關鍵還得能要到合適的人;工具缺了,要趕緊購買;兄弟們有情緒了,要趕緊安撫;PPQA了有抱怨了,要趕緊改正。如果工作進一步泛化,還要涉及到預算、評估、職業路徑規劃等。
我們很難讓這些事情按照自己的節奏發生,如果管理人員做程式設計,最終這些都會變成一種對程式設計工作的隨機性干擾。所以一般來講很難把它們很好的與編碼結合在一起。想象一下,一個管理人員負責某個專案中影響關鍵路徑的某個模組,接下來上面所列的意外發生了,那這個管理者怎麼辦?
也許可以說管理也是一種技術,但管理和設計編碼這種技術的Key不一樣。做技術需要面對的是程式,程式是講道理的,StackOverflow時它一定會崩潰;而做管理時需要考慮技術因素,但更需要面對的是各種人,人則只在一定程度上講道理,所以管理不只是一種技術。因此基本上可以認為管理和技術時完全不同的兩個方向。
如果大家細心觀察周圍,就會發現,做技術(編碼)的往往可以轉去做管理,但做管理的再轉回做技術(編碼)就難了。這意味著技術背景對做管理往是很有幫助的,而管理背景對做技術則幾乎沒用。
瞭解到這種差異後,要做什麼選擇就要看自己的職業規劃了,是繼續在技術專家的道路上一條路走到底還是轉管理崗位,都是自己的選擇。不管走那條路,自己的提升與成長肯定是不能落下的。這裡免費分享一份GitHub 上標星 120k的Java中高階進階知識全面解析。主要包括 Java 基礎、Java 容器、Java 併發、Java 虛擬機器和 Java IO。另外還附帶網路、linux、資料結構與演算法、資料庫、系統設計、必會工具、面試指南等內容,非常全面。
本次是免費分享!下面展示部分截圖,點選文末名片,掃碼即可免費獲取!
(一). 基礎
1、Java 基本功
- Java 入門(基礎概念與常識)
- Java 語法
- 基本資料型別
- 方法(函式)
2、Java 物件導向
- 類和物件
- 物件導向三大特徵
- 修飾符
- 介面和抽象類
- 其它重要知識點
3、Java 核心技術
- 集合
- 異常
- 多執行緒
- 檔案與 I\O 流
(二). 併發
1、併發容器
- JDK 提供的併發容器總結
- ConcurrentHashMap
- CopyOnWriteArrayList
- ConcurrentLinkedQueue
- BlockingQueue
- ConcurrentSkipListMap
2、執行緒池
- 使用執行緒池的好處
- Executor 框架
- (重要)ThreadPoolExecutor 類簡單介紹
- (重要)ThreadPoolExecutor 使用示例
- 幾種常見的執行緒池詳解
- ScheduledThreadPoolExecutor 詳解
- 執行緒池大小確定
3、樂觀鎖與悲觀鎖
- 何謂悲觀鎖與樂觀鎖
- 樂觀鎖常見的兩種實現方式
- 樂觀鎖的缺點
- CAS與synchronized的使用情景
(三). JVM
1、Java記憶體區域
- 概述
- 執行時資料區域
- HotSpot 虛擬機器物件探祕
- 重點補充內容
2、JVM垃圾回收
- 揭開 JVM 記憶體分配與回收的神祕面紗
- 物件已經死亡?
- 垃圾收集演算法
- 垃圾收集器
3、JDK 監控和故障處理工具
- JDK 命令列工具
- JDK 視覺化分析工具
(四)網路、linux、資料結構與演算法、資料庫、系統設計、必會工具、面試指南
因為篇幅有限,其他內容就不一一展示了,這本進階筆記總共有512頁。對於想要進階的小夥伴來說應該會很有幫助,希望也能幫助到你。需要的小夥伴可以點選下面的名片免費領取。
相關文章
- 作為程式設計師的我的生活日常程式設計師
- 從美術生到程式設計師轉型之路【我的故事】程式設計師
- 我作為程式設計師辣麼窮的黑歷史程式設計師
- 作為程式設計師,我們理應自豪程式設計師
- 程式設計師如何利用技術管理技巧程式設計師
- 作為一個程式設計師我最大的遺憾程式設計師
- 作為一個新手程式設計師該如何成長?程式設計師
- 程式設計師應該接外包嗎?程式設計師
- 中年程式設計師該焦慮嗎?程式設計師
- 作為一個菜鳥程式設計師跳槽可行嗎?程式設計師
- DirectX程式設計技術 --- 想學遊戲程式設計嗎?必讀 (轉)程式設計遊戲
- 程式設計師: 我只要技術牛就行! 軟體工程師: 那你能做個好專案嗎?程式設計師軟體工程工程師
- 我看程式設計師 (轉)程式設計師
- 作為程式設計師 我是怎麼月薪3W的程式設計師
- 我該學設計模式嗎?設計模式
- 應該怎麼管理程式設計師?程式設計師
- 作為一名程式設計師,你真的理解需求嗎?程式設計師
- 測試設計技術 - 我們需要嗎?
- 作為程式設計師的你,一年看幾本技術相關的書程式設計師
- 我是印度程式設計師,我要為印度程式設計師辯護程式設計師
- 程式設計師轉AI工程師很難嗎?這6個技術是關鍵程式設計師AI工程師
- 我們在囧途之程式設計師轉型記程式設計師
- 「程式設計師閱讀技術文章真的可以提升技術嗎?| 掘金技術徵文」程式設計師
- 工程師如何從技術轉型做管理?工程師
- 作為一個Java 程式設計師 你應該會什麼Java程式設計師
- 作為程式設計師應具備的基本知識 (轉)程式設計師
- 為什麼國外的程式設計師薪資是國內程式設計師薪資的四五倍,國外程式設計師技術都比國內高嗎?程式設計師
- 程式設計師的技術遺產程式設計師
- 為了成為優秀的程式設計師,我需要擅長數學嗎?程式設計師
- 大前端時代,我為什麼支援前端程式設計師學習原生技術?前端程式設計師
- 我是程式設計師 我為自己代言程式設計師
- 我是程式設計師,我為自己代言程式設計師
- 程式設計師過關斬將--作為一個架構師,我是不是應該有很多職責?程式設計師架構
- 技術最好的程式設計師,為什麼當不了首席?程式設計師
- 一個“老”程式設計師的技術及非技術個人回顧 (轉)程式設計師
- 我們對技術的依賴有多強?程式設計師為何關注它?程式設計師
- 我如何轉行為程式設計師:心態支撐著我程式設計師
- 我不想成為真正的程式設計師程式設計師