最近,公司的事情愈加忙碌起来了,除了须要不断梳理架构团队的规划和进度以外,还要常常北上杭三地跑,日常好不容易有个完整的周末,也都瘫软在沙发上,一动脑就脑袋痛。感受这种状态很容易让人疲惫乏力,须要改变一下,因此临近五一假期的时候,突发奇想,想完完整整写三天本身的代码!前端
若是只是本身写,就略显无聊了,并且三天以内,很难写出什么成型的东西来,虽然以前脑子里有好几个想法,可是都不是三天能够作出一个线上产品的规模(例如一个开源的功能炒鸡多的 markdown 编辑器插件;或者是一个画脑图的网站?)顶多作作 demo ,成就感仍是有差距的。程序员
因而,我就想,为何不找真正热爱编程和创造的人一块儿写呢!因而在五一前两天,在朋友圈征集了一波,最后找到了一个有必定编程经验的程序员,在五一假期三天基本上天天在咖啡馆编程至少 8 小时。编程
事实上,我发现这种结对编程,带来的优点比我想象中还要多不少。小程序
这些优点,让我找回了一点前几年参加黑客马拉松的感受。所谓黑客马拉松,就是一群程序员或者设计师,临时组队,2-4人,从碰撞想法到通宵编码实现,最终创造一个真实的产品出来(更多时候实际上是一个 demo 便可)。我第一次参加黑客马拉松,留下的印象就很是深入,那时候我刚毕业也没几年,正在入门学习 Nodejs,而后在现场找到一个作服务端开发的程序员,他对 Nodejs 了解更为深刻,而且熟练使用 CoffeeScript,当时我提供了想法和需求,他主编码,我给他打下手,虽然最后没拿到奖项,可是那一天一晚上,跟他学了很多技术上的姿式,并且这种合做让咱们从陌生变成一个合做奋斗过的伙伴,这种快速的交流让我至今对他印象还很是深入。微信
其实我很喜欢这种程序员之间的交流方式和最终产生的关系维系,为何会产生关系维系?其实更可能是经过这种方式寻找与本身同样喜欢创造,对用代码创造产品充满热情,或者对技术自己充满热情的同伴。这也是为何我要从事程序员这个行业的缘由!markdown
昨天,和一个从美国硅谷回来准备创业的创业者聊天,他提了一个问题,为何国内的程序员给他的感受都很保守,难道不该该是每一个程序员都充满了创造的热情吗,毕业的时候首要考虑的是组队或者本身去作一些创造的事情,而不是进入公司工做。我跟他解释道,实际上,有这种想法的程序员不少,只是国内环境所迫。年轻人刚毕业就被房子、结婚、孩子三座大山压在身上,大部分人没法摆脱环境的影响,对选择作出妥协。实际上,若是这三座大山能够摆脱,我相信会有不少年轻人选择更为激进的道路。架构
再也不啰嗦了,说说我和同伴结对编程的过程吧,但愿能够对读者有所帮助。编辑器
首先,提早约定。在临近假期的时候,我准备了几个点子,而后就在朋友圈发了一个招募,我报销全部吃饭和咖啡的费用,招募参与者一块儿作一个产品,这个产品属于咱们共同创造,可是最后全部权多是个人(我没有太多强调,毕竟不是商业产品)。发出招募以后,很快就有人来联系我,我大概作了筛选,选择了一个拥有必定开发经验的伙伴(事实上也没有几我的来报名)学习
当天,快速进入状态。五一假期只有三天,中间还有可能要处理一些私人的事情,因此时间很紧急,第一天见面的时候已经接近中午了,开始的时候咱们首先要互相了解一下,因而咱们直接走路去吃了一顿午餐,期间,咱们互相作了介绍,对各自熟悉的技术栈进行了了解,对准备要作的事情作了初步的讨论,对一些生活啊公司啊之类的琐事也作了一些沟通交流。午饭事后,就快速开始进入角色了,我首先对如何进行此次结对编程的流程作了大概介绍(先作产品思路出原型图,而后针对原型,咱们讨论技术方案,细化大块的任务,讨论一些技术实现的细节,最后分工,我作设计,他开始开发某些模块,而后我也承担一些部分的开发,最终联调发布)而后就开始按照这个流程当即执行。网站
第三步,需求的沟通。事实上,这个是整个事情的核心,由于你们参与到这个事情,不是单纯的实现什么或者讨论技术,最最核心的仍是一块儿创造一个产品的乐趣。因此两我的必定要针对这个产品各抒己见,一块儿勾勒产品的设计理念、操做逻辑、发展方向、受众喜爱,这个过程对我帮助也很大,由于以前其实有一个初步的想法,可是很不具体,最终这个产品作出来以后,跟我一开始想的仍是差异很大的,操做方式和展现形式更加丰满了,这是我对此次结对编程最有感触的地方之一。
第四步,任务管理。咱们选定了一个任务管理软件来管理咱们二人的分工和计划,由于项目复杂度不高,选用了很简单的“奇妙清单”,针对原型和需求,咱们把须要作的事情按照大块作了分解,这是当时的 check list,部分任务是后续一边作一边加入的,在最开始,咱们核心梳理的是核心模块,一些细节靠后续的沟通加入。另外有一些核心模块的功能比较复杂,咱们会细化一个方案写到任务详情中,例如详情页自动播放的具体逻辑,最近播放的存储逻辑等。 [image:54C21346-9CB7-47B5-ADF3-5736E885B321-42142-00010B1F0E8E2D88/2D2FBBAC-6B69-46E9-A217-4374290EA519.png]
第五步,分工。任务梳理出来以后,咱们对着任务列表作分工,首先固然是擅长的人作擅长的事情,例如我擅长作界面设计,服务端开发,这两块的事情确定是须要我来作,平衡一下,他负责前端最复杂部分的开发,其余前端的非核心的功能,暂时不作分工,谁先作完谁来作,及时在任务中分配就能够。
第六步,开始开发。全部开发其实都要从设计开始,我首先开始用 Sketch 设计核心的界面,他则开始写和界面逻辑关系不大的功能,大概几个小时以后,主要的界面的设计已经产出,这个时候再开始构建前端的界面。
此次结对编程的经历算是一个试验吧,之后但愿有机会也能够尝试相似的方式,以此寻找创造的乐趣,以及乐于创造的人。程序员更须要突破本身与人合做与人沟通的瓶颈,这样才能让技术的价值最大化,若是只是纠结于技术自己,会经常伴随着困惑和瓶颈。
对相似事情感兴趣的同窗,能够加我微信,说不定之后有机会能够一块儿结对。微信号:mier963
忘了放这三天的成果了,能够在微信里搜索“喵老师”,小程序里第一个就是了,这个小程序三天开发+上线以后基本没迭代过,基本都是这三天的成果
或者扫这个二维码也能够。