iT邦幫忙

2022 iThome 鐵人賽

DAY 1
11
Software Development

軟體架構師的自我修養系列 第 1

[Day 1] 軟體領域的職涯規劃

  • 分享至 

  • xImage
  •  

近年來越來越多人跨領域、跨職能進入軟體產業,無論是前端或後端開發,甚至系統軟體都有許多人願意挑戰。

畢竟,軟體開發是一條具有挑戰性和成就感的道路,且無論在什麼樣的崗位,都能拿到不錯的薪水糊口。對於原本非資訊領域的人來說,富有極強的吸引力。

因此,如何在軟體開發的職涯上找到方向並且定位目標是一件重要的事。

概括來說,軟體產業的轉職樹如下:

Junior,以下簡稱Jr,是所有軟體工程師的第一站。當你具備寫程式的能力,並且拿到進入公司的門票,那麼你已經是一個Jr了。

Senior,以下簡稱Sr,是Jr的第一次轉職,在公司內部稱為晉升。一但在工作領域中取得不錯的成果,且熟悉公司內部的組織分工,並能完成每次被交付的使命,那麼就有很大的機會能夠晉升成為Sr。

Principal,以下簡稱Pr,這是作為軟體工程師的最後一哩路。除了能夠完成當下的事務,同時也具備規劃未來方向的能力,並且兼具能夠領導團隊的統禦力,那麼就有資格被承認為Pr。

Architect,稱為架構師,這在軟體開發來說是一條比較特異的路。並不是每間公司都有這樣的職位,且架構師在每個不同的組織也扮演不同的角色。也許你會聽過Digital Architect、System Architect、Solution Architect等,這些都是架構師的範疇且每個角色都有不同的定位。

因此這個系列文會帶領每個讀者了解架構師是什麼?需要具備什麼樣的能力?要怎麼規劃職涯發展?

但首先,讓我們回到原來的轉職樹上。

所以每個軟體從業人員都應該要以Pr或架構師為目標嗎?

身為一個資深架構師,我的答案是不一定。

讓我們換個角度來理解轉職樹。

用傳統RPG的職業來表示就類似這樣。

如果你的目標是在新手村附近做個普通冒險者,有著不錯的收入並且過著相對輕鬆的生活,那麼初心者就足夠了。

畢竟,採藥草、打史萊姆並不需要你放隕石術。

但當你不滿足於打史萊姆,想要挑戰更高階的怪物,例如獨眼巨人,那麼你就需要更強力的武器、更有威力的法術。我想此時你需要的正是魔法師這樣的位階。

直到,獨眼巨人都無法滿足你的那時。你眼裡所看見的是遠古巨龍,你需要的不僅是無與倫比的法術,你同時也需要組織你的團隊,要規劃戰術,需要預先制定站位、分配角色最後執行狩獵。那麼,你就需要具備領導力、洞察力、執行力等,大魔導師或大賢者才有辦法勝任。

是不是每個人都想狩獵遠古巨龍?我相信不是,因此這裡的職階並不代表著位階高低,僅僅只是想達成的目標不同罷了。

即便是狩獵遠古巨龍,同樣需要有人在背後維繫後勤,例如提供藥草。無論是什麼樣的角色,都有他的一席之地,就算只是初心者,他採集藥草的能力說不定比大魔導師還厲害。

但我眼光鴻遠,想要轉職,該怎麼做?

讓我們回到初心者的例子。初心者要如何能夠轉職成為魔法師呢?

採一輩子的藥草、打一輩子的史萊姆是不可能的。這樣頂多能夠讓採集藥草的效能非常好而已。

要能夠轉職成為魔法師,必須要試著挑戰更高級的任務。需要離開新手村,去尋找新的怪物,例如:獸人,並且嘗試擊敗他才有可能繼續升級。因此你需要花費時間移動、投入金錢升級裝備並且思考攻略的方式。

