三十而立,作為程式設計師的我,該轉型嗎?技術or管理

Nin-Ja- 發表於 2022-01-28
程式設計師

一個程式設計師在考慮增值時無法迴避的一個根本問題是到底是做技術還是做管理(架構師除外)。這種基本方向上的選擇對後續很多細節上的取捨有關鍵影響,所以在考慮其他之前,最好先回答一下這個問題。這就和修煉時要選擇少林、武當、華山還是魔教一樣,一旦選擇,基本上是回不了頭。

當然選擇管理不意味著不需要掌握程式設計技能,畢竟當下大多公司還是信奉“宰相拔於州郡,將軍起於行伍”的。但當技術達到一定水平後,管理還是技術這種方向性的選擇將對下一步做什麼有比較大的影響。在考慮那個方向前,則要先弄清楚管理和技術的關鍵差異。

三十而立,作為程式設計師的我,該轉型嗎?技術or管理

技術與管理的關鍵差異

到了30幾歲後,轉為管理人員的程式設計師經常會調侃自己的技術能力:當年解決這種有時出、有時不出的Bug時,我常常在其前後都加幾條除錯輸出,這招很管用很可能立刻就把它搞定了。結果多年後維護這程式碼的人困惑了,還來問我,這句為啥不能去掉,看著也沒用啊,其實我也不知道,只能說運氣和人品在程式裡也是很有影響力的。

這是管理人員的一種真實寫照,大家都知道,一旦走上管理崗位,那就和ppt越走越近,和程式碼越走越遠了。雖然他仍然要跟蹤最新技術的動向,但他很可能已經無法深究很多技術細節了。

據說微軟這樣的公司推崇一個人要想走上管理崗位,那要先把自己的程式碼用遠少於別人的時間寫好,省下來的時間才用來做管理工作。這很好,也不是完全不可能,但大多時候很難,需要很強大的天分,大多數人是做不到的。

要原因是管理和技術所要處理的問題有根本上的差異。

管理者往往需要處理許多與人相關的事情,這導致要處理的事情是碎片化的,如果堅持編碼,那麼每天的打斷往往會大幅降低寫程式碼的效能,大家都知道編碼是需要專注的。

管理工作總是需要面對大量的瑣碎工作的,比如:老闆對專案不滿要趕緊去說明,免得發酵成大問題;人力缺了要趕緊協調,一是要能要到人,關鍵還得能要到合適的人;工具缺了,要趕緊購買;兄弟們有情緒了,要趕緊安撫;PPQA了有抱怨了,要趕緊改正。如果工作進一步泛化,還要涉及到預算、評估、職業路徑規劃等。

我們很難讓這些事情按照自己的節奏發生,如果管理人員做程式設計,最終這些都會變成一種對程式設計工作的隨機性干擾。所以一般來講很難把它們很好的與編碼結合在一起。想象一下,一個管理人員負責某個專案中影響關鍵路徑的某個模組,接下來上面所列的意外發生了,那這個管理者怎麼辦?

也許可以說管理也是一種技術,但管理和設計編碼這種技術的Key不一樣。做技術需要面對的是程式,程式是講道理的,StackOverflow時它一定會崩潰;而做管理時需要考慮技術因素,但更需要面對的是各種人,人則只在一定程度上講道理,所以管理不只是一種技術。因此基本上可以認為管理和技術時完全不同的兩個方向。

如果大家細心觀察周圍,就會發現,做技術(編碼)的往往可以轉去做管理,但做管理的再轉回做技術(編碼)就難了。這意味著技術背景對做管理往是很有幫助的,而管理背景對做技術則幾乎沒用。

瞭解到這種差異後,要做什麼選擇就要看自己的職業規劃了,是繼續在技術專家的道路上一條路走到底還是轉管理崗位,都是自己的選擇。不管走那條路,自己的提升與成長肯定是不能落下的。這裡免費分享一份GitHub 上標星 120k的Java中高階進階知識全面解析。主要包括 Java 基礎、Java 容器、Java 併發、Java 虛擬機器和 Java IO。另外還附帶網路、linux、資料結構與演算法、資料庫、系統設計、必會工具、面試指南等內容,非常全面。

本次是免費分享!下面展示部分截圖,點選文末名片,掃碼即可免費獲取!

(一). 基礎

1、Java 基本功

  • Java 入門(基礎概念與常識)
  • Java 語法
  • 基本資料型別
  • 方法(函式)

三十而立,作為程式設計師的我,該轉型嗎?技術or管理

2、Java 物件導向

  • 類和物件
  • 物件導向三大特徵
  • 修飾符
  • 介面和抽象類
  • 其它重要知識點

三十而立,作為程式設計師的我,該轉型嗎?技術or管理

3、Java 核心技術

  • 集合
  • 異常
  • 多執行緒
  • 檔案與 I\O 流

三十而立,作為程式設計師的我,該轉型嗎?技術or管理

(二). 併發

1、併發容器

  • JDK 提供的併發容器總結
  • ConcurrentHashMap
  • CopyOnWriteArrayList
  • ConcurrentLinkedQueue
  • BlockingQueue
  • ConcurrentSkipListMap

三十而立,作為程式設計師的我,該轉型嗎?技術or管理

2、執行緒池

  • 使用執行緒池的好處
  • Executor 框架
  • (重要)ThreadPoolExecutor 類簡單介紹
  • (重要)ThreadPoolExecutor 使用示例
  • 幾種常見的執行緒池詳解
  • ScheduledThreadPoolExecutor 詳解
  • 執行緒池大小確定

三十而立,作為程式設計師的我,該轉型嗎?技術or管理

3、樂觀鎖與悲觀鎖

  • 何謂悲觀鎖與樂觀鎖
  • 樂觀鎖常見的兩種實現方式
  • 樂觀鎖的缺點
  • CAS與synchronized的使用情景

三十而立,作為程式設計師的我,該轉型嗎?技術or管理

(三). JVM

1、Java記憶體區域

  • 概述
  • 執行時資料區域
  • HotSpot 虛擬機器物件探祕
  • 重點補充內容

三十而立,作為程式設計師的我,該轉型嗎?技術or管理

2、JVM垃圾回收

  • 揭開 JVM 記憶體分配與回收的神祕面紗
  • 物件已經死亡?
  • 垃圾收集演算法
  • 垃圾收集器

三十而立,作為程式設計師的我,該轉型嗎?技術or管理

3、JDK 監控和故障處理工具

  • JDK 命令列工具
  • JDK 視覺化分析工具

三十而立,作為程式設計師的我,該轉型嗎?技術or管理

(四)網路、linux、資料結構與演算法、資料庫、系統設計、必會工具、面試指南

三十而立,作為程式設計師的我,該轉型嗎?技術or管理

因為篇幅有限,其他內容就不一一展示了,這本進階筆記總共有512頁。對於想要進階的小夥伴來說應該會很有幫助,希望也能幫助到你。需要的小夥伴可以點選下面的名片免費領取。