「转」团队实践:用teambition进行以Sprint为分类的敏捷开发

在敏捷开发这个词越来越火之后,公司的研发团队也逐渐向敏捷方向转型。前段时间团队用teambition来帮助进行敏捷开发,今天把我们团队如何以Sprint为分类进行敏捷开发的方法分享给大家。首先我们从产品的需求管理开始说起。 继续阅读

发表在 未分类 | 标签为 , | 留下评论

最近一些前端的模块化的感想

在模块化方面,Node.js就显得游刃有余。作为用户,我们把代码放到一个个JavaScript文件中,然后Node.js就有一套规则帮我们把这些代码组织起来,Node.js还有包的概念,于是我们就可以使用npm将代码放到一个个包中,放到这里那里的node_modules中使用。很方便不是?感谢Node.js。

可在浏览器端,在前端这事就没那么简单了。

首先前端不只是JavaScript,前端还有HTML,还有CSS,还有图片、字体等等;还有,可能根据业务需要,还包含国际化的文件。一个模块如果包含以上这些东西,复杂度就上了几个数量级。怎么复杂了?和高大上的iOS开发比起来,人家有SDK,代码随便往项目里扔,图片扔,国际化有成熟的解决方案,最后构建一下一个可运行的App就出来了。

前端缺乏SDK。

要使用第三方模块怎么办,我们有Bower,好爽,运行个命令,依赖就安装好了。但是Bower不是银弹,Bower中的模块没有任何标准和规则,并不是使用Bower安装的模块我们就可以使用同样的方式使用任何一个模块,使用某种工具将这些模块打包发布!

AMD来了,或者说前端的模块规范可以出来解救我们。很多Bower模块都是支持AMD规范的。而且AMD还提供了打包工具,总算有点解脱了。好景不长…… 继续阅读

发表在 未分类 | 标签为 , , , | 一条评论

《CoffeeScript小书》更新啦

《CoffeeScript小书》刚开始发布的时候,豆瓣阅读还不支持插入代码,当时我将代码变成图片插在页面中。

不久前hustKiwi提醒我,豆瓣阅读支持插入代码了,所以今天抽空更新了一番,150张图片,全部换成了文本代码,真是个体力活呀!

效果不错——

继续阅读

发表在 CoffeeScript | 标签为 , , | 一条评论

如何使用Teambition打造小而美的Scrum团队

我之前在大众点评网工作,公司在2013年完成了整个技术部团队向Scrum的转型,更多可以参考大众点评网研发管理高级经理唐灏:几百人规模的研发团队如何进行敏捷转型

现在我加入了Teambition,一个初创的团队,我们致力为追求效率及品质的团队打造简单、高效的项目协作工具。也是因为在大众点评网的Scrum体验,让我增加了对团队协作工具的兴趣,遂而加入了Teambition。

今天我想结合我在点评网的Scrum经历,给大家分享一下如何使用Teambition打造小而美的Scrum团队。我们从Scrum中的角色说起。 继续阅读

发表在 未分类 | 标签为 , | 留下评论

假期写了个小翅膀

假期七八天基本都宅在家里,写了一个小东西Backbone.tinywings——一个小巧的模板解析器。

说一点我在编写Backbone.tinywings的体验。

这是我第一次从无到有地编写一个东西。之前可能我会去阅读一些类似的项目的源码,搞清楚它们是如何运作的,然后自己再以一个宏大的设计构建一个出来。

这次则不一样,没有用grunt,没有用测试框架,我从最简单的需求开始编写代码。逐步迭代,每次都只实现一两个功能点,或者修改一些bug,测试通过(最开始测试代码就直接写在测试代码下面。),继续开发下面的功能点。

每天都迭代一点,可能是在早上下床前,可能是在睡觉前,有时抱着边看电视边写。七八天下来,“小翅膀”就成型了。

其实最开始我根本不知道该怎么写,写出来是什么样子! 继续阅读

发表在 JavaScript | 标签为 , | 5 条评论

【译】ES6的模块、构建工具及应用的发布

总的说来就是按照将来的标准书写,现在使用工具来适配。

我们已经有了服务端的依赖管理方案

  1. 安装并声明依赖;
  2. 在代码中获取(require)依赖;
  3. 将通用的代码打包并发布到同一个地方。(npm、gems等等)

