在DreamHost安装OpenParty手记

December 26th, 2011

自从开始帮忙组织 成都的OpenParty 以来,每天抽一点时间做OpenParty成都的网站。感谢 Tincleverpig 的大力支持,今天终于把 OpenParty成都 网站给弄起来了。

首先把 OpenParty的Django应用 给fork出来到 一个新的repository 。没多少需要修改的,只是页面稍做调整,改改文字。

DreamHost有 一篇文章 讲如何安装Django的。需要照着它做一遍,生成Passenger配置。但是这样弄完以后肯定是跑不起来的,因为所有的依赖包都没有装,而且因为没有root权限所以系统缺省的easy_install也不能安装任何东西。所以,这个配置弄好以后先放着,还得装个自己的Python。

有个哥们写了一篇博客讲 如何在DreamHost安装virtualenv 。也是照着做就行了。装好 virtualenv 以后直接就可以用 pip 安装依赖包了。

接下来就是修改passenger_wsgi.py里的配置了。有两个需要修改的内容:第一是需要用virtualenv装的Python;第二是DreamHost缺省生成的配置有问题,没有引入应用程序的路径。直接把我的passenger_wsgi.py贴上来:

import sys, os

INTERP = <path_to_python_in_virtualenv>

if sys.executable != INTERP: os.execl(INTERP, INTERP, *sys.argv)

project_path = <path_to_application>
django_path = <path_to_django_in_virtualenv>

sys.path.append(os.getcwd())
sys.path.insert(1, project_path)
sys.path.insert(1, django_path)
sys.path.insert(1, os.path.join(project_path, "apps"))
sys.path.insert(1, os.path.join(project_path, "vendor"))

os.environ['DJANGO_SETTINGS_MODULE'] = "ChengduOpenParty.settings" 
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

然后就是配数据库啦同步数据库啦这些常规操作了。然后 OpenParty成都的网站 就美美的跑起来啦~四川地区的技术爱好者们,欢迎来分享!

白居易《问刘十九》:绿蚁新醅酒,红泥小火炉。晚来天欲雪,能饮一杯无?

蜀中最冷的时节,寒风也挡不住我们交流的热情。第一次成都OpenParty活动“围炉映雪”将于2012年1月7日举行。欢迎大家相遇在OpenParty,分享精彩话题!

活动时间

2012年1月7日(周六),13:30~17:30

活动地点

