2017年4月4日 星期二

到底甚麼是Senior engineer

在工作滿2年多之後, Junior engineer的我開始思考甚麼是Senior engineer, 就跟打遊戲練功升級一樣, 想要有一個明確的衡量指標, 明白自己現在的程度, 才可以好好規畫職涯/人生的下一步.

具體來說我是當了1年半的Backend Programmer(後端工程師), 以及半年多的Devops, 而Devops的經驗讓我有完整的視野來思考, 身為一個Senior engineer 是該具備些甚麼

1 看待問題的能力


If I had only one hour to save the world, I would spend fifty-five minutes defining the problem, and only five minutes finding the solution.
愛因斯坦說過如果給我一小時拯救地球, 我會花55分鐘去界定問題, 花5分鐘解決
(該文真正出處http://quoteinvestigator.com/2014/05/22/solve/)

多半會以為是解決問題的能力, 這是以技術與研究的角度出發, 進入職場後, 技術是用來實現商業, 市場, 使用者等多方需求, 多半問題到你手上的時候都是片面的, 或者資訊不齊全,只針對片段的問題作答, 會不斷碰到相同問題, 或者一系列牽連的後果蜂擁而來.  因此需要理解環境背後的前後關係, 才能夠真正解決問題

反指標: 遇到問題就埋頭苦幹, 做完才發現答非所問

另一方面經驗一直是職場累積的一個重要因素, 但過去的經驗應該是幫助我們解決問題, 而非限制我們的思考. 隨著商業產品的變化以及科技推陳出新, 你會遇到過往經驗無法解決的問題. 有時過往經驗幫助我們識別, 有時是一個全新問題, 如果還是用已知的框架去限制, 會適得其反. 

反指標: 遇到問題直接用過往經驗思考, 儘管不合仍是硬套

2 理解複雜事物的能力


包含是理解技術與商業上的關聯. 因為隨著商業發展, 或者科技進步, 你會持續遇到
  1. 複雜的客戶需求
  2. 交錯的架構設計
  3. 不明確的邏輯關係
  4. 未知的潛在衝突
從完成一件商業產品的過程, 先要釐清楚客戶確實提出的需求, 假設尚未提出或者未來潛在的市場可能, 解決其中的矛盾, 並簡化設計架構達到最佳化, 最後總結出可用資源內團隊可以達成的可用產品.

更確切來說, 事物起始於經過抽象後的表層需求, 這種以簡化成可敘述出來的需求, 直觀看很容易明白, 但在實踐商業價值過程中, 就得解構出背後的邏輯, 還有前後的因果關係, 接著抽象化成可執行的設計架構, 處理衝突與聯合外部資源等, 最後才成為那個最簡化的產品,

有足夠的複雜事務理解力, 才有辦法事先評估, 設想, 尤其是針對未來不確定性的部分, 充分想像可能性並避開錯誤, 就會有掌握, 風險也就變成可控, 產品與專案也就有一定品質的完善 

反指標: 追求複雜與新的技術, 不明底層意義, 也沒有造成商業貢獻

3 不斷自我迭代的能力


資深, 是一種主動進化的狀態. 擁有當前能夠處理所有職場上的能力之後, 還要加上時間的因素. 隨著時間演變, 不僅科技持續進步, 商業也不斷追求高成長率. 個人的能力也要可以保持一定的水準.

一個資深的工程師, 不會只有工作內的資深, 而是時時刻刻都在呈現這種狀態, 也就是持續迭代學習與成長. 有可能是思考過去的已完成的部分是否可以再優化, 或者閱讀其他材料, 試著連結看似不同的技術, 市場等事物. 當環境變遷時候, 可以承受挑戰, 用那已儲備好的101種方法, 來不斷試驗與尋找出路.

反指標: 滿足於當前狀態, 或者只專注當前的技術, 卻不去連結思考其他可能



沒有留言:

張貼留言