All Posts in “在網誌裡鬼扯才是正經事”

軟體工程師的鄙視鏈(程序员的鄙视链)

最近這幾年在世界各地突然吹起了一股全民寫程式的風潮,連美國總統歐巴馬都在寫 JavaScript 了,但是身為一介靠寫程式(以及在上班時間胡亂上網)來謀生的 developer(所謂的 developer 就是「軟體工程師」的比較潮的說法),想要提醒那些想學習寫程式的人一件重要的事:慎選你的第一個程式語言。

 

在軟體工程師(中國叫做「程序員」或「碼農」)的圈子裡,文人相輕的現象可是非常嚴重的,在程式設計的各個領域裡都有著錯綜複雜的「鄙視鍊」。從程式語言、編輯器、平台到 { 是寫在 if 的同一行還是下一行,不同陣營的人都習慣鄙視來鄙視去。而其中「你用什麼程式語言?」更是大家最熱衷的一條鄙視鍊,所以對於剛踏入程式設計領域的初學者來說,萬一程式語言選得不好,可是會一開始就落入鄙視鍊的底層啊。

 

軟體工程師的鄙視鏈到底有多慘烈、多殘酷呢?

 

程式語言篇

 

懂 Functional Programming 的工程師鄙視老是把設計模式掛在嘴邊的工程師,老是把設計模式掛在嘴邊的工程師鄙視會說「你這樣寫就不 OO 了啊」的工程師,會說「你這樣寫就不 OO 了啊」的工程師鄙視會說「蛤?什麼物件導向?不是把重複的 code 寫成一個 function 就好了嗎?」的工程師,會說「蛤?什麼物件導向?不是把重複的 code 寫成一個 function 就好了嗎?」的工程師鄙視把同一段 code 到處複製貼上的工程師,把同一段 code 到處複製貼上的工程師鄙視 PM。

 

寫靜態語言的工程師鄙視寫動態語言的工程師。

 

寫組合語言的工程師鄙視寫 C 語言的工程師,C 語言工程師鄙視 C++ 工程師,C++ 工程師鄙視 Java 和 C# 工程師,Java 工程師和 C# 工程師則互相鄙視,而 C# 工程師又鄙視 Visual Basic 工程師和會把 C# 唸成「C 井」的工程師,會把 C# 唸成「C 井」的工程師則鄙視認為 HTML 是一種程式語言的設計師。

 

用 Python 3 的工程師鄙視還在用 Python 2 的工程師,用 Python 2 的工程師鄙視遇到 UnicodeEncodeError 的工程師。

 

寫 iOS 的工程師鄙視寫 Android 的工程師,寫 Android 的工程師鄙視寫 Windows Phone 的工程師。

 

有 Swift 一年經驗的工程師鄙視有 Objective-C 五年經驗的工程師,寫 Objective-C 的工程師鄙視用 PhoneGap 包裝成 native app 的工程師。

 

用 React.js 的工程師鄙視用 AngularJS 的工程師,用 AngularJS 的工程師鄙視用 jQuery 的工程師,用 jQuery 的工程師鄙視用 Vanilla JavaScript 的工程師,用 Vanilla JavaScript 的工程師鄙視 IE 的使用者。

 

會用 debugger 的工程師鄙視用 assert 的工程師,用 assert 的工程師鄙視只會 print() 的工程師;用 console.log() 來 debug 的工程師鄙視用 alert() 來 debug 的工程師。

 

寫 Ruby on Rails 的工程師鄙視所有使用其他語言的工程師。
什麼?你說 Ruby?Ruby 只是 Ruby on Rails 的一套框架,才不是什麼程式語言呢!

 

所有的工程師都鄙視 PHP 工程師。

 

工具篇

 

我的朋友都是智障 - 左邊網 on Facebook

 

大叔虎

 

粉絲專頁:真.他媽的

粉絲專頁:後娘砲主義

粉絲專頁:左邊網

 

前陣子花了一點時間研究了 Facebook 的 API,然後替「左邊網」寫了幾個新產品。不是我在說,那個 Facebook Developer Wiki 真的詳細到爆炸(我一直以為 IT 從業人員都不喜歡寫 documents),這是幾個比較有用的頁面:

 

 

我用的是官方的 PHP Client Library,一開始我也不知道該從哪裡下手,就傻乎乎地在 Facebook Developer 註冊了一個新的 app,然後看到那些 Authentication、Canvas 和 Connect 之類的鬼設定時,我就傻住了,撒小?這是撒小啊?這些東西到底是幹什麼用的啊?但是,按了那個 example code 之後,一切都豁然開朗了。

 

再多的文字說明也比不上一段程式碼範例。

 

 

左邊網 Facebook 產品線

 

每考一圖:考試是必要之惡

 

開始日期:2007.11.18

更新日期:2010.01.10

 

梁實秋:「考試是必要之惡。」

 

不知道算不算是傳統,我們資工系的期中考總是要考很久,通常期中考的所有科目考完的時候,也差不多要開始期末考了...... 當然,我相信絕對不是因為「資工系的教授都是王八蛋」,而是因為教授們為了讓我們學生能夠時時刻刻專注於學習,在求學的路途上不要有絲毫的放鬆,才會費盡心思地安排這些充實到死掉的「期中考月」與「期末考月」,如此的恩澤,我們都感受到了,真的。

 

好吧,那不是重點,我要說的是,不知道是什麼時候,我突然冒出一個想法:我把它叫做「每考一圖」(我知道,這個名字爛到靠北)── 因為每到期中考、期末考的時候,明明明天就要考試了,但是,只要一坐到電腦前,我就會開始想做一些跟考試完全沒有關係、對考試也絲毫沒有幫助的事,像是「寫網誌」(就像現在......)「看漫畫」「剪指甲」「洗衣服」「整理書架」「清理鍵盤和滑鼠」「看陌生人的 Twitter」或是「把牆壁上的貼紙的痕跡摳掉」之類的事情......

 

推特小劇場:我好爛,不要跟我說話

 

Fanfarlo

I'm A Pilot

 

 

推特小劇場

顧名思義就是在 Twitter 上演的一人孤獨靠北小短劇

一個人 oh yeah

 

之一:

 

「小兄弟,你要去哪兒啊?」

「馬眼。」

「那你順著這條水路一直下去就會到了。」

「老先生,你幹嘛一直待在這裡?」

「小兄弟,俺身不由己啊~」

 

醫生:「你有尿道結石。」

馬如風:「那ㄟ安內啦?!」

 

以上是「馬如風的尿道」小劇場,超後現代的。

 

Twitter 推特 是我心樂歌

 

Twitter LOGO

 

在人類掌握電力以來,最 powerful 的發明無疑是 computer;從 computer 出現到現在,最 wonderful 的發明一定非 Internet 莫屬;而 Internet 普及之後,最 magical 的產物,根本就是 Twitter 了,當然,還有 Google Search ─── 你瞧,身為一位稱職的 CSIE 的學生,總是要把句子裡很多沒有必要(完全沒有必要)的部份換成英文用詞,因為教授都是這麼說話的。

 

我要你們在下禮拜前搞懂怎麼用這個 sensor 傳 data。這是之前你們學長還沒寫完的 code,如果有什麼問題,網路上有很多 document 可以查。第二個 function return 的是 object 不是 address。這個 pointer variable 不能隨便 assign,它才不管你什麼 type,compiler 當然會 error 啊!

 

 

我舉幾個例子好了。

 

我每天都要做一件以前沒做過的事 DNA = Daily New Achievements

 

開始日期:2007.3.10

更新日期:2009.6.27

 

我常常就覺得今天怎麼都跟昨天一樣

明天怎麼又和今天一樣

每天好像都一直在做那些我一輩子都在做的事

我覺得有點膩

為了讓日子變得稍微有趣一點

我做了一個決定:

 

我每天都要做一件以前沒做過的事

Daily New Achievements = D.N.A.

 

我現在做決定的時候

都會想著「反正沒做過,那就試試看好了」

但是

吃自己的屎和在捷運暴露下體這種事我還是沒辦法