這些同樣應用在Jr升級成Sr的過程。需要花費額外的時間學習並且持續練習寫程式的技巧、買書、參加研討會並且思考如何將這些獲得的技能運用在工作之中。一但工作的成果得到累積,就如同狩獵了無數獸人、巨型蜘蛛、沙蟲等自然而然就能取得向上晉升的門票。

那Pr和架構師該怎麼做選擇?

一但目標是遠古巨龍,且已經成為獨當一面的魔法師,那麼下一個問題是:有兩條截然不同的道路,該選擇哪一條?

讓我們先從Pr和架構師的差別談起。

X軸是軟體產業需要具備的硬實力,撇除溝通、協調、語言能力等軟實力概括列了大項。Y軸是等級分,但也只是示意,畢竟每個人具備的等級是不同的。

從示意圖中可以看出,Pr的程式能力應該是頂天了。Pr應該具備非常優秀的程式能力,同時在其他面向上也具有一定的等級。

至於架構師,不得不說,架構師沒有這麼強大的程式能力,因為架構師的時間必須要花費在更多周邊的技能。舉例來說,架構師需要了解各種不同的資料儲存,並且能夠在系統設計時給出精準的意見。此外,架構師還需要理解軟體業界的趨勢,並且掌握系統演化的方向,例如微服務的興起,要如何將單體解構?又例如,為了解決實時(real-time)問題而提出的串流架構背後的精神和原理。再舉個例子,除了一般滿足商業邏輯的應用,架構師還必須負責最近方興未艾的大數據分析和機器學習,有各種框架可以選擇,又該如何挑選?

這些其實都是架構師的日常,在各種選項當中做出抉擇,而其背後所必須要投入的學習時間是非常可觀的。

回到原來的問題,為什麼必須要在架構師和Pr間做抉擇?因為這兩條路線的養成過程是截然不同的。

以Pr來說,Pr可專注在單一一個領域不斷深耕,例如:電商,其了解電商的各種實務需求,如何管理庫存?金流、物流如何整合等。並且專精使用1-2種程式語言,能夠完成各種電子商務的產品需求。

以架構師來說,架構師必須要在複數領域下累積實務經驗,且同時通曉複數程式語言,無論前後端、資料分析、數據工程,都需要具備眼界和經驗。以我來說,我待過各種產業:

  • 嵌入式系統
  • 網路安全
  • 直播串流
  • 電子商務

同時各種產業運用的程式語言也不相同:

  • C/C++
  • Python
  • Golang
  • Javascript, Nodejs
  • Ruby on Rails

身為架構師,這些都只是表面上看到的。實際上,各種資料儲存、各種程式框架都必須深入了解。

如果,學習是你的興趣,那麼也許架構師可以是你的選項。

系列文綱要

上述提到了架構師背後所需要具備的各種能力,我相信很難在一個30天的系列文中詳細闡釋,但藉由這系列文應該有辦法讓大家了解一個核心問題:「架構師是什麼?」

對我來說,軟體架構就是一個不斷取捨的過程。但到底取捨什麼?有什麼需要考慮?在這系列文會一一為你開路。

因此整個系列文會包含下面幾點:

  1. 分散式系統的方方面面
  2. 資料儲存的點點滴滴
  3. 軟體開發和測試的奇淫巧技

看起來包山包海的綱要,其實就是架構師的日常,歡迎大家來體會。


下一篇
[Day 2] 像個專家般做設計
系列文
軟體架構師的自我修養31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
3
微中子
iT邦新手 4 級 ‧ 2022-09-11 21:09:57

超期待這系列文,筆者有 Github 或 LinkedIn 嗎?

lazypro iT邦新手 5 級 ‧ 2022-09-11 21:12:40 檢舉
1
cool21540125
iT邦新手 4 級 ‧ 2022-09-11 22:28:15

剛讀完第一篇
不曉得讀完會不會有幫助(相信會有), 但可以肯定的是, 寫得非常有趣!!

0

這麼好看的 小說 不是我是說技術文章
我想要養滿三十天一次看完
嘿嘿

我要留言

立即登入留言