使用trello管理你的项目
最近因为需要一直在寻找合适的项目管理软件. 一番搜索之后发现大部分的项目管理软件都非常重, 光看着界面就能让人退避三舍. 后来就在快要放弃的时候意外的发现了一款名叫trello的项目管理软件
(实际上它并不是针对项目管理来设计的, 它还能干更多的事情, 我们后面会讲到). 试用下来, 感觉两个字, very good~
基本定义
trello既可以单独使用也可以与他人协同使用。选着前者时,你可以将trello理解为chrome应用商店中那些数不清的productive tools中的一员。你可以使用它来记录一天的to-do list,可以记录诞生于
某个瞬间的你那天才般的想法(如果转瞬即逝的话 :));而当选择后者时,trello就是一个不折不扣的社会化协作软件。如果你使用过Basecamp,Redmine进行项目管理,又或者用google doc进行过
多人协同工作的话应该很好理解协作这个概念。trello与之类似,不过它还有着自己最强有力的优点,就是简单!
基本概念
trello中需要你掌握的概念非常少。核心的就只有三个:
1. board
2. list
3. card
其中,一个或多个的card构成了我们的list,而一个或多个list又构成了board。在trello中,一切都是围绕这三样东西来的。把board想象成一块黑板吧,你可以在黑板上贴上无数的黄色便签,而每张便签
上面都罗列了一个或者多个想要完成的事情。像下面这幅图一样:
在图中,整个画面就是我们的一个board,左上角是这块board的名字。下面那一个个纵向排列的白色矩形自然就是list了。list上又有一个个card,而我们的故事就发生在这些card身上。card能够承载的信
息量很大,一个card通常描述了一个任务,而参与到这个任务中来的成员可以通过这个card紧密联系起来。人们可以在这个card上展开讨论,注上自己的评论,标记这个card的状态,设定card的due date
等等。这样每次当我们进入一个board的时候,整个项目的活动情况便通过这些card如实的反应出来。恩,大概就是这样。
注意到trello这三个核心概念的名字了吗,注意到这些名字是非常抽象的吗(大家都是程序员,抽象应该是家常便饭了)?这便是我要讲的第二个关于trello的优点了,它是process-agnostic(过程无关的)。
事实上正是由于这些核心概念是具体项目无关的,所以,trello并不会像它的老大哥们那样怀揣着无数多的为了项目管理而管理的流程,检查点之类的东西,它并没有自己的内建流程。相反的,你可以按照自
己项目的需求来设计整个工作流。
基本使用
上面提到了trello是流程无关的,那么当我们需要用使用它来管理我们的项目时应该怎么做呢?第一步当然是对我们的项目进行建模了,使用trello提供的“原语”(board,list,card)对我们的项目流程进行建
模。你可能感觉有点晕乎不知道从何下手,没关系,好在开发trello的小组自己将他们的开发board公布了出来。这是一个很好的参考,相当于一个标准实践了。(注意是标准实践不是最佳实践 :) )目前作为一
个项目管理的话,大家比较常用的就是这个trello开发团队使用的工作流模板了,像下面这幅图展示的那样:
能看到一个名为trello development的board中,一个card从最左边的list到最右边的(ideas, known issues, next up, in progress, testing等等),经历了一个完整的“生命周期”。这是一种建模自己
项目的方法,但并不是唯一一种,根据自己项目的特殊性你可以有自己的workflow,自己的“生命周期”。
经验分享
下面这两张图是我自己的项目模型:
第一张中那些以template打头的board其实是一个“基类”。原因很简单,你可能会有很多项目要进行管理的对不啦,那每次都重复的添加一些board当然麻烦的。好在trello为我们提供了“copy board...”功能。
于是就能像使用类的继承一样,每次要建立新项目board的时候从“基类”copy一个过来就搞定了。第二张嘛,能够发现其实还是跟trello开发团队的模型大同小异的 :)
这里需要强调的是,可能使用trello唯一的难点就在这里了。因为它太灵活了,它只是给我们提供了一个框架,具体如何去使用全部是由我们自己来定义的。换句话说,100个项目几乎就会有100种不同的建模
方式,每个项目都会有自己的特点。如何分组这些board,如何定义每一个list,如何为每个list添加card,每个card的粒度到底多粗多细。。。这些,只有在使用中自己去慢慢体会了。
关于trello的使用还有很多小的细节(比如label的使用,timer的使用等等),让人惊喜的trick等待你去发掘。我刚接触了两天时间不到,能够给大家分享的也就这么多了。也许可以搞一个公共的board,大家一
起在上面分享使用经验也不一定,how meta! :)
参考
trello官网:https://trello.com/
ps: 刚才想要做点小测试,结果发现伟大的[哔——]又开始躁动了,好吧,可能这个也算是trello的一个缺点吧,谁让它出生地在国外呢 X﹏X
Sql Azure不支持全文索引的,所以微软官方推荐的做法是基于lucene来做全文索引,而且也有一个基于Azure Storage的Lucene.Net开源组件,已经支持到了最新的lucene.net 3.0.3。可以在CodePlex上下载到最新代码“AzureDirectory Library for Lucene.Net” http://azuredirectory.codeplex.com/ ,也可以通过NuGet获取。
在使用过程中,发现检索速度还可以,虽然是基于同一区的Azure Storage远程的存储,但是基本都能在1秒内,还是可以接受的。
建索引的过程也可以,配置好Storage Account和Catalog Name (其实就是Storage的Container),就会将索引文件同步到Storage。
在使用时建索引过程中,被坑过一次,最开始本地测试索引还是比较顺利,后来传到Azure上,开了个Worker Role,专门建索引,刚开始还好,但过了半天才发现压根就没索引上,索引文件没写入到Azure Storage,去看了一下文档,才发现它建索引实际上上是先建在本地,本地好了后,在indexWriter close的时候,就同步到Storage上去,它默认是本地的临时目录,如果基于WorkerRole,临时目录似乎不能太大,索引一会就出现说磁盘空间不足的异常。于是把缓存目录改成了Worker Role的本地目录,结果如何还需要观察。
另外它也建议不要去调用indexWriter的optimize()优化操作(Calling Optimize() is a really bad idea because it causes ALL SEGMENTS to be merged into ONE SEGMENT),因为这会将索引文件会合并成为一个很大的索引文件,而这样会导致整个索引文件都要重建,重新下载上传。
详细说明还是请参考其文档:http://azuredirectory.codeplex.com/
如果有兴趣体验,可以访问:http://www.openlab.co/search?q=%E8%A5%BF%E5%B7%A5%E5%A4%A7
目前已经将我自己的网站全部迁移到Azure: Web Role + Sql Azure + Azure Storage + Service Bus
后面会分享一些迁移过程中遇到的问题和心得。