Tag Archive for 'svn'

小团队网站项目开发方法探讨

最近在做实验,看怎么样才能够提高小团队的的项目开发效率。我碰到的场景,相信很多互联网公司也会碰到,在有限的时间、有限的资源情况下完成一个项目,并且在一定时间范围内升级功能达到具有竞争力。

这里定义的小团队是有一个项目经理,1-2个程序员,1个网页设计,测试则是不同项目组交叉设计。

原来存在的问题:

1 团队之间口头沟通多,书面沟通少,项目开发到后期发现会遗漏一些重要功能或者出现原来想到的问题。
2 页面设计和程序开发发生死锁,导致进度受到影响。
3 功能设计描述不清,造成页面设计和程序开发理解上的歧义。
4 测试时间的紧张造成没有很多时间和资源进行错误修正,影响产品质量。
5 由于进度始终不能如期完成,总是有项目的特性没有完成,造成团队疲惫,没有成就感,影响士气。
6 产品开发无法达到设计期望值,所以无法和竞争对手拉开差距,影响公司整体战略。

这里说过,我再借助一下“敏捷开发”这个术语,下面的方法绝对不是真正的敏捷开发,只是觉得这个词可以很好的描述我要表达的意思,当然也可以称呼为“有效率的逼迫性的按照时间管理的项目基于有限资源的小团队开发方法”

首先是准备工作:
1 通畅的电子邮件系统,因为大量的消息将通过电子邮件来传递。这一点我仍然不满意目前自己团队使用的的系统,我理想中的电子邮件系统是google mail企业版,免费,并且7G的容量,加上google日历和文档共享,足够小团队使用了。不用再担心自己的邮件服务器什么时候会出问题,google日历可以和很多中应用同步,不管你是windows,还是leopard或者iphone。

2 trac。我一再推荐使用trac来管理项目特性,简洁有效。除了安装稍微有点麻烦,基本没有缺点,基于sqlite数据库,便于管理。trac支持多人多项目的管理,可以有效的非配工作,不需要再手工写工单了,当然也不需要昂贵的ms project了。trac是免费开源的软件。

3 svn。不用再说了,如果主要还是基于windows开发的话,暂时不要去想git了,用svn足够应付小团队开发所需要的版本管理功能,加上强大的windows桌面端tortoiseSVN的话。

4 im工具,推荐使用msn或者gtalk,后者的好处是所有的对话都会存盘,便于以后搜索。如果你使用的mac的话,那么只有adium了,足够了。windows的话除了原生的那些im程序以外,推荐pidgin,除了可以集成多个聊天帐号以外,还可以支持otr加密方式,这样windows、linux下的pidgin+otr和adium(本身自带支持)之间的对话都将是加密的,基本不能窃听。

开发工具项目不同,各有所长,这里就不说了。

现在说说我设计的开发流程,先来说说要达到的效果:
1 目前设定所有项目在每周可以发布一个build版本,除了第一个b1达到最基本要求以外,之后的b2、b3等等要每周增加需要的功能,功能可能来自用户,可能来自市场竞争所需。
2 每一个build包括功能设计、特性分解、可行性分析、页面设计、程序开发、功能测试、整体测试。
3 根据项目需要完成的指标,一般网站来说,无非是用户数(包括用户活跃度等)、pageview(包括uv)、商品(条目)数量、成交情况等,每周根据数据情况来调整本周build的功能和优先级,来尽可能的完成既定指标。

所以前面说这是一种逼迫式的开发,对于项目管理的要求很高,这不是传统上用个project画一个甘特图就可以的,而是时间和资源的限制,效果的逼近。

目前在公司里,有两个项目采用了这样的方法,刚刚开始不久,还不能说取得很好的效果,不过感觉已经比以前效率高了。

整个方法的实施过程如下:

1 每周一开会讨论本周build要完成的特性,并估计下一个build要做的特性。本周build特性一般在10个以内,排好优先级顺序,按照1个程序员3-4个人天来计算。下一个build甚至后一个build的特性确认主要是列出必须做但是在本周肯定来不及实现的功能,这样可以根据之后的数据分析来再次客观的评估是否这个功能真的是”必须”,或者实现的细节有否和初衷有所差异。另外,这样可以让整个团队从产品角度清楚自己项目在本周会做到什么样子,下周什么样子,对于功能设计、数据监测、测试、市场推广都有益处。一般开会时候要确认项目上线时间和相关工作计划,主要是数据是否有升级、服务器部署是否有问题、数据监测方法、测试计划以及最重要的运营安排。

2 开发,这个就和一般项目没有什么区别,按照规划好本周要完成的特性的优先级进行,所有重要的沟通全部用邮件进行,项目经理需要在最快时间内响应需要决定的事宜,并有可能去调整特性优先级、build特性规划等。

3 bug and fix,当项目在运行的时候,会暴露出诸多小问题以及一些可以改进的UI、UE和功能点,为了不影响原来build在本周设定的目标,这些一律归到bug and fix这个trac上的milestone。然后区分几种情况:

致命bug:立刻修改,因为已经在运行了,所以需要立刻修改。
提升UI和UE:根据本周工作量,纳入本周的build或者下周的build,在下周一的会议上提出。
功能优化:在下周一的会议上讨论,原则上本周build不考虑。

凡是完成了的bug and fix都在close后注明是在哪一个build完成。

