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