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