一次與陌生男子結對編程3天的經歷

最近,公司的事情愈加忙碌起來了,除了須要不斷梳理架構團隊的規劃和進度以外,還要常常北上杭三地跑,日常好不容易有個完整的週末,也都癱軟在沙發上,一動腦就腦袋痛。感受這種狀態很容易讓人疲憊乏力,須要改變一下,因此臨近五一假期的時候,突發奇想,想完完整整寫三天本身的代碼!前端

若是隻是本身寫,就略顯無聊了,並且三天以內,很難寫出什麼成型的東西來,雖然以前腦子裏有好幾個想法,可是都不是三天能夠作出一個線上產品的規模(例如一個開源的功能炒雞多的 markdown 編輯器插件;或者是一個畫腦圖的網站?)頂多作作 demo ,成就感仍是有差距的。程序員

因而,我就想,爲何不找真正熱愛編程和創造的人一塊兒寫呢!因而在五一前兩天,在朋友圈徵集了一波,最後找到了一個有必定編程經驗的程序員,在五一假期三天基本上天天在咖啡館編程至少 8 小時。編程

事實上,我發現這種結對編程,帶來的優點比我想象中還要多不少。小程序

結對編程的優點

  1. 高效。這個自沒必要說了,兩我的編程,有問題能夠快速討論解決,並且能夠互相監督不偷懶,列出來的任務有問題的話,能夠快速溝通解決。
  2. 互相學習。除了編程上的姿式,更重要的是學習對方作事的態度和方式,我其實也但願把我對創造產品的熱情輸出給對方,另外還有一點就是你們對產品自己討論的過程,讓個人產品邏輯和設計理念也改變了不少。
  3. 清晰分工。在整個過程當中,我主要承擔 需求提供者、設計師、服務端開發、部分不重要的小程序頁面開發。而對方主要承擔前端核心邏輯的開發。二人都有核心的事情要作,可是會在一些邊緣的事情上,看狀況調節工做。這樣清晰的分工可讓每一個人專一在本身的事情上,快速高效的輸出。
  4. 討論改進。在放假以前,事實上我腦子裏沒有一個很清楚的產品的概念,後來見面以後,咱們先討論和分解事情,此時作了很多討論,這讓個人一些想法變得清晰和合理,若是是我本身,很難有這種快速的糾正。

這些優點,讓我找回了一點前幾年參加黑客馬拉松的感受。所謂黑客馬拉松,就是一羣程序員或者設計師,臨時組隊,2-4人,從碰撞想法到通宵編碼實現,最終創造一個真實的產品出來(更多時候實際上是一個 demo 便可)。我第一次參加黑客馬拉松,留下的印象就很是深入,那時候我剛畢業也沒幾年,正在入門學習 Nodejs,而後在現場找到一個作服務端開發的程序員,他對 Nodejs 瞭解更爲深刻,而且熟練使用 CoffeeScript,當時我提供了想法和需求,他主編碼,我給他打下手,雖然最後沒拿到獎項,可是那一天一晚上,跟他學了很多技術上的姿式,並且這種合做讓咱們從陌生變成一個合做奮鬥過的夥伴,這種快速的交流讓我至今對他印象還很是深入。微信

其實我很喜歡這種程序員之間的交流方式和最終產生的關係維繫,爲何會產生關係維繫?其實更可能是經過這種方式尋找與本身同樣喜歡創造,對用代碼創造產品充滿熱情,或者對技術自己充滿熱情的同伴。這也是爲何我要從事程序員這個行業的緣由!markdown

昨天,和一個從美國硅谷回來準備創業的創業者聊天,他提了一個問題,爲何國內的程序員給他的感受都很保守,難道不該該是每一個程序員都充滿了創造的熱情嗎,畢業的時候首要考慮的是組隊或者本身去作一些創造的事情,而不是進入公司工做。我跟他解釋道,實際上,有這種想法的程序員不少,只是國內環境所迫。年輕人剛畢業就被房子、結婚、孩子三座大山壓在身上,大部分人沒法擺脫環境的影響,對選擇作出妥協。實際上,若是這三座大山能夠擺脫,我相信會有不少年輕人選擇更爲激進的道路。架構

