2013-06-16

關於工程師 (Reply to 三種工程師 -- Coder, Hacker and Architect)

這篇主要的目的是回應 <三種工程師 -- Coder, Hacker and Architect>,並亂扯一下我目前的心得,建議可以先看完那篇,會比較好懂。

最大的問題是我不認同這個分類,通常分類都是互斥的,但文中的這三個類別,給我的感覺卻怪怪的,另外也不該有哪一個更高尚的比較。

Coder

第一個角色是 Coder,就是僅僅把寫程式當成工作的人。廣義的來說這不受限於寫程式或是工程師。這種人就是沒興趣沒熱情,為了謀生而工作的人,或是其實不缺錢,但搞不清楚為什麼而工作的人。

這個問題是,這些人就是把工作當成雜事或是職業,而不是志業,每天早上去上班,因為必需要去,而不是自己想去,去了之後就開始期待領薪水,期待放假。而讓自己做好的主要工作動機都是外部因素,升遷、加薪、權力。

把工作看成志業的人,會認為工作本身就是他的目的,動機來自於內在因素,覺得有貢獻,覺得在實現自我。當然這種人也是在乎薪水跟升遷的!

這兩個的差別就是工作態度。會走上 Coder 之路的人,是因為他在選擇工作時,思考的是「會做什麼」,「擅長做什麼」,因為我會寫 Code,我唸了資訓相關,所以找了一份寫 Code的工作。

曾經我也很瞧不起這種人,就是因為有這種人在,造成劣幣驅逐良幣,工程師的地位低落,我甚至覺得,在一個公司裡,這樣的人大概有八九成,一個人到底有沒有興趣有沒有熱情,其實都會彰顯出來的。不過阿,就像最近很紅的這篇「我在微軟學到大學沒教的事」所說,不是每個人提到寫程式時都會滿腔熱血,是阿,It's all about priorities,也許他就是不想成為一個偉大的工程師,試著去尊重每個人的選擇。

不過雖然這麼說,這種人也讓人覺得很可惜,我認為他們應該試圖尋找一個可以當作自己人生志業的工作。就如同馬斯洛說的「一個人最好的運氣和最大的福分,就是有人付錢請他從事他衷心喜愛的工作。」

所以怎麼找到自己的志業呢?

管理學大師 Stephen Covey 認為一個人的獨特貢獻應該是天賦才能、工作熱情、需求、道德良知的交集處 (From <Great work, Great Career>)。

哈佛幸福課講師 Tal Ben Shahar 則說,可以透過 MPS (Meaning Pleasure Strength) 的流程來幫助自己,思考什麼東西做起來有意義,快樂,而自己也擅長。

LinkedIn 創辦人 Reid Hoffman 也說了一個類似的,什麼是你的競爭優勢,是資產、抱負、市場狀況,三者缺一不可。

所以,我想應該很清楚了吧!

Hacker

再來就是什麼是 Hacker,有人提到文中 Hacker 的定義怪怪的,是的,這正是我想說的,Hacking 是一種精神,擁有 Hacking 精神的人就是 Hacker,更詳細的可以看 How to become a hacker,另外說自己是一個 Hacker 也怪怪的,「You aren't really a hacker until other hackers consistently call you one」,就像你不能自己說自己是個好爸爸,這要由你的小孩來說。話說,我也想成為一個 Hacker,可以有 Hacker 來認可我嗎 XD

前陣子在 PyCon TW 聽了一個 talk,有一個我很喜歡的 Hacking 定義:「在條件限制下,達到預期外的效果」,講者說了一個 Hack checkIO 的故事,checkIO 是一個透過玩遊戲學寫程式的網站,基本上 online judge 就是給你一組 input,要求算出某個東西,然後跟標準 output 比較,看你是否正確,checkIO 使用
assert checkio(<given input>) == <golden output>
的方式比較,結果他把 == 做 operator overloading,讓結果不管是什麼,== 都是 True,瞬間通通破台了。這就是 Hack,預期外的效果。

而 Hacker 也沒有限制要是工程師,只是對於軟體工程師來說,作這樣的事有較大的優勢,很容易作些什麼就讓這個世界更好。是的,就是解決問題,然後回饋社會。用這樣的觀點來看,g0v 就是一群很棒的 Hacker。

Architect

Architect 其實是個職稱,地位比 Engineer 高很多,我認為分成會寫 code,跟不會寫 code 的,在大公司裡很多這種不會寫 Code ,只會動嘴巴的,well... 不予置評。

其實人人都是 Architect,程式設計師的三個美德,懶惰、不耐煩、傲慢。為了懶惰,自然而然就會產生有秩序,可以永久保存、重複使用的東西。這麼說好了,打造這些東西都是為了日後可以偷懶而努力。

再來原文中所說的 Architect 災難,比較像是 Joel on software 中的 architecture astronauts,當架構過了頭,而失去了原本真正要解決的問題。

最後

我發現我有點想要偷懶,開始虎頭蛇尾了 XD,不如就在這邊下個結論吧。
我一直認為工程師是很偉大的,也期許自己可以成為一名偉大的工程師,所以就讓我們一起

Hack the world and code for tomorrow!