黑客松的真諦

最近在 Facebook 分享了 Hacker News 上面一篇針對黑客松的討論,引起了一些迴響,所以決定寫一篇文章整理我的想法。

首先,黑客松本質上就是一個程式設計師的活動,所以我不只是從一個程式設計師的角度看黑客松,而是黑客松本質上就是從寫程式出發的。那些商業包裝的部分都不是本質,商業包裝並無不好,但是在不瞭解黑客松本質狀況下進行的包裝往往扭曲了黑客松的核心精神,很不幸的是這種狀況經常發生,導致大家都覺得黑客松就是包裝過的那個樣子了。

關於黑客松的歷史就不多介紹了,有兩種起源,Sun 和 OpenBSD ,見維基百科
因為起源的不同,可以形成對黑客松兩種不同的詮釋。

黑客松的 OpenBSD 詮釋其實很簡單,一群程式設計師聚在同一個地方開發一個專案,就可以叫做黑客松了。一開始 OpenBSD 的黑客松也不過是這樣而已。

再延伸一些,大家一起找個場地,合資買些飲料、食物,一起寫程式、討論程式,做事情之餘吃批薩聊聊天、認識新朋友,大家開開心心,也就是黑客松了。

上面講的是比較沒有壓力的黑客松,有時候黑客松也會有一個明確的開發目標,讓大家像馬拉松一樣在活動的幾天日以繼夜地寫程式,這時候的目標往往是用各種 hack ,在最短的時間內達成開發目標,這種黑客松就真的融入了 marathon 的精神。這也就是黑客松的 Sun 詮釋了。

不過什麼是 hack ?(印象中《黑客列傳》將其譯為「黑技」)

hack 泛指用聰明絕頂的方法解決問題,通常也包含著戲謔、嘲諷、炫耀、懶惰、小聰明的特質,著重在解決問題本身,甚至會為了快速解決問題,而故意忽略問題的其他面向。

舉例來說, Richard Stallman 做的 GNU 計劃就是對 UNIX 一個絕妙的 hack ,根據授權條款規定,他不能使用 UNIX 的原始碼,但還是靠著自己的聰明才智寫出源碼不一樣但是完全相容的程式。

另一個例子是 MIT 的 hack 傳統,有一次一群學生(應該是一群學生,不過這種惡作劇的始作俑者通常都不會被找到)把一台完整的消防車放上 MIT 圓頂:

雖然只是為了惡作劇,但仍不得不為了投注在其中的設計巧思拍案叫絕。

以寫程式來說,有時候為了解決某個問題(作出某個功能或是修掉某個 bug),可是完整的解決方案要花費很久的時間才能實作的時候,我們有時候會用一些「骯髒」的方式來解決,譬如說把某個值寫死 (hard-code) ,或是某個應該要模組化的功能,為了快速實作,直接把它做在核心裡面。

從這點講回黑客松,為了要在短時間內達到開發目標,實作過程中很可能大量使用各種 hack ,寫出各種骯髒的 code ,所以不斷 hack 的 marathon ,就叫做 hackathon 了。

雖然骯髒的程式碼不利於長遠維護,不過有時候為了 proof of concept 或是快速驗證可行性,工程師們還是會寫骯髒的 code 。反正萬一真的成功了再修改也不遲。

我翻譯一下討論串原作者所提出的質疑:

I am an american CS student that goes to (a lot) of hackathons. The purpose of this post is to get feedback/opinions from people that are outside the “Hackathon Hackers" bubble to determine whether or not my rant is founded and if the issues I am highlighting are characteristic of the tech industry.It bothers me to see how obsessed with success this generation of “hackers" seems to be. I have met people who were justifying censorship, population control and unfair business practices because they could benefit from them someday. I was expecting a little more regard to civil liberties and ethics from students and so called “hackers".
我是一位美國 CS 學生,我參加過很多黑客松。這篇的目的是聽聽那些「黑客松的駭客們」圈圈外的人的觀點和意見,來讓我瞭解我的抱怨是否具備合理基礎,還有這些我點出的議題是否真的是科技產業的特性。這年頭的「駭客」是如此地執迷於「成功」讓我有點感冒,我曾遇過一些人為言論審查、人口控制、不公平的商業手法辯護,只因為他們有天可以從此獲利。我認為學生和所謂的「駭客們」對於公民議題應該有更多的重視。

People win by making “cool" apps (Uber for X) whereas technical hacks are totally ignored.
人們製作酷炫的 app (像是 Uber for X)來贏得黑客松,卻完全不在意那些技術上骯髒的地方。
譯註:Uber for X 是指,把 Uber 的模式套用到其他領域上面去,就像我們會說 LinkedIn 是給業界人士的 Facebook 。

I am glad that people are motivated to succeed but this lead to some of them taking themselves very seriously. Often to the expense of ethics.
我很高興有人立志成功,但這導致他們自視甚高,時常到了違反道德的程度。

“There is such ignorance in this world about who we are. We are not criminals. We are innovators. We create things. We change the world.[…]"
「世界嚴重輕視我們,我們不是罪犯,我們是創新者,我們創造東西,我們改變世界……」

And this is one example among many other from a guy who has never engineered anything. Weeks are spent planning for their new “great project" with at the end little to no execution.
上面這句話是來自一個從來沒有設計、作出一個東西的人。他們花了數週來計劃這個「偉大的計劃」,但到最後幾乎沒有實際執行。

