分享 一个拖延症患者的精益 (Lean Startup) 实践

xmonkeycn · 2013年03月26日 · 最后由 seeyoup 回复于 2013年07月17日 · 6377 次阅读

上周,我的第一个Rails网站上线了,关于跑步比赛的。提供上周六举行的杭州西湖跑山赛的实时成绩发布。功能很简单,但用户反应非常热烈,收获远远超出我的预期。有些东西想写下来分享给ruby社区的朋友们。

http://www.bisaikong.com

缘起

我是2003年非典的时候开始跑步了,从此一发而不可收,喜欢上了运动,喜欢上了跑步,从04年开始每年都跑马拉松/半程马拉松,08年开始铁人三项,到今年已经跑了10年。家里积攒的奖牌已经放满了一个小储物箱,ikea 5L的那种。(p.s.我高中长跑不及格,各位沙发土豆们不要说自己没天赋!)

大概是08年底上海马拉松的时候想起来可以做个比赛相关网站,大家上去查询交流比赛信息照片啥的。网站无关的东东有靠谱的人很快搞定了。网站这块自己啥也不会,当时网站相关的东西找了一个喜欢跑步的朋友一起做,技术很强,就是两个人都拖延了好久。墨迹到10年底说不想弄了,还是你自己弄吧。我xxxxx!好吧,自己弄。

2010年到2011年,工作转换和家里的事情有点多,这个就暂时放下了。

2011年底,我觉得这个比赛网站这个事情再不做不行了,决定重新开始。一开始还是打算找外包,有相熟的同学是做外包的,谈了一下,觉得像我这样需求不明确的,外包很难接,最好还是自己搞。正好也看到quora上的这篇: Where is the best place to find a rockstar developer to bring an idea to life? http://qr.ae/TgiRg 嗯,还是自己做靠谱。那么开始学Rails呗。2012年2月23日,注册rubychina社区。

Rails

大家都说Rails开发快,其实是个伪命题。对于熟手来说,Rails的确很快。但是对于新手,Rails3的学习曲线,上来很缓,按照教程上手很容易,但是一旦你有些非标准定制需求,找到应该怎么实现不是那么容易了-,- 不瞒您说,我第一次写nested resource花了两天才debug出来,form的post path搞了好久才搞定。

Rails学习资料

中文资料里面@xdite 大神的blog很赞,写的两本书我也都买过以示支持,可惜现在内容有点落后了。 英文资料推荐订阅Railscast,一个月几美金不贵的。Codeschool课程很精美,不过内容覆盖的比较窄,适合入门了解,一个月的订阅费也不贵。 为什么只推荐付费的东东,因为付费的东东的确好,而且你花钱了更有动力学!

一个人做的很慢,做了一些小功能之后还是不满意,前端也完全没搞。做的乱七八糟的东东始终没有上线。不过所幸尝试过了很多东西,不少东东略懂了。

Tealeaf

@knwang 在rubychina上开公开课的时候去听了一下,觉得还不错。他开中文班的时候就报名去上了,收获蛮大的。课程编排的很合理,live session互动的效果很好。就是比较花时间,每周至少16个小时,10个小时候真心不够用。推荐自学rails觉得有难度的同学可以去上上看。应该不后悔的:P http://ruby-china.org/topics/6717

课程结束收到提高班的邀请,虽然要1k多美刀,也毫不犹豫的报名了!目前还在上课中,总体非常满意。

First Protype

2012年11月的杭州跑山赛,是朋友办的。本来想让我帮忙做一下芯片计时系统(专业的芯片计时太贵了,要1w多一次),我做芯片读取到pc这块。后来测试下来通用的RFID没法用在比赛上,这个方案就放弃了。不过做的过程我想到可以手机人工计时,就简单做了一个原型,手机记录下号码和时间,比赛后手工汇总到电脑上。跑山赛的时候进行了测试,能work,数据导出来传给的组织者,网站也没上线。比赛完了,这些东西也就丢在一边了。

Lean Startup

去年底终于看了Lean Startup,里面MVP的概念很赞。不过拖延症患者还是没怎么实践啊! @xiaolai 老师的Knewone上线第一天就看了,我的感觉就是:“这个评测好没有深度啊”,顺便回帖推荐了比Jawbone up检测睡眠准N倍的Zeo,不过好像没有任何人注意到这个Zeo。。。(p.s. 本月最新消息Zeo即将关闭服务,又是太细分的市场没法支持公司生存的例子。(我想做的是还要细分的市场-,-)) http://ruby-china.org/topics/8335

