從一篇 2009 年的舊文章〈The Eight Levels of Programmers〉中讀到軟體工程師分成 8 個層級,我認為這可以幫助你我重新檢視職涯歷程,這沒什麼高深的理論,但用一般經驗來看,不論工作幾年,我相信都可以在這些層級中,找到你我自己。

8 個層級,你是哪一類型呢?

1. 已故的偉人級工程師 (Dead Programmer)

這應該是最高境界,你寫的程式、論文、演算法、系統已經超越了死亡,對後世影響甚鉅。Wikipedia 已經把你的生平詳細紀錄,無數個網站專門在研究你的作品。

達到這樣程度的人不多。

2. 成功企業家型的工程師 (Successful Programmer)

你不只是程式設計技術上的專家,還建立了企業組織,甚至影響整個產業。大家都把你當作榜樣,當作效法的對象,但你知道,要達到這個程度,靠的不只是技術而已,還有很多額外的技能和特質。

3. 名人型工程師 (Famous Programmer)

當個程式設計界的名人,很好,但你能靠著這個名聲換取日常生活所需嗎?如果不行,建議你最好還是要有個正職養活自己。

有聽過這一句話嗎?

Famous is good, but successful is better.

4. 厲害的高級工程師 (Working Programmer)

就程式設計而言,你是一個成功的工程師。你所在的公司都因為你的貢獻而有所發展,公司仰賴你,同事尊敬你,而且你從來不必擔心找不到工作,只要你想換公司,不用多久就有人來找你。

但是,你的下一步呢?

5. 努力向上的工程師 (Average Programmer)

你的專業已經夠好到處理各樣問題,而且你自己知道你不是個厲害的高級工程師,更可能的是… 你永遠無法變成那個樣子。

如果你是一個努力向上寫程式的工程師,但你發覺自己可以在其他領域搞得出色,那就大膽地跨出那一步吧。

6. 業餘型工程師 (Amateur Programmer)

你真的熱愛寫程式。你可能正在架設網站、加入某個 open source 團隊,或單純為了興趣而開發一些有趣的應用程式。透過這樣的練習,你很有可能成為一個厲害的高級工程師 (而不是一般般工程師)。

7. 就是個工程師 (Unknown Programmer)

大部分的工程師「就是個工程師」,寫程式就只是個工作,無法成為生活的一部份,沒有人在意,也沒有人想知道那個工程師的名字。

8. 糟透了的工程師 (Bad Programmer)

他們缺乏解決問題的專業、技能,所以經手的事情 (流程、程式) 都只是徒增其他人的痛苦。這已經夠慘了,更慘的是,他們不但不知道自己遭透了,而且還無法辨認出和他一起工作的另一個「遭透了的工程師」,然後大家一起攪和攪和,搞爛整個專案,甚至整個團隊。

你怎麼看待自己?

從 2000 年到 2007 年,我作了的 7 年的韌體 (Firmware) 工程師,其中的經歷也和這些層級有點類似。

我在轉換跑道前,我自認是個努力向上的工程師 (Average Programmer),當時我有幾位師父,他們都是我的榜樣,以層級來算,他們都可以算是厲害的高級工程師 (Working Programmer),非常犀利。但對當時的我來說,我一個一般般工程師,認為我再怎麼努力,也無法達到師父們的層級,像他們那樣厲害 (不是組織上的,是能力上的) 。

所以我重新檢視自己的天分、能力、興趣,抓住一個因緣際會,轉換生涯跑道。

One more thing

The Eight Levels of Programmers〉中有幾句寫得非常契合我當時的狀況:

Talent often has little to do with success…
Don’t knock the value of self-awareness. It’s more rare than you realize. There’s nothing wrong with lacking talent. Be bold. Figure out what you’re good at, and pursue it. Aggressively.
天分 (Talent) 和成功 (Success) 不能劃上等號…
不要輕忽了自我察覺,他往往超乎你所能的理解的。缺少某一方面的天分並沒有什麼不對,大膽一點,找到你在哪一方面可以做得很好,努力去追求那個領域的極致,而且… 你要更積極一點。

就像我說過的:讓魚去游泳、讓鳥去飛翔,硬要顛倒過來,只是增加自己的困擾。

Similar Posts

發表迴響