Students who believe to be 1000x SE because they can stick two APIs together and use bootstrap end-up to be very condescending older engineers.
學生覺得自己是超厲害的軟體工程師,因為他們可以把兩個 API 接在一起然後用 bootstrap 把它做得美美的,就這樣輕視較老的工程師。

This “bro"/"my framework is the best"/"Make money fast" culture that stinks a little bit IMO.
我覺得這種「我做的框架最棒,可以快速賺錢」的文化已經開始發臭了。

Hackathons are great to try out new technologies, meet new people and outreach to demographics that are traditionally under-represented in CS but I don’t like where this is headed.
黑客松是嘗試新科技、新工具,並且認識那些 CS 領域當中的少數族群的好機會,但是我不喜歡很多黑客松的發展方向。

Like HS there is “cool kids" who are “Student Entrepreneur" or “Innovator, UX Artist blah blah", “RoR Genius" etc… and the rest of the world.
就跟高中一樣,那些酷傢伙可以自稱「學生創業家」、「創新者」、「UX 設計師」、「RoR 天才」巴拉巴拉巴拉,其他人就只能在旁邊看。
譯註:大概就是「啊不就好棒棒」的意思。

My apologies if this post is a little bit ranty, I hope to get other perspectives on this.
如果這篇讀起來太多抱怨我道歉,我想要聽聽其他人的意見。

再來我想要引用幾句 Hacker News 討論串裡面特別中肯的留言:

Yes, I think that the idea that a hackathon can be “won" is silly too.
是啊,我覺得黑客松可以「被贏」的這想法也蠻蠢的。

不過後面有人補充了:

There are two types of hackathons: The Sun and the OpenBSD type. Most of what is talked here seems to be more of the former, but that term can mean two entirely different things.
有2種黑客松,Sun 和 OpenBSD 的。這邊討論的似乎大部分都是指前者,但是黑客松一詞可以有兩種完全不同的意義。

For starters, the OpenBSD one can’t be “won".
簡單來說,OpenBSD 黑客松不能「被贏」。

有另一個針對原作者的留言:

Honestly? You’re hanging out with a bunch of ambitious, entry level devs, probably all college students. This is what you should expect from a crowd like this. Take what you need and leave the rest. For more depth and maturity, go to your favorite language meetups and attend/participate in talks from/with folks with some industry experience under their belt. Kudos for having perspective enough to ask for feedback about this. You’ll be fine.
你認真的嗎?你本來就是和一群有野心的初階開發者,很可能全是大學生互動,你看到的這狀況對於這群體來說本來就是正常的。各取所需,別在意其他的。如果想要更深入、更成熟,去參加你最愛的語言的聚會,參加相關領域的演講,聽聽那些業界前輩的經驗。你有觀察到這樣的現象來尋求回饋很好,你會過得很好的。

馬上被打臉:

I think a key part of the question though is the fact that it didn’t used to be just entry level devs and college students at hackathons.
我覺得這問題的背後還有一項重要事實:從前的黑客松不是只有初階開發者和大學生。

另一個回覆:

Well, it depends on hackaton. Most of the hackatons now are commercial events, designed either to milk participants for free work or promote some third party services.
其實要看個別黑客松而定,現在大部分的黑客松都是商業性質的活動,不是想要把參加者當廉價勞工就是要行銷某個第三方服務。

I remeber when hackatons were made by programmers for programmers, when they were about hacking on actually cool projects and having fun. Those hackatons had some serious devs participating, because hell, even if you’re doing this professionally, you need to take a break every now and then and do something just for fun.
我很懷念那些由開發者籌備給開發者參加的黑客松,他們注重的是開發真正酷炫的計劃還有從中得到樂趣。這些黑客松有大量的開發者參與,因為即使你用很專業的方法開發,偶爾你還是需要休息,做些單純只是為了好玩的事情。

有個建議蠻中肯的:

Take a look at the free software community (which is incidentally very well-correlated with what the “hacker" community used to be 20-30 years ago, and has much more of a claim to being the intellectual heirs of that group than the hackathon crowd does or even the HN crowd does). There’s a lot of focus on ethics and civil liberties, and maybe a bit too little focus on effective PR and on shipping, but it’s very refreshing.
你可以看一下自由軟體社群,比起那些黑客松的人們,或甚至是 HN (Hacker News) 這邊的社群,他們跟二三十年前那些真正的駭客比較像,更有資格被稱作駭客精神的人繼承者。他們非常關注公民議題,雖然或許有些輕視公關和行銷部分,不過依舊值得一看。

最後,我希望有更多真正的黑客松啊。

真正的黑客松並不難,也不需要什麼錢來舉辦,更不需要什麼宣傳。三五好友,找個下午,一起來做個專案,大家開心寫 code 開心吃批薩喝飲料,也就是黑客松了。

我一直覺得,寫程式不只是能讓你賺錢而已,程式之所以酷炫,就是因為有駭客精神在裡面,你可以踩在前人的肩膀上,快速地改變這世界。這也就是為什麼自由軟體很重要。我認為,寫程式是改變世界最有效率的方式

所以別再浪費了。

我計劃要再寫一篇我對駭客精神的詮釋,寫完會把連結貼上來。

One thought on “黑客松的真諦

  1. 通告: 台北市政府開放資料黑客松 – 好環境gogo | 阿喵就像家

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s