奇诺咖啡餐厅( http://www.dianping.com/shop/4187056 ,天府软件园A9)

参与群体

我们欢迎以下朋友参加:
  • 程序员、架构师
  • 业务分析师、用户体验设计师
  • 敏捷实践者、咨询师
  • 开源技术传道者、移动市场管理者、项目经理、风险投资人、社团组织者
  • IT、软件、互联网、媒体、咨询、出版等行业从业人员
  • 旅游爱好者
  • 以及一切愿意与大家分享知识、并且愿意从别人那里获取知识的朋友

招募话题

OpenParty采用“非会议”(Unconference)形式,所有讨论话题都是由参与者自发提出。有话题分享或发起讨论意愿的朋友可以在活动开始之前将PPT或者话题、讨论简介发送给组织者( staff at chengdu-open-party.org )。

如果你的分享过程需要用到白板和投影仪之外的设备,也请提前告知组织者。

更多信息

请加入成都OpenParty的邮件列表( http://groups.google.com/group/openpartycd

或者联系组织者( staff at chengdu-open-party.org )

围炉映雪,把酒言欢。成都OpenParty第一波,期待你的到来!

如何布置体面的故事墙

December 12th, 2011

作为软件开发最重要的两个现场可视化工具之一,故事墙应该是什么样,其实是可以从一些基本原则很自然地推导出来的。只要去理解这些背后的原则,就会知道如何布置一个体面的故事墙。

原则之一:故事墙是每个人的工作现场。

这句话说说很简单。什么叫“工作现场”?一个人的工作现场,至少应该有两块区域:待处理工作区,以及当前工作区。在任意时间点,每个人在当前工作区里应该有且仅有一个工件在处理;工件应该保持流动,因此待处理工作区的堆积会反映出工作环节的不均衡。这些都是丰田方法的基础,不是吗?

那么,一个故事墙应该有几个纵栏?一般来说,一支软件开发团队至少有三种角色:分析需求的人,写代码的人,验收的人。每个角色有待处理工作区和当前工作区,再加上整个团队的完成区、阻塞区和Backlog区。所以,一个故事墙至少应该有8栏、9种状态(“阻塞”是单独的一块区域)。

原则之二:故事墙是团队的信息辐射器。

这句话也很简单。什么叫“信息辐射”?每张故事卡应该让人在五米开外就能看见标题,这样才能起到主动信息辐射的作用。所以故事卡要有足够大,十几厘米宽,用油性笔写上故事标题能在几米外看清楚。而且故事卡是各种交流的媒介,所以要用硬纸卡,用橡皮泥来粘,而不是用sticker,因为sticker会打卷,而且不适合在背后写字。

基于这两个原则,可以推知一个故事墙大约有多大:最紧凑的布置,待处理工作区按照两列设计,当前工作区按照一列设计(不允许过多的工件同时处理),Backlog区和完成区按照三列设计,两栏之间留一张卡片宽度间隔。简单算一下就知道,故事墙至少是接近4米宽。

基于这两个原则也可以很容易看出,不够体面的故事墙可能有哪些问题,从而找到改进点。

越来越多的IT组织希望在更具典型性的项目团队中实施敏捷。由于这种典型项目具有规模大、涉及团队多、跨地域等特点,对其进行的敏捷引入必须更加审慎和严谨。基于多次指导类似规模团队敏捷导入的经验,我们建议:大型团队的敏捷转型需从项目管理透明化入手。通过实施项目管理透明化,首先掌握团队现状、发现重点问题、制定度量标准,然后牵引团队实施更进一步的改进。

项目管理透明化分为两个主要方面:进度透明化和质量透明化。

  • 进度透明化。分布式的大型团队在需求、优先级、进度等项目管理的关键问题上达成共识,对于整个项目的顺利开展至关重要。通过引入基于用户故事的需求分析和管理方法,并采用适当的在线项目管理工具,将项目的范围、进度、速度等重要信息加以可视化,以便团队掌握自身能力、发现当前研发过程中存在的浪费和改进点。
  • 质量透明化。传统上大型项目往往在后期才开始集成和测试,从而给项目交付带来了极大的不可控风险,开发过程中的质量水平也难以掌握;而且由于质量保障活动在项目后期开展,发现质量隐患也难以有效弥补。通过引入分布式、跨团队、分层分级的持续集成,尽早、尽可能频繁地进行集成,以便团队随时了解产品的当前质量属性,提早发现质量隐患,为后续改进提供牵引。

通过实施项目管理透明化,团队将对自身现状有更清晰的了解,并发现大量的改进点。后续的敏捷推进将针对高优先级的改进点逐渐开展,并以迭代方式快速得到反馈和调整。敏捷推进活动本身也是以敏捷的方式进行的。

投资战略与敏捷转型

December 4th, 2011

上一篇博客 有关:恰好在读了《 竞争战略 》之后,又温习了一遍 成长-份额矩阵 ,然后就跟客户聊企业的敏捷转型。这时我终于清楚地意识到:敏捷引入的策略和应该与portfolio管理和投资战略紧密相关。

首先,狗是不需要什么敏捷转型的。当然也不好说得那么绝对,毕竟最起码减员增效可以让资产剥离的时候顺利一点。但是太多企业的问题不是减员增效,而是盲目追求规模舍不得把狗杀掉。这就是另一个话题了。

另外三个象限的敏捷转型策略非常有趣。效率,质量,用户。敏捷的三个关键词其实是不均等地对应在三类业务象限上的。

野猫(或者“问号”)的敏捷关键词是用户。份额小、成长快的野猫业务,最大的风险是根本就没人用。所以这时候要准确地抓住用户需求,提出强有力的价值声明,关注用户体验,以最小工作量抓住眼球并获得转化率。对于野猫业务,敏捷引入应该从 体验设计 入手,首先进行 快速项目启动 ,然后以迭代方式迅速交付并获得反馈。

明星的敏捷关键词是质量。份额大、成长快的明星业务,非常容易因为“Quick & Dirty”的开发方式而变成焦油坑甚至直接影响交付。这时候需要偿还技术债务、打好根基,才能承受不断加大的交付压力。对于明星业务,敏捷引入应该着重关注 持续交付 ,从持续集成和自动化测试入手,向下改进代码质量和架构质量,向后借助 DevOps 打通交付的最后一公里。

金牛的敏捷关键词是效率。份额大、成长缓慢的金牛业务,质量和交付风险并不高;同时因为规模大、涉及人员众多,些许效率提升就能带来明显的收益。所以金牛业务的敏捷引入思路应该是以稳为主、持续改进。通过 持续集成中心 等方式提升项目透明化程度,首先掌握现场状态、建立反馈机制,然后逐步改进、逐步提升人员能力。

结论:不同的业务类型需要不同的敏捷转型策略与实践。将投资战略与敏捷转型策略结合,有助于更有效地引入敏捷。

引论:所谓“全公司统一的敏捷流程”就是反敏捷。人和交互重于流程和工具。