快速冲锋步
December 24th, 2008
快速冲锋也有节奏。把节奏记下来,下次可以改进。这就是泰勒在伯利恒钢铁公司做过的事。
- 愿景(1小时):我要做个东西,要快。也许应该试试用Rails做?因为它很快。似乎没有特别的原因阻碍用Rails?是的,没有。
- 空谈(1小时):它好像是个什么东西。它看起来有点像Mephisto吗?呃,Mephisto是什么?你看,我用Mephisto做了我的blog和AgileChina的网站。不错,看起来有点像。
- 部署(3小时):给我服务器,我把Mephisto架起来。没问题,连域名都给你。
- Rails 2.2在Windows上不好使,因为MySQL gem的原因,也许应该装Ruby version而非win32 version
- 在Windows平台使用Apache2.2和Mongrel运行Ruby on Rails
- 原型+反馈(3小时):现在你可以添加内容了。管理后台和我想的不一样。我们可以定制Mephisto。定制是一堆破事,重做也是一堆破事。你让我想想。
- 抛弃(30分钟):现在我基本上知道你要什么了。我决定重做。
- 堆砌(2小时):插件,generator。我知道所有的convention。没有测试。我要看到第一个页面,让我可以部署它。
- 第一个model不是User,而是核心概念
- 第一组数据写进fixture,直接load到产品系统
- 第一个migration叫做release_1,不允许回滚
- 第一个build脚本就用上svn.rake
- 用TODO文件来管理storys/defects/unknowns
- 再次部署(30分钟):尝试过Mephisto,现在我知道该怎么部署了。
- 反馈+小步前进(6小时):好像可以发布内容了,酷。用户权限我是这样设想的。能不能这样简化?以后我们可以这样去改变。可以,我们可以先控制邀请。
- 给build脚本加上stats:我允许现在测试覆盖率低,但从现在开始它必须一直提高
- 每次代码修改开始加上测试,因为我开始记不清每个细节了
- 没有Selenium
- 每个story完成后立即部署
- 发布+反馈(1小时):告诉我一个帐号。quentin和admin都可以。我添加了一些东西,有些更多的想法。TMD…我本来没打算发布的。看在你费劲的份上,就算我发布了吧,现在开始不再清数据库。
- 新的migrations:每个migration只做一件事,每个migration都可以rollback。
- 继续小步前进(6小时):SMTP server帮我搞搞好。80端口给我。我收到邮件了。80端口腾出来以后我再改Apache配置,共计需要删掉4字符。
- 界面的手工验证开始变多
- 复杂的业务逻辑出现,借用了上一个项目的经验,还是出了一点tricky的错误,耗时30分钟
从周六开始,共计5天业余时间,或换算成3个工作日。
最后一公里总是比你想象的长
December 24th, 2008
软件不被部署到产品环境,就不能被真正的用户使用;软件不被真正的用户使用,它创造的价值就是0。
不管做了多少,没有真正部署,就等于什么都没有。
所以,部署不是最后一天才需要做的事。部署是第一天就应该做的事。当第一个功能被开发出来,紧跟着优先级最高的就是部署它,而不是开发第二个功能。如果这时部署被block住,这就始终是优先级最高的blocker,不解决就食不甘味夜不能寐。
客户每次看到软件,都应该是在实际的产品环境下看到──即使不是最终那个实际的产品环境,你也必须清楚,只要一个按钮,你就可以让它成为实际的产品环境。这个按钮不存在于想象中,你必须亲手按过它,知道它一定工作。
如果产品服务器还没有到位,如果还要等系统管理员来装什么软件,如果网络还没有调整好…如果客户跟你说“不用着急”。这时候你就必须着急,你必须尽你一切努力让“部署”按钮成为现实,然后按下它,看到它真的工作。
否则,最后一公里一定比你想象的长。