4 测试,测试通过邮件做内部测试,一般没有时间和资源做广泛的外部beta测试和用户面对面访谈,就只好不同的项目小组交叉测试了。测试人员可以当着项目经理或者开发人员逐一支出问题在哪里,这样便于项目经理描述问题。所有发现的错误和问题记录到上面的bug and fix,致命错误由开发人员立刻纠正。

5 发布,一般每周四开第二个会,决定是否进行发布,以及发布中可能存在的各类问题,当一个项目进行到build3之后,一般发布上也不会有太多的数据迁移和运营准备要做了。发布前做好数据备份当然是必须的,同时视情况调整产品运营手册等。周四的会基本上也可以知道本周的工作量完成情况,再思考一下,下周一又要开始新一轮的build了。

6 竞争对手分析,如果是竞争性产品,项目经理要有很清楚的产品路线图,以周为单位来知道自己负责的产品目前和竞争对手差距在哪里,若干时日之后,还有多少差距。一般得不到竞争对手的数据,所以各类数据只好自己进行监测和目标设定了。当你的产品经过一年50个build的发布,我想竞争对手日子会很难过了。如何针对竞争对手设计产品,我还有一个曾经在2004-2005年获得收益的”半盲法”,以后再分享。

基本流程就是这样,实际实施还有很多细节,比如文档管理、设计标准规范、开发规范、对于销售的支持和响应带来的影响、矛盾的功能如何平衡、怎么进行数据分析(怎么看懂google analytics)、设计、开发、测试、运营的同步和异步操作等。之后慢慢再讨论。

小团队的项目开发,还有一点就是士气和团结,不团结的团队,没有士气的团队,不喜欢互联网的团队,那么就算有再好的方法,也是无用的。这个话题已经超越项目管理的范畴。

(以上经验得益于诸多前辈:winamp开发小组、微软以特性列表为核心的项目开发管理、Borland早期Delphi和JBuilder开发成功的经验等)

相关内容

奇怪的互联网

今天下午在codeing的时候,发现怎么都不能正常链接一个国外的svn服务器,然后发现这里也几乎打不开,ping了一下,丢包很厉害。过了几个小时后,好像好了。这也不是脆弱的互联网第一次这样了,肯定也不是最后一次。强壮的电脑和强壮的互联网,暂时还是希望的一部分。未来,会好一些吧,否则我们怎么放心呢。

相关内容

记录一下自己进行开发的工具

工欲善其事,必先利其器。在目前其实日趋复杂的开发环境下,很难设想没有一些强大的工具,如何可以将复杂的应用进行开发,以及上线和运营。

trac:世界上最好的开发特性管理系统之一,包括bug管理,里程碑设定,我个人比较喜欢的特性列表法也能够在trac中完美的体现。trac能和svn很好的结合,使得源代码管理和特性列表相得益彰。

svn:这个不用多说了,基本上属于白菜一样大众普及了,一定要用,之前我也不是很重视,特别是一个人开发的时候,觉得自己只要做好备份就行了,直到有一次把程序修改的面目全非后,用svn轻松的恢复到之前的版本之后,我觉得离不开svn了。svn其他的好处不多说了,由于svn的异常普及,所以在不同的操作平台上都有很多插件可以使用,甚至很多编程软件都是自带svn支持了。

textmate:mac下最好的文本编辑器,vi之类实在很难入手,windows下暂时还没有全面功能可以达到textmate水准的软件,没有用过textmate的很难体会到,这里就暂时不掀起mac和windows的争执了。rails的发明团队在所有的书籍中的强力推荐也大大帮助了textmate。

delphi for php:基本的php开发我用上面说到的textmate,因为过于喜欢delphi,所以涉及到界面开发的地方都用codegear的delphi for php 2.0。delphi的素质就不多介绍了,强劲的ide,和其windows下架构惊人类似的vcl for php,强大的数据库连接能力。目前来说因为codegear的数次转手,在市场推广造成了一点问题,不过很多忠实的delphi fans还是继续支持着delphi。

相关内容

REST开发的粗浅心得

公司的team blog还没有完全弄好,一些东西就先写在这里。

1 Zend的REST功能还是很强的,像我目前这样简单的开发基本上没有什么问题。
2 做到目前的应用背后的事情还真是不少,很多环节也还没有连接好,比如目前使用的车型数据库lite版本是基于sqlite的,本身这个sqlite文件是从sql server中生成的,而这又涉及到公司本身的一个车型数据库重构的问题。因为sqlite是一个单独文件,open api调用中不涉及到数据库的写入,因此是否可以通过类似于cdn或者缓存的方式进行分布,进行简单的负载均衡,还要很多试验,
3 对于php,trac,svn,都是第一次正儿八经的用,很多小问题会困扰一整天。
4 textmate是一个不错的开发工具,因为没有ide,所以性能各方面都没有任何问题,检查错误,直接运行,多文件编辑之类,很多功能的确对开发者来说很贴心。同事建议可以使用zend studio试一下,感觉是一个很复杂庞大的软件,有空再说了。
5 php是一个很灵活的语言,很多地方也很先进,比如我现在用到较多的对象类型,数组类型,都很灵活和方便,相比较delphi而言。不过因为delphi的ide功能太过于强大了,所以很多时候感觉php过于随意了。(当然这只是我初学者的看法而已。)倒是很想试试看delphi for php来进行开发,现在已经出到2.0了,价钱还是太贵。

接下来开始做局域网的测试,一些功能会用在sns中的webgame的开发。之后等到appkey完成后,进行公网测试。还有13万张图片的数据库如何优化处理,基于车型数据库lite的一些项目重构等等,挑战刚刚开始。我也算七八十岁学吹打。

相关内容