軟體工程師的修煉與成長 (10) — 四維的技術能力

vgod's blog
May 2, 2022

--

Image source: Unsplash

過去幾年正好是軟體工程師的黃金年代,各大科技公司不斷擴張並抬高工程師的行情,每個產業也都想要雇用軟體工程師來把企業改造成科技公司。資訊科系的畢業生供不應求,這個需求甚至外溢到任何跟電腦或程式有扯上邊的科系,只要有在學校寫過一點程式,不管是Fortran還是Matlab,也一批批的跑來找軟體工程師的工作。即使原來在完全不同領域工作的人,也都紛紛加入coding bootcamp,想要密集訓練幾個月的程式設計後就轉職成軟體工程師。

現在很多科技公司甚至還有「學徒計畫」,想要招聘一些非傳統CS (Computer Science) 背景但有潛力的人來當工程師,不但能增加公司的多元性還能補足一些招聘上的需求。在這麼多需求的情況下,還真的有不少人透過bootcamp或是學徒計畫成功轉職,結果就是讓更多人趨之若鶩。

但成為工程師真的有這麼容易嗎?一個大學CS學位和bootcamp產生出來的工程師技術能力到底會差在哪裡?如果能透過bootcamp學幾個月就變成工程師,為什麼還要去大學念四年的CS甚至是花更多時間唸碩士或博士?另外,這是不是代表成為工程師的門檻很低,大齡工程師未來很快就會失去價值了?

技術能力的差距

這年頭要說自己是「軟體工程師」似乎太容易了點。買本書學個HTML和Javascript照著範例做一做,不用幾天就能做出自己的web app。如果目標是進入軟體公司工作,去個bootcamp花三個月,然後刷個一兩百題LeetCode,似乎就能找到工作了。想想要成為醫師或律師要花多少時間在學校要考過多少考試才能得到執業的資格,天底下好像沒有哪個專業工作的進入門檻是這麼低的。

會有這樣的現象,當然很大原因是這個行業的需求太過強烈。想要軟體工程師的公司太多,但供給卻太少,所以只要稍微能寫點程式的都可以成為某種程度的工程師。但是,我在「軟體工程師的修煉與成長 (2) — 規模與複雜度 」一文中提過,架一個「看起來像Facebook的網站」服務幾個人並不是什麼難事,但要真正把規模從服務10個人提升到能服務10億人的程度就非常、非常難。在巨大的流量下,只要是會出錯的事就一定會出錯,即使是百萬分之一機會才會出現的bug都會變成每天都出現的常態。

同樣的,看起來同樣是軟體工程師,其背後的技術能力是有一個非常寬的光譜的。這個技術能力的差別,會體現在他們能解決問題的廣度和深度上,還有他們打造出來的系統品質上。

那麼,這個「技術能力的差距」到底是什麼?

剛開始學寫程式的人,很常會把技術能力跟「對程式語言的熟悉度」劃上等號,好像如果很熟悉某個語言的奇技淫巧,或是能寫出複雜難懂的程式碼就是技術高手。我在剛開始學程式時也經歷過這種時期,但後來慢慢瞭解到程式語言不過就是跟電腦上其他系統溝通的一種介面。如果只知道自己的程式行為,而不了解其他跟著連動的系統,是完全沒辦法寫出正確又高效的程式的。

--

--