最近跟朋友們到宜蘭玩(宅)了幾天,我們這群學多媒體的朋友們也有少數幾人選擇了軟體工程師的職業,因此就聊到我目前的工作。剛好 IxDA 也有一場活動聊到 UX Designer 的職涯,以及最近跟五倍紅寶石教育機構合作一場晉升資深工程師的直播,都很適合寫篇文章討論。
只是開始
資深工程師對很多人來說似乎是一個遙遠的目標,然而在台灣很多時候對工程師的區分沒有那麼細緻,也因此同樣是「資深」從技能要求到薪資水準都差距非常巨大。
舉例來說,以 Levels.fyi 網站上 Google 工程師分級的資訊來看,在 Senior(資深)以上,至少還有三個以上的等級劃分,而且 Senior 在這個階段是整個職涯的中間部分,也是大多數人最後停留的階段。
這跟我以前在面試時提問過,成為資深工程師要多久得到的答案,大概會落在二到五年不等,聽起來是相對合理的,因為這個資深的稱號很可能只能表示你在這個產業中正式成為獨當一面的工程師。
現在回想,過去曾問過前輩資深工程師的條件,得到的答案是「知道自己該做什麼」確實很有道理,能夠成為資深工程師就表示已經不需要有人告訴你該做什麼。
技術與經驗
很多時候,我們會在網路上看到有一群人技術非常厲害也非常資深,也因此經常會以為「技術好就是資深」然而這樣的判斷可能有失公正。
首先,每個產業需要的技術能力本身就是不一樣的,以「電商」來說任何一個剛學會寫程式的人都能處理,網路上也能找到許多範例。雖然很容易入門,卻不代表他的深度不夠,如果到了像是 Shopify 這種全球性的電商平台,需要的技術是非常強大的(這幾年 Ruby 3 的許多重要改進都是由 Shopify 的員工貢獻)
正因如此,技術的好壞實際上跟職等、薪資沒有太大的關聯。更重要的是經驗,因此在一些行業在招募工程師時,會預期面試者過去有相關經驗。若是一名資深工程師,如果要知道「自己該做什麼」在沒有經驗的狀況下,就難以實行。
單純就目前會做的大分類前端、後端、維運(或稱 DevOps)來看,如果沒有接觸過前端,一名後端能知道要如何處理圖檔、JavaScript、CSS 的部署方式、如何跟瀏覽器的各種特性問題調整嗎?更何況到了不同產業,可能還會有許多特殊的處理方針(如:無障礙、法律要求)
如同「刷題」這件事情是很微妙的一樣,如果工作上是需要的那麼預期面試考這些確實沒問題(或者用來篩選畢業生)到了資深,更多的是看針對題目能提出怎樣的解決方案。
目標對齊
基本上解決了對「資深」的認知,以及能力上的要求,剩下的還是去確認公司的目標跟自己的目標是否是一致的,這樣許多問題也會更好的被解決。
也許我們應該談「人際問題」然而這可能是負責管理職比較多要面對的狀況,以專攻開發的工程師來說,大多數人應該都不會有這方面的困擾,如果覺得難以相處,那麼很可能是目標不一致。
可以參考商業思維學院院長 Gipi 的面試最重要的事這篇文章。
這幾年剛好自己也在調整生活的形式,其中一個方式就是以 OKR(Objective and Key Results)的模式進行,有一個目標的「成果」在實踐許多事情是更容易有判斷的基準,也會知道「底線」在哪裡,自然就形成了「原則」
舉例來說,如果一個人目標是想要賺錢買房子,那麼他的底線可能會是在幾年內賺到多少錢,在選擇工作上的時候自然就會排除掉薪水相對低的工作,那他很高機率可以接受公司對技術的不重視。
基本上,我們很難對這件事情評斷好壞。頂多以整個社會的道德標準去看這間公司(如:詐騙)來最判斷,單就選擇高薪工作這件事情上並沒有太大問題。然而,如果能跟公司目標對齊,在薪水的議價能力上也是會相對高的,畢竟有著共同目標的人相處起來也更安心,更容易互相理解,通常也能成為工作上的好夥伴。
至少,從我目前的角度來看,成為資深工程師的關鍵還是「累積」在這過程中技術、經驗會成長,如果沒有目標那也很難長久的在某個領域累積,就可能維持在一種技術跟經驗都是破碎的狀態,也就很難跨過那道門檻。