這篇文章感覺可以給從在思索要如何成長成senior的junior的工程師來看,或你可以藉此思考什麼是senior工程師?(但私心也沒有很推,覺得講的內容也還好哈哈。)
這場演講的核心問題是:什麼是senior developer?
通常大家的定義會是,有好幾年經驗的工程師,可以稱作senior。但這個定義太過模糊,也不精確,更無法鼓勵大家提昇自我。所以更理想的定義方式是你做的事情有何不同。
講者把工程師簡單分成三個階段:
越往後面走你就也代表你越具有senior engineer的能力。
不過要注意的是,一般來說你必須要具備有前者能力或經驗,你才有辦法往下面一個階段。有些人是連1或2都做不好就一直想做3,只發想問題從不解決,那可能就不是合格的senior engineer。
另外對於leader來說,也必須要記住這幾個分級,有意識的讓junior去練習下個階段的實務,並且好好指導他們與放手讓他們去嘗試,他們才能真正的獲得成長,也才能成為你的戰力。
整個演講雖然很長,不過大部分都在說故事XD,所以相對可以探討的點少了許多。也順便讓我休息一天(毆飛)。
什麼是senior engineer這個問題也是古老的問題了,大家對這個問題的看法也不盡相同。對於工作時間長短來判斷資深程度真的是很不合理的作法,不過神奇的是一般的Job description上的需求都會寫至少要工作多少多少年才能投某個缺。我這邊是可以很肯定的說,真的不用太在乎那個數字。你的眼界跟能力在哪裡其實未必會真的隨著你的年資增加而增加。我自己面試過不少工作超過8年的,但是有些思考的深度只到上面說的2而已,那在面試上可能就不是個好的現象。
我自己覺得對我來說junior跟senior的mindset差別最大的就是「主動思考」。給你事情你可以做好是合格的junior,但如果你要成為合格的senior就必須要主動思考,思考的廣度可以是code level,可以是你使用的工具背後的抽象,可以是系統層面的抽象,可以是產品層面的,可以是流程上面的。如果你只是盲目接收與完成我們給你的任務,不會主動思考,那我覺得很難真的到達senior的level,畢竟會寫扣的人滿地都是很容易被取代,但你會主動思考,能有完全的自主性,才能真正成為公司的戰力。
另外講到leader的部份,幾天前的文章有寫到關於delegation的事情,那時主要講的是delegation的目的是為了讓你scale,但這演講提到了一個非常重要的點:delegation也是個training非常好的時機。你必須要有目的性的delegate事情給別人,讓他們感受到一些挑戰,已達到訓練你的member的目的。這部份真的超級重要!當然我也必須承認不是每件delegation都能這麼有目的性,畢竟事情很多總是要有人做雜事跟瑣碎的事XD,但對於比較大型的任務,就可以盡量嘗試做到這件事。
一個小故事,我們team裡面之前有個成員做事做很快,學習也學很快,根本就百年難得一見奇才。而我知道他對於技術的熱情超高,但對產品本身並沒有那麼高的熱誠,因此盡量給他的任務就是技術難度高且複雜的,讓他不斷的有高經驗值的怪可以打,他也因此能成長飛速。
另一方面是雖然他是好的problem solver,但是卻不是個好的problem finder,三不五時會跟我要更多ticket,一開始我還會一直苦惱要給他什麼事情,但到後來我決定要想辦法讓他養成自己思考跟尋找問題的人。所以我做的事情就是跟他說:「某個服務就完全丟給你了!你要對這個服務的未來負責。」(這是什麼把小孩嫁出去的情結@@)然後他就會開始思考這個服務有哪些常見問題或code有哪裡很亂,就開始自己創ticket給自己找時間寫XD,一方面訓練他的seniority也一方面訓練他的leadership。所以啦,delegation = 好的training機會,別白白浪費了。