再也不囉嗦了,說說我和同伴結對編程的過程吧,但願能夠對讀者有所幫助。編輯器

執行方式

  1. 首先,提早約定。在臨近假期的時候,我準備了幾個點子,而後就在朋友圈發了一個招募,我報銷全部吃飯和咖啡的費用,招募參與者一塊兒作一個產品,這個產品屬於咱們共同創造,可是最後全部權多是個人(我沒有太多強調,畢竟不是商業產品)。發出招募以後,很快就有人來聯繫我,我大概作了篩選,選擇了一個擁有必定開發經驗的夥伴(事實上也沒有幾我的來報名)學習

  2. 當天,快速進入狀態。五一假期只有三天,中間還有可能要處理一些私人的事情,因此時間很緊急,第一天見面的時候已經接近中午了,開始的時候咱們首先要互相瞭解一下,因而咱們直接走路去吃了一頓午餐,期間,咱們互相作了介紹,對各自熟悉的技術棧進行了瞭解,對準備要作的事情作了初步的討論,對一些生活啊公司啊之類的瑣事也作了一些溝通交流。午飯事後,就快速開始進入角色了,我首先對如何進行此次結對編程的流程作了大概介紹(先作產品思路出原型圖,而後針對原型,咱們討論技術方案,細化大塊的任務,討論一些技術實現的細節,最後分工,我作設計,他開始開發某些模塊,而後我也承擔一些部分的開發,最終聯調發布)而後就開始按照這個流程當即執行。網站

  3. 第三步,需求的溝通。事實上,這個是整個事情的核心,由於你們參與到這個事情,不是單純的實現什麼或者討論技術,最最核心的仍是一塊兒創造一個產品的樂趣。因此兩我的必定要針對這個產品各抒己見,一塊兒勾勒產品的設計理念、操做邏輯、發展方向、受衆喜愛,這個過程對我幫助也很大,由於以前其實有一個初步的想法,可是很不具體,最終這個產品作出來以後,跟我一開始想的仍是差異很大的,操做方式和展現形式更加豐滿了,這是我對此次結對編程最有感觸的地方之一。

  4. 第四步,任務管理。咱們選定了一個任務管理軟件來管理咱們二人的分工和計劃,由於項目複雜度不高,選用了很簡單的「奇妙清單」,針對原型和需求,咱們把須要作的事情按照大塊作了分解,這是當時的 check list,部分任務是後續一邊作一邊加入的,在最開始,咱們核心梳理的是核心模塊,一些細節靠後續的溝通加入。另外有一些核心模塊的功能比較複雜,咱們會細化一個方案寫到任務詳情中,例如詳情頁自動播放的具體邏輯,最近播放的存儲邏輯等。 [image:54C21346-9CB7-47B5-ADF3-5736E885B321-42142-00010B1F0E8E2D88/2D2FBBAC-6B69-46E9-A217-4374290EA519.png]

  5. 第五步,分工。任務梳理出來以後,咱們對着任務列表作分工,首先固然是擅長的人作擅長的事情,例如我擅長作界面設計,服務端開發,這兩塊的事情確定是須要我來作,平衡一下,他負責前端最複雜部分的開發,其餘前端的非核心的功能,暫時不作分工,誰先作完誰來作,及時在任務中分配就能夠。

  6. 第六步,開始開發。全部開發其實都要從設計開始,我首先開始用 Sketch 設計核心的界面,他則開始寫和界面邏輯關係不大的功能,大概幾個小時以後,主要的界面的設計已經產出,這個時候再開始構建前端的界面。

結語

此次結對編程的經歷算是一個試驗吧,之後但願有機會也能夠嘗試相似的方式,以此尋找創造的樂趣,以及樂於創造的人。程序員更須要突破本身與人合做與人溝通的瓶頸,這樣才能讓技術的價值最大化,若是隻是糾結於技術自己,會經常伴隨着困惑和瓶頸。

對相似事情感興趣的同窗,能夠加我微信,說不定之後有機會能夠一塊兒結對。微信號:mier963

忘了放這三天的成果了,能夠在微信裏搜索「喵老師」,小程序裏第一個就是了,這個小程序三天開發+上線以後基本沒迭代過,基本都是這三天的成果

或者掃這個二維碼也能夠。

相關文章
相關標籤/搜索