一群“代碼控”,從陌生到相識(shí),參與到24小時(shí)不間斷地開(kāi)發(fā)當(dāng)中。
電影《社交網(wǎng)絡(luò)》里的一幕讓人印象深刻。馬克·扎克伯格在哈佛的一間宿舍里舉行了一場(chǎng)編程比賽,贏家成為公司里的第一位實(shí)習(xí)生。其實(shí),每隔一段時(shí)間,F(xiàn)acebook便舉辦“黑客馬拉松”比賽,讓員工在一夜之間想出好的點(diǎn)子,并完成項(xiàng)目開(kāi)發(fā)。
2012年5月6日,一場(chǎng)真正的黑客馬拉松比賽在上海和硅谷兩地實(shí)時(shí)上演。一群素未謀面的程序員于周末匯聚在一起,他們出于對(duì)代碼的偏愛(ài),自愿報(bào)名參與到24小時(shí)不間斷的開(kāi)發(fā)當(dāng)中。經(jīng)過(guò)硅谷和上海兩地的終極PK,最終來(lái)自上海一款名為CHOP的產(chǎn)品摘得冠軍。
比賽結(jié)束兩三天后,曾為“網(wǎng)友”的兩位冠軍程序員互通電話(huà),籌備第二次見(jiàn)面,商討是否應(yīng)該將CHOP的功能繼續(xù)完善。
CHOP團(tuán)隊(duì)1號(hào)程序員桂林,負(fù)責(zé)后端開(kāi)發(fā)。他非計(jì)算機(jī)專(zhuān)業(yè)出身,現(xiàn)為塔防類(lèi)社交游戲《宿命守衛(wèi)者》的開(kāi)發(fā)者之一。高中時(shí)代開(kāi)始瘋狂迷戀編程,大學(xué)時(shí)代過(guò)于極端,荒廢專(zhuān)業(yè)課程,每天浸泡在圖書(shū)館潛心鉆研各種編程書(shū)籍,自學(xué)成才。學(xué)生時(shí)代的得意之作是將漢諾塔的解題過(guò)程可視化,做得像游戲一樣炫目。
桂林是在編程和代碼中找回的自信。從事“苦逼”的程序員工作多年之后,依然以視碼代碼為終身事業(yè)。正如他在微博簽名中所描述:“不懂設(shè)計(jì)模式和算法,但只要哥一寫(xiě)代碼,就是美的”。“如果可以做一輩子程序員,有什么不可以?”剛過(guò)而立之年的他覺(jué)得國(guó)內(nèi)不歡迎年齡大的老程序員的現(xiàn)象十分嚴(yán)重,他希望自己這份生涯能永遠(yuǎn)延續(xù)下去。他屬于同事眼中的“強(qiáng)力程序員”,經(jīng)常處于24小時(shí)開(kāi)機(jī)狀態(tài),一直開(kāi)著界面,各種操作全靠鍵盤(pán),從不使用鼠標(biāo)。他經(jīng)常活躍于行業(yè)內(nèi)技術(shù)性論壇上,曾寫(xiě)Node.js的庫(kù)Mongoskin及其它庫(kù)分享給程序員們使用。
2號(hào)程序員魏子鈞,亦80后,非計(jì)算機(jī)專(zhuān)業(yè),酷愛(ài)編程,來(lái)自盛大創(chuàng)新院。圈內(nèi)人士均喚之網(wǎng)名“大城小胖”,可謂人如其名。實(shí)際為黑客馬拉松比賽現(xiàn)場(chǎng)的工作人員,做好服務(wù)比賽選手等后勤工作之后,不甘寂寞、不碼代碼就手癢的他直接殺入CHOP團(tuán)隊(duì)參與開(kāi)發(fā),負(fù)責(zé)前端開(kāi)發(fā)。
大城小胖自稱(chēng)“非典型性”程序員,一邊戲謔地稱(chēng)己為“碼農(nóng)”,一邊在工作之余搗鼓代碼、研究程序到凌晨?jī)扇c(diǎn)鐘,他最大的興趣是每天從程序和技術(shù)中尋找樂(lè)子。最為遺憾的是身為“代碼控”多年以后,卻依然未能有一款經(jīng)典作品橫空出世。大城小胖最近一直在扛著一本幾百頁(yè)厚的計(jì)算機(jī)幾何學(xué)認(rèn)真研究,一如既往努力提升自己。他說(shuō),“做游戲?qū)?shù)學(xué)模型的要求特別高”。
團(tuán)隊(duì)中的產(chǎn)品經(jīng)理為T(mén)homasYao,為一名郵件列表的管理員,在CHOP產(chǎn)品功能的完善和DEMO演示環(huán)節(jié)中發(fā)揮了積極作用。
兩名程序員一致認(rèn)為,團(tuán)隊(duì)之所以能獲獎(jiǎng),Thomas清晰的英文項(xiàng)目介紹幫了不少忙。但最為關(guān)鍵之處在于,開(kāi)發(fā)接近尾聲之際絲毫未懈怠,最終花20分鐘進(jìn)行了一個(gè)Markdown(是一種更為新潮的標(biāo)記語(yǔ)言,深受程序員歡迎)功能的完善,程序員便可以用標(biāo)簽符號(hào)或快捷鍵控制表示一串代碼,輸入特別便捷。“這款功能的完善可能為項(xiàng)目加分不少,或者是能獲獎(jiǎng)的關(guān)鍵。”這是產(chǎn)品亮點(diǎn)之所在。因開(kāi)發(fā)時(shí)間有限,他們砍掉了之前設(shè)計(jì)好的很多亮點(diǎn)功能。
這是一場(chǎng)對(duì)智力和技能的挑戰(zhàn)。開(kāi)場(chǎng)前首先要進(jìn)行一場(chǎng)激烈的頭腦風(fēng)暴,拿出比較炫酷的創(chuàng)意,又要考驗(yàn)首次合作的團(tuán)隊(duì)意識(shí)。“不擅長(zhǎng)團(tuán)隊(duì)協(xié)作的人參加這種活動(dòng),可能會(huì)失敗。它考驗(yàn)團(tuán)隊(duì)的創(chuàng)意、技能、毅力和團(tuán)隊(duì)協(xié)作精神。”參加過(guò)多場(chǎng)比賽的大城小胖娓娓道來(lái)。
首次參加類(lèi)似活動(dòng)的桂林對(duì)此深有體會(huì)。他其實(shí)一提出做聊天室想法時(shí)便遭到團(tuán)隊(duì)的質(zhì)疑。最終桂林做出解釋?zhuān)脸觥癈HOP區(qū)別于論壇和及時(shí)聊天工具的聊天室產(chǎn)品,能按照聊天主題半自動(dòng)化地對(duì)語(yǔ)意內(nèi)容進(jìn)行歸類(lèi)”時(shí),得到大家認(rèn)同。“怎么做到快速產(chǎn)出?這對(duì)程序員的溝通能力要求非常高。”性格開(kāi)朗的大城小胖稱(chēng)桂林盡管相對(duì)內(nèi)向,但遇到問(wèn)題時(shí)能表達(dá)特別清晰并有說(shuō)服力。“其實(shí)我跟桂林屬于網(wǎng)友,平時(shí)是通過(guò)代碼進(jìn)行交流,比較了解彼此的技術(shù)水平。盡管之前從未見(jiàn)過(guò)面,但已經(jīng)建立起相當(dāng)高的信任度,這點(diǎn)非常重要。”
一場(chǎng)比賽參與下來(lái),桂林感受到的最大考驗(yàn)是時(shí)間非常倉(cāng)促,真正寫(xiě)代碼的時(shí)間也就10多個(gè)小時(shí)。“事先我們把前端和后端需求接口列在紙上,小胖是在完全沒(méi)有服務(wù)器端數(shù)據(jù)的情況下做前端開(kāi)發(fā),他只能按照約定的數(shù)據(jù)結(jié)構(gòu)寫(xiě)一個(gè)虛擬數(shù)據(jù)。開(kāi)發(fā)12個(gè)小時(shí)之后,盡管服務(wù)器端的大部分功能都實(shí)現(xiàn)了,但前后端的數(shù)據(jù)還未對(duì)接上。”此時(shí),已經(jīng)是凌晨2點(diǎn)多,離比賽結(jié)束只有5個(gè)多小時(shí)了,但大城小胖中途離場(chǎng)2小時(shí)。處于孤軍奮戰(zhàn)狀態(tài)中的桂林壓力異常大。
“將前端的WEB登錄和服務(wù)器端的新技術(shù)在后臺(tái)進(jìn)行交互時(shí),又產(chǎn)生新的技術(shù)難題,即Web頁(yè)面與Websocket無(wú)法共享Session。”這對(duì)桂林來(lái)說(shuō)有點(diǎn)棘手。桂林明白,在實(shí)際開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)出現(xiàn)一個(gè)小問(wèn)題而影響整個(gè)開(kāi)發(fā)周期。最初他對(duì)產(chǎn)品的期望值特別高,而現(xiàn)在的他開(kāi)始擔(dān)心有交不出作品的可能性。“有些問(wèn)題完全依賴(lài)Google未必能夠找到正確答案,需要靈活應(yīng)變。”這時(shí)很考驗(yàn)桂林的現(xiàn)場(chǎng)反應(yīng)能力。好在耗費(fèi)近一個(gè)小時(shí)后,技術(shù)障礙最終突破。
大城小胖的前端開(kāi)發(fā)也并非進(jìn)展得一帆風(fēng)順,做Serve端時(shí),必須用Node.js技術(shù)配合桂林的后端開(kāi)發(fā)。“Node.js技術(shù)只知道皮毛,但在產(chǎn)品開(kāi)發(fā)中卻用到很多。”在時(shí)間有限,來(lái)不及臨時(shí)翻書(shū),更不能頻繁打擾桂林的情況下,大城小胖能做的是努力學(xué)習(xí)桂林代碼的寫(xiě)法。“這要求自己以120%的努力去快速掌握知識(shí)。很幸運(yùn)的是我戰(zhàn)勝了挑戰(zhàn)。”大城小胖松了一口氣,總算見(jiàn)識(shí)了一回自己在饑渴狀態(tài)下高效率學(xué)習(xí)。
比賽結(jié)束前的幾個(gè)小時(shí)是不斷地解除bug、設(shè)計(jì)界面的過(guò)程,中間也在不斷改善操作中存在不合理之處。“整個(gè)過(guò)程基本按照最初的設(shè)想來(lái)開(kāi)發(fā)的,還算比較順利。”桂林終于在規(guī)定時(shí)間內(nèi)如期實(shí)現(xiàn)了產(chǎn)品效果。
“至少我們不滿(mǎn)足于常規(guī)和現(xiàn)狀,不斷追求從更酷更炫產(chǎn)品的角度研發(fā)產(chǎn)品,愿意挑戰(zhàn)自我。哪怕在周末時(shí)間也愿意跟技術(shù)圈的朋友們一塊寫(xiě)寫(xiě)代碼,這就是我們這群人的樂(lè)趣之所在。”大城小胖對(duì)這幫人的極客精神給予最后詮釋。他們不再是一群只會(huì)悶頭寫(xiě)代碼而不善言辭的程序員,通過(guò)參加各種類(lèi)似的比賽活動(dòng),這個(gè)群體在社會(huì)上活躍度越來(lái)越高了。
推薦閱讀
“火焰”病毒或引發(fā)網(wǎng)絡(luò)戰(zhàn)
近一段時(shí)間以來(lái),一種新型電腦病毒“火焰”入侵了伊朗、黎巴嫩、敘利亞等中東國(guó)家的大量電腦。伊朗稱(chēng)其全國(guó)范圍內(nèi)的電腦都遭受感染,大量數(shù)據(jù)遭到竊取,甚至包括一些高級(jí)別官員電腦中的數(shù)據(jù)。 “火焰”傳播迅速,日前>>>詳細(xì)閱讀
本文標(biāo)題:黑客馬拉松:代碼與創(chuàng)意的PK
地址:http://www.tjyalang.cn/a/11/20120610/66573.html