没想到后来Knewone后来会这么火啊,@xiaolai@lilu 的分享都有很多干货,触动很大。 http://ruby-china.org/topics/9120 http://ruby-china.org/topics/9585

Go live!

过年前的是杭州的另一朋友给我打电话,说他们3/24要办比赛,问我能不能再帮他们搞计时系统。想想最坏情况就是想去年一样做成离线的呗,就答应下了。后面也没继续做啥。直到看了@xiaolai 老师的分享…

比赛前一个周末要去现场测试了,想想还是把实时发布加上吧,因为这个功能对我来说很有用。 周六一天写好手机端上传和服务器端上传的code,因为时间有限,登陆功能不做,就用个token来做授权验证。(Token这个是Kevin课上刚刚学的,现学现卖) 晚上部署到linode的时候发现悲剧了,总是pipleline编不过,debug了一会儿也没排除干净。 干脆就用Kevin上课用的那个程序的架子,把代码移植过来,部署到heroku上。折腾到快三点,搞定。睡觉。 早上爬起来去杭州跟跑山赛组织者现场测试,没问题,数据都能收到,写好志愿者培训文档,收工回家。 这个时候,前端啥也没写,就是几个scafold出来的页面,稍微改了一点点。

周二的时候,想想前端实在拿不出手,就临时找了做前端的跑友@bullockzhou ,请她帮忙做一下前端,只有html和css啦,其他任何复杂的不要,晚上画好mockups发过去。

周三开始改前端的东东,周四拿到第一版前端代码,整合,还不支持flow。@bullockzhou 觉得手机端实在太差,在周四生日那天还加班帮忙改好支持流式布局,各种感谢。。。

周四晚上拿到新版的前端代码继续整合,基本上可以见人了,加上Google Analytics,new relic。半夜发现性能有严重问题,sql请求实在太多,又看了一边railscast上的eager loading, 并改写view的一些代码,分组成绩列表页面的时间从2904.7ms降到25.9ms。不过比赛那天才发现erb忘了写“=”,啥都没显示!幸好对大部分人来说不重要。比赛当天晚上才修正过来。TDD很重要啊-,- 等下一版就TDD重写一边了。

另外组委会还提了个需求,本来需要增加个has_many through的,不想动数据库,直接条件判断hard code搞定。还有一堆各种小问题,忙到6点多才搞定,多年没这么通宵了。

上午起来申请微信公众账号,设置自动回复查询成绩的url。 微博发布第一条信息,宣布上线,并提供url和微信二维码。因为发的实在太晚了,比赛前一天被只被转40多次。(一共四百多参赛选手) http://weibo.com/3178513797/zoAPurN0Y

比赛当天还是碰到一些问题的,比如前面提到的全部成绩列表没内容,有一个打卡点的手机时区设置不对,导致这个点部分成绩差了8小时。但是不影响查询单个选手成绩,是否经过哪个打开点之类的信息。我也跑在山里,没空处理。

跑完回来,看看网站情况,看起来还不会挂掉,有问题等赛后结束处理吧。

微博上的反馈非常好,除了表扬就是表扬。比如这条: “很给力啊,我老婆在酒店悠闲的刷网页,实时跟踪我,刚到终点线她就打来电话祝贺” http://weibo.com/1692963072/zoO1PB0Vx

比赛结束的当天晚上,整理数据,fix bug。搞干净了以后分组成绩终于可以用了。

总结

@比赛控 微博两天一共被转发大概70次左右,从0开始到78个粉丝。微信公众账号两天涨了70多个用户,比微博还快,你懂得。这还是我只在微博和比赛网站上挂了微信二维码而已,没有在比赛前后做任何线下推广,当时怕搞砸了太丢人,还是太保守了。

网站最近四天636 people visit, 1,170 visits, 7,708 views.对于400人的小比赛来说。我觉得覆盖率够高了。

需求是硬需求,要认真去做了,晚上跟@bullockzhou 谈,决定一起做下去了。 就酱紫。。。。

最后上线的网站情况:

没有用户系统,输入只支持比赛号码搜索,没有新建、没有编辑、没有删除,没有分页,不支持排序,一共四个页面就有一个没有内容,不支持IE。

每个人都说,这个网站好棒!

嗯,MVP,m可以很小很小很小的。有想法就赶紧上线验证吧!

