【入行系列】Programmer 分多少種? (2022/23 年版)
2022-11-22
心思思想入行成為 Programmer/IT 業界的你,其中一個一定會問的問題,就是到底 Programmer 的月薪是如何!不過打開一個又一個的薪酬報告,Programmer 的職稱好像十分「多樣化」,很多人以為就是 Programmer 嘛!但偏偏又有什麼 Analyst Programmer,又聽聞有一個叫 System Analyst,沒有 Programmer 這個字是否代表不用寫 Program 呢?!
作為只打算入行、對 IT 行業未有充足了解的你,看著這堆名字時必定充滿著問號,所以今次就讓我們逐一為大家解釋每個職位相同和不同之處,讓你更清楚了這個行業之餘,亦讓你大概了解自己的前途可以怎樣選擇!
從這個表,除了 Programmer 外,你能看得出哪些其實都是 Programmer 的職位嗎?我們會在文章最尾揭曉答案!
先認識一下這幾個同義詞:Programmer, Software Engineer, Developer
一般人第一刻想到的當然 Programmer 就是 Programmer 啊,殊不知其實有另外兩個職位跟 Programmer 大同小異,它們就是 Software Engineer 和 Developer。這三個職位在 IT 行業中,其實都算是同義詞,都是指寫程式的人,但是在某些國家和公司,這三個詞的用法會有些許的不同,例如在美國的大企業,Software Engineer 中 Engineer 的字眼的確指明職位的內容會比較偏向於工程師的角色,多數較賺錢的職位都稱為 Software Engineer,而 Programmer 和 Developer 則是較偏向於軟體開發者的角色。
你亦可能曾看過某些 blog post 長篇大論去分辨這三個職位的差別,但筆者多年的經驗,真正會仔細分辨這三個崗位公司其實真的非常非常少,畢竟都是聘請寫程式的同事,所需要的技能都是一樣,箇中分別是在公司的期望、個人的心態、解決問題的方式等等略有不同,難以一概而論,若然單單憑著職位就去判斷工作內容,恐怕偏差甚多!
所以,如果你是一個新手,真的不用太在意這三個職位的差別,而招聘廣告中就單單寫著 Programmer, Software Engineer 或 Developer 的,多數都是 Junior 職位,你的入行目標就放在這三個職位的工作就可以了!
若然你是打算在香港轉行為 Programmer,更加不用分得這麼細!因為在香港的 IT 行業,對於這三個職位的用法,其實都是一樣的,而且會使用 "Software Engineer" 這個名銜的公司也不是多,所以連 JobsDB 的 Salary Report 也沒有這個位置出現呢。
工作的分別:Mobile App, Cloud, ML, Web, Frontend, Backend, Full-stack, DevOps
當我們理解到有以上三個同義詞,再看一看那些薪酬表,是不是突然發現這些表都有不少重覆的職位呢?但是,在一些職位前邊,偶然會看到 "Frontend Backend Full-stack" 這些字眼,其實這些就是說明實際寫 Programming 的平台或焦點,例如 Mobile App Developer 就顧名思義是寫手機程式的 Programmer,Cloud Developer 就是在雲端服務上作開發,ML Developer 其實是指 Machine Learning,專門作人工智能開發相關的工作,但其他字眼卻不易理解!那就讓筆者在這裡一一解釋。
Web/Frontend Developer
先來看看 Web/Frontend Developer,這個職位比較易明,他的工作內容就是寫網頁的程式,而且是網頁的前端 (Frontend),也就是你在瀏覽網頁時看到的畫面、流程、外觀,例如 Facebook 的畫面,你可以點擊畫面上的按鈕,或者按下 Like 之後的動畫,這些都是前端的工作。以前的前端工作比較容易,所以薪酬較低,但近年的網頁應用程式越來越複雜(例如 Canva, Figma 等等都是網頁程式啊!),所以 Frontend Developer 的要求和薪酬都有上升不少。
Backend Developer
Backend Developer 就開始難懂一點,後端 (Backend) 其實是你在瀏覽網頁時看不到的部分,例如你在 Facebook 上按下 Like 按鈕,這個動作會傳送到 Facebook 的伺服器,然後伺服器會在資料庫中更新你的 Like 狀態;又例如你訂閱的 Netflix,要怎麼每個月從你的信用卡收費,收費不了時又要通知你要更新信用卡資料,還要封鎖你的帳戶,這些通通都是 Backend Developer 的工作。一般而言後端的內容會比較複雜,一來大部份都是看不見的東西,新手入門會較難,而且需要處理的資料量通常較多,工作要求上對邏輯思維和解難能力都較高,所以薪酬上也普遍高一點。不過,正如上段所說,前端 (Frontend) 的工作內容亦日漸複雜,兩者的差距其實越來越少,甚至有些 Frontend Developer 會更值錢。
Full-stack Developer
了解 Frontend 和 Backend,有一個看似最型的職位,就是 Full-stack Developer (全端開發者)!就最簡單而言,Full-stack Developer 的工作就是同時包括 Frontend 和 Backend,而香港普遍公司亦是以這個想法來定義 Full-stack Developer。
但是,這個職位的定義其實很模糊,有些公司可能其實沒有那麼多預算分別聘請 Frontend 和 Backend Developer,又或者 Project 的規模沒有需要那麼多人手,所以便定出 Full-stack Developer 的職位,希望一兩個同事便能完成整個 Project。但隨著科技日新月異,挑戰越來越多,一個 Full-stack Developer 未必單純就把 Frontend Backend 兩者結合那麼簡單,還需要配合很多其他工作內容,並不是單靠 Full-stack Developer 就能完成 Project (下文還會繼續介紹更多職位!)。
筆者常常跟本校的畢業生笑說,如果剛剛畢業便拿到一個 Full-stack Developer 的職位,恐怕工作的複雜程度也不會太艱深,而兩方面都只是淺嘗的話,學習得到的未必有如單單 Frontend 或 Backend 的那麼多。至於人工呢?其實入門級的 Full-stack Developer 和其他職位都相差不大,若然希望入行的話,不用太執著一定要作 Full-stack。
DevOps Engineer
哈!最後 DevOps 這個字是其中一項最難讓新手明白的一個職位,一來這是近十多年才興起的職位,二來這個職位的工作內容並不是一般大眾看得見的東西。
DevOps 的全寫是 Software Development (Dev) + IT Operations (Ops),聽起來也仍然一頭霧水。簡單而言,在軟件開發過程中,都會出現一些重重覆覆的動作,例如要把編寫好、更新好的程式放到網絡上,或者是每次完成開發後,總是先測試才公開使用,這些重覆工作既耗時又會有人為錯誤,於是 DevOps Engineer 這個角色就是把這些重覆的工作自動化,好讓其他 Developers 在工作的時候更順暢,減省他們作重覆事情和減少人為出錯的機會,某些公司的 DevOps 更要制定公司的開發文化,在一些具規模的公司確實是不可或缺、舉足輕重的部門!
由於這個職位對工作知識、軟技巧等都有十分要求,所以一般來說,DevOps Engineer 都是有一定經驗的工程師,或者是有一定經驗的工程師想要轉職的人,才會選擇這個職位,所以人工普遍仍較高。當然幸運的時候也會見到 Junior DevOps Engineer 的招聘,若然有興趣的話,必定要把握機會!
人向高處望:Analyst Programmer, System Analyst
不知大家看了那麼多薪酬報告,有沒有發現,在香港很少見到 Senior Mobile Programmer 或者 Backend Lead Developer,難道在香港就沒有升職的機會嗎?其實不是!在業界之中,當 Programmer 要升職,很多時候會按以下的路線:
Programmer → Analyst Programmer (AP) → System Analyst (SA)
有時候聽到我們說的術語例如 AP 或 SA 就是指這些職位,從名字之中可以看到,隨著 Programmer 的升職,工作內容除了大家可預期的「寫 Program」之外,還漸漸包括了 "Analyst" 的成份,要分析 Project 的要求和佈局,而再升職更要從整個 "System" 之下去分析。
那為何不直接稱呼 Senior Programmer 就罷了啊?其實以上名稱都是因為香港政府定下的薪級表所產生出來的名字,在外國會較少會見到 "Analyst Programmer" 這個稱呼,而且有些公司亦不是按著上方的資深程度去招聘,有些公司都會聘請 Fresh Graduate 成為 System Analyst,但工作上就的確是要做分析的工作,編寫程式的時間就少一些。
作為新手的你,看到這裡都必定十分混亂!所以簡單起見,你可以按以下準則來判斷人工的水平:
- 0 年經驗:就是 Programmer
- 1-2 年經驗:升職到 Analyst Programmer
- 3-4 年經驗:升職到 Senior Analyst Programmer
- 5-7 年經驗:升職到 System Analyst
- 8-10 年經驗:升職到 Senior System Analyst
當然,以上的升職樹還要看你的職涯之中所涉獵的工作崗位和 Project 難易度,在你的職涯中曾接觸過越具挑戰性、越大規模、越複雜的 Project,就能夠更顯得出你的薪價!
答案揭曉
最後,再看一次那個 JobsDB 薪酬報告表,你能看得出你將來的仕途發展嗎?都符合你的人生目標嗎?希望這篇文章能夠讓你有更清晰的資訊,在你的職涯之中,能夠選擇適合自己的職位,並且能夠在未來的工作中,有更多的成長空間!
答案
屬於 Programmer 相關的職位:
- Developer: $28,000
- Programmer: $28,000
- Analyst Programmer: $33,000
- System Analyst: $41,000
- Senior System Analyst: $55,000
- Project Manager: $52,000 (有些 Programmer 會中途轉到這個職位,人工不一定會高一點!)
- IT Manager: $58,000 (有些 Programmer 升到一些階段不寫 Program 了)
- IT Director: $78,000 (到最後公司的 IT 都歸你管了!)
Disclaimer
最後一個小彩蛋和申報一下,本篇文章部份內文由 GitHub Copilot 的人工智能協作完成,報讀 Tecky 的全日制課程可以免費獲得 GitHub Copilot 免費使用權一年,詳情請參考 Tecky 的課程啊!
留言
閱讀更多
【入行指南】我應該學習哪種 Programming Language?
2022-08-16
不知不覺間,開辦編程課程已經近五年了,親身培訓及提攜投身科技界的畢業生都超過 500 人,回想起每一個同學在最初學習階段,對一些常見的問題都一頭霧水,同事建議我寫幾篇關於新手入門的文章,讓有意投身業界的朋友先找到一個正確方向。
【入行系列】免費資源學習編程和入行成為 Programmer? (2022 更新)
2022-08-19
承上篇,提到開辦編程課程已經近五年了,同事建議我集合過往的經驗,寫幾篇關於新手入門的文章,讓有意投身業界的朋友先找到一個正確方向。這篇緊接著上一篇說明不同語言的分別,介紹一下不同語言的入門方法。