浏览器端的依赖管理远远没有完成,并且现在情况看上去很糟糕 继续阅读

发表在 未分类 | 标签为 , , | 留下评论

windows中安装ubuntu 13.04 (what a fucking day!)

上次参见gurudigger的hacthathon,指导队友当场装了一个ubuntu,就装在windows8下。我分明看到ubuntu是这样的:

市场的图标就是一个A。

然后回家我也想装装看,到ubuntu.com,看各种消息再见Wubi:Ubuntu不再支持从Windows安装都说无法使用wubi.exe来在window上安装ubuntu 13.04了。

shit,那hackathon上我分明看到队友的window中跑滴就是ubuntu13.04呀,看着那个市场滴A我羡慕啊。

多方求证看来是无法安装了,那我只能升级我的12.04了,修改更新策略花了五六个小时升级到了12.10,然后又花了八个小时升级到了13.04,升级过程中,说ubuntu-deskstop这个包无法安装,跳过了。等我重启进去,说fontconfg什么什么的问题,进不去。

怎么办,无法直接安装,升级也升到我想吐血。

再次询问队友,当时是怎么装的,无果。

我把12.04的wubi下载下来,替换13.04中wubi不行,可是:

把13.04 iso解压将wubi拷贝出来,运行它,结果它就开始加载虚拟光驱中的镜像,在windows中安装ubuntu13.04了,本文就在安装好的系统中写成。

what a fucking day!

至今我没搞清楚,队友是如何装成的!

发表在 未分类 | 标签为 | 3 条评论

CoffeeScript 1.6.1发布,支持Source Map

3月5号,CoffeeScript发布了1.6.1版,开始支持期待已久特性——Source Map。

终于可以在Chrome中直接调试CS了,使用非常简单:

:coffee -c -m .

继续阅读

发表在 CoffeeScript | 标签为 | 2 条评论

在Node中使用全局变量?

在昨天的Hackathon中,需要搭建Web服务器,于是我们采用基于Node的开源框架express来搭建。

在紧张的开发过程中,战友问了一个问题,如何读写一个全局变量(或者是让某个变量能可以全局都能访问)?也就是说我们有这么一个需求,在程序的多个地方(尤其是不同的模块中),我们需要对同一个对象进行读写。

于是我开始想,Node中有全局变量么?有的话挂上去就好咯。Google了一下,发现Node提供了一个global变量,可以往上面扔东西,这些东西就可以在全部使用。还存在一个GLOBAL变量,其实就是相当于global。

还有其他方式么?有,看下面的代码:

global.js中的timestamp就是全局的。因为foo.js对它的修改可以影响bar.js的输出。

于是,我明白了,我以前陷入了一个误区。不是每个require都会重新执行依赖的代码,生成不同的对象,模块只会被加载一次。而本身模块一定是挂在某个特殊的全局变量上的,这与浏览器端的模块加载器是一致的。

于是,我们就可以使用如上的,无入侵式的方式使用全局变量(或者说是所谓的全局变量)。

发表在 Node.js | 标签为 | 2 条评论

奇异事件,我把豆瓣电台插件卖掉了!

我觉得这是一个奇异事件,两年多前,拉着jQuery的裙摆初识JavaScript,我在图书馆中泡了数日,折腾出了豆瓣电台这个chrome插件。没想到最近有人邮件我愿意以四千元的价格购买,现在我获得了这笔钱!

这个插件没有任何技术含量,就是在用户点击chrome右上角的icon时,打开http://douban.fm/radio,就这么简单。

曾经被chrome迷报道过,然后加入了某同学的插件联盟,我不知道这些用户为什么会使用这样一个毫无用处的插件,慢慢就有了一些用户。最多的时候大约有1.7万,现在下滑了不少1.2万左右。

我当时做这个插件的目的只有一个,当时的豆瓣电台还是最初的版本,我每次要打开都需要点击多次还行,所以我才做了一个这种“超链接”。

时常倒腾点东西,说不准还真能发生点奇异事件什么的。

最后感谢女朋友,那个时候和我一起在图书馆里,只是我在瞎搞,而她在学习!

发表在 未分类 | 标签为 , , , | 7 条评论