感谢ruby-china, 感谢kevin老师,感谢@xiaolai@lilu ,感谢@bullockzhou

最后 插播两个广告:

  1. Kevin @knwang 的Tealeaf课程非常好,没有kevin,我不可能只花这么点时间就做出一个能用的网站并部署到heroku上线的。推荐自学rails觉得太慢或者碰到障碍的人都去上他的课。虽然他的课对于我们赚人民币的人来说有点小贵,但是,你自己时间更贵! https://www.gotealeaf.com

  2. 有没有爱跑步、爱马拉松、爱铁人三项的同学或者打算跑马拉松的Ruby爱好者愿意加入我们。我们先只是为跑友自己服务,先解决自己的硬需求,做有用的东西。 p.s. @bullockzhou 是设计出身的前端mm哦,自己会给mbp换ssd和内存,目前已经开始学ruby了。ruby-china的众多男童鞋你们懂得!

共收到 30 条回复

我也喜欢跑步 :) 如何加入你们贡献点代码?

#1楼 @keating 强烈欢迎啊:P

界面挺简洁的,后端还用了各种云服务,赞。 快拓展业务吧,搞个骑车,或者和学校合作直播运动会:bowtie:

@xmonkeycn 聊的结果就是需要学ruby,一张白纸的人好焦虑......

支持!@xmonkeycn 太棒了,我也想贡献代码!

great!~好怀念和你一起写代码的日子哈哈=.= 没有时间继续学kevin老师的课程很遗憾~执行力比我强太多了~

:)有想法能实现,没啥比这个更幸福的了!

楼主在下一局很大的棋啊,搞好了,会很火的,强烈支持

原来你跑步这么厉害 我还想着要练练这个 到时候向你请教了啊

2013Asics杭州山地马拉松, 是ASICS组织的吗? http://www.asics.com.cn/trail-running-marathon/

#3楼 @ywencn 前端全是@bullockzhou 同学的功劳 #4楼 @camel 用又拍云也是没办法,一个是assets pipleline编不过,另外heroku国内访问实在太慢了。 #5楼 @bullockzhou @knwang 老师。你的新学员已经来了! #7楼 @flypiggys 其实我也没有执行力,全是逼出来的。 #8楼 @xiaolai @knwang 非常感谢两位老师。海上明灯啊! #9楼 @loxeyer 我也不知道这棋盘到底多大,走一步是一步吧。谢谢支持 #12楼 @bullockzhou asics赞助的,实际的主办方都是一群跑友。

LZ 厉害,我也很喜欢晚上去跑步,坚持了大半年

@bullockzhou 武大的妹子哦。

@xmonkeycn 有木有什么活动联系方式的。

好赞啊,同是拖延症的表示要回去思过了。

#13楼 @xmonkeycn 新手想问一下LZ是怎么部署的,还有备案……?

很赞啊,加油啊!

做自己喜欢做的事,太棒了

大学坚持跑步跑了四年

#16楼 @bpw11320 以后会有的 #17楼 @richard020389 加油 #18楼 @cqcn1991 heroku不需要备案的,部署相对是最简单的,网站上文档很清楚,或者看railsgirls http://guides.railsgirls.com/heroku/ https://devcenter.heroku.com/articles/rails3

#19楼 @cris #20楼 @rainchen 谢谢支持哦。

#21楼 @uudui 还在跑不?欢迎入伙啊!

#22楼 @xmonkeycn LZ是部署在heroku?可是我觉得这个网站速度不慢啊……(heroku速度感觉好慢诶)

#23楼 @cqcn1991 heroku时快时慢的,比赛那天new relic的数据 Browser page load time 3.61 sec App server response time (ms) 246 ms 反正我是不太满意。

#24楼 @xmonkeycn 是啊,所以我就想换个啥的……不知道能不能加你QQ之类的交流一下……等你弄好了我抄一下就好了哈哈

26楼 已删除

#25楼 @cqcn1991 linode的部署可以看这个,虽然稍微有点老了,但是可以用。 http://ruby-taiwan.org/wiki/deploy_to_production_practice

#26楼 @ghprince 欢迎欢迎!给我们发mail吧。

@xmonkeycn 汗颜。这个今天才看到,强烈支持!

楼主的体会和我一样,我是自学,喜欢ruby的语法,不过刚开始学习rails的曲线是蛮大的,目前还在一边学习一边开发自己的网站中ing,^_^

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册