艾伟也谈项目管理,微型项目实践感悟

1. 什么是微型项目

微型项目是指绝大部分工作由一个人员负责的项目,这个核心成员负责项目的系统分析、构架、及绝大部分的编码工作。项目的持续时间一般不会超过一个月。项目的参与人员除了核心的程序员外还可能一部分辅助人员,包括第二程序员(负责一部分编码工作)、美工(负责界面设计)等。

微型项目的规模一般很小,业务逻辑也比较简单,价格一般也不会超过10K。程序员通常直接和对方领导打交道。客户大多没有任何技术背景。需要程序员直接负责系统的需求分析。

2. 微型项目分析

2.1 一般流程:

微型项目的流程可以说没有什么特别的,因为项目较小,通常谈不上工程学方法。但是因为系统需求的不确定性较大,一般来说,敏捷得思路比较适合。流程如图所示:

1、需求分析。

2、构架设计

3、撰写代码

4、增量交付

5、应对需求变更

6、最终交付

以上过程有时候并没有什么明显的界限。鉴于项目的规模,大多时候在分析需求的时候,构建就慢慢的形成了,在形成构架的过程中,很多编码上的难点也就了然于胸了。对于需求上的变化,几乎是必然的。很多时候,项目预期一个月,但是一个星期就可以做完,剩下的三个星期都是在应对需求的变化。

2.2 需求分析

这种小型项目的需求可能会千奇百怪,从常见的OA到医院的药房管理。从用户的角度看,他们通常是为了方便自己的工作,提高效率。但是什么样的程序才能满足他们的要求,他们也不知道。所以程序员就需要自己找到需求。

怎样进行需求的分析呢,一般是从用户沟通和对用户工作流程的观察出发。

在和用户的沟通之中,用户一般不会有系统的想法,或者用户的想法不现实。我们要做的就是把用户的想法记下来,然后从中提炼出真正的需求,打个比方:在一个医院药房管理系统中,用户说药材会分为中药和西药。真正的需求其实是药材需要进行分类,否则当项目开发出来用户或许就会要求增加中西合剂。当然,这里是要求敏锐的捕捉到用户的真正需求,而不是无限制的做猜想而增加项目不必要的复杂性。还有一些是不清楚的需求描叙,仍然用那个药房管理系统为例,用户要求记录入库出库信息。这条描述其实很不清楚:要记录哪些信息?纪录多长时间内的信息?信息需不需要有汇总和统计?当然需求的分析是一个渐进的过程。这里不但要求分析人员有敏锐的捕捉能力,还要求和用不断的和用户沟通,更多的让用户参与到系统的开发中来。

一般交付之后用户的需求都会变更,这是因为用户没有技术背景,根本不可能清楚的描述系统的需要。所以用户一旦看到最终的系统,就会发现和自己预想的想法有很大的出入。所以这里的交付是个相对的感念,实际是指持续交付。所以敏捷开发在这类项目中是非常合适的工程学方法。

2.3 文档的管理

对于微型项目,几乎一个目录就可以保存所有的文件,这样做的方法也是为了便于备份和转移。我常用的目录结构如下:


从图上可以看出,这一个目录包含了所有的信息,以下详细分析:

1、 Database。数据库目录。如果系统有不同的多种数据库,可以在该目录下根据数据库类型建立子目录,比如说SqlServer,Access等。然后根据版本建立下一层子目录。需要注意的时,有的数据库,比如SqlServer 2000。会锁定数据库文件,这样在备份或者转移项目的时候就需要先停止数据库服务。

2、 Design。主要是保存PageDesgin或者UIDesign。

3、 Document。这个目录比较重要,保存的时所有的文档。下面按照“日期+文档名称”的规则为每一个文档建立子目录。注意,这个目录下的文档是正式提交的文档。同时,一个文档可能提交过N个版本。

4、 Member。重要目录。用于保存项目所有成员的文档。类似于版本控制器。每个成员按名称建立自己的子目录,再在自己的目录下按照“日期+该工作名称”的方法建立目录。目录下保存该项工作所有资料。包括文字、图片等。这样每个成员的工作记录都有据可查。

5、 Publish。项目发布的目录。按照“时间+版本”的方式发布,我们的目标就是尽早的发布!注意发布中应该含有所有相关信息,包括程序(安装程序)、数据库脚本、帮助文档,甚至是刻录光盘的Autorun.Inf。

6、  Ref。引用目录,里面放的是项目引用的第三方类库和相关的帮助文档等。

7、  Solution。重要目录。这就是我们的解决方案所在的地方了!一般是按照版本建立解决访问。

8、  Source。参考资料。可以是文档,图片,也可以是别人的产品,开源项目等。只要是对项目有参考价值的,都应该被捕捉。

9、   Team。团队的公用文件夹。存放公用的信息,比如说成员的联系方式等。

10、 Template。模版。一般指文档模版,即dot文件。目的是为了保证项目的文档都有一致、良好的格式。这点在对企业单位,特别是国有企业的项目中尤其重要。混乱的格式会给人不可靠的感觉,领导对此尤为敏感。

11、 Tools。项目所用到的工具软件。比如说代码生成器等。

12、 TryProject。每个项目都可能涉及到一些我们不太了解的技术,这就需要我们做一些尝试,这些尝试也应该保存下来,作为参考。我们可以建立一些TryProject进行实验。

以上就是我管理文档的方法。从文档的管理方法其实可以反映出很多项目的情况。一个良好的项目应该有良好的条理性。,具体展示出来的效果如图所示:


需要说明的是,这个图所展示出来的只是一个Demo。也是我为这篇文章所建立的。所有非常的小。真正的项目文件夹有几个G大小是很正常的。

2.4 版本控制

任何项目都需要有版本控制,这是无可厚非的。版本控制就是个大型的Undo/Redo。保证你随时可以吃后悔药。

版本控制的概念不应该仅仅只是捕捉代码。所有和项目相关的数据都应该在被捕捉的范围内。这些数据通常包括:文档、设计、数据库(及脚本),发布过的二进制包。采集的资料等。这也是现在的版本控制软件发展的方向。

对于文档、设计等,其实前面的文档管理方法就是一种版本的控制方法。

对于代码,这个级别上的项目VSS无疑是最合适的选择。不管有没有第二个程序员,代码的版本控制都是有益无害的。

2.5 其它方面

1、数据库

数据库如果在团队项目中,一般是架设在专门的服务器上的,这样大家都可以根据同一个版本进行开发。不过数据库的修改就要比较谨慎。同时要建立好数据库备份计划。

如果能够分离数据层,或者采用ORM等框架,支持数据库类型的转换,那么采用Access进行开发,部属的时候采用Sql也是一个不错的选择,这样备份和转移的时候依然可以一个Copy搞定。

2、备份

由于文件都在一个目录中,所以备份文档就是把整个项目目录Copy以下,不过有的时候最好清理一下TestResults(单元测试结果)文件夹,再压缩一下Solution文件夹。如果使用了VSS,还要记得备份VSS的数据库。

以上的方法不一定是最好的,只是我在做项目的过程中总结的一些适合自身的技巧。希望对大家有帮助。也希望起到抛砖引玉的作用。

时间: 2024-09-08 08:35:57

艾伟也谈项目管理,微型项目实践感悟的相关文章

艾伟也谈项目管理,项目经理成长日记(4)——态度决定一切

超仔刚刚推门进来,屁股还没有碰到他的椅子上已经让人感觉到他欢喜轻飘的神色,我抬头望着他眼睛,神色中洋溢的满是欢快.我看着他那兴奋的样子,微微笑着问道:"签完了?结果还可以吗?" "还不错!" "能满意就可以,继续努力." "嗯." 我知道超仔刚刚和公司签了新的合同,在新合同里他的工资有了一定的提高,这些都是因为对于他去年的绩效考核成绩还不错应该得到的结果. 年底对于我来说,可真是多事之秋,因为我需要在年底前完成对我团队这些人的

艾伟也谈项目管理,项目经理要向唐骏学习

中国人性喜围观,然而在中国,大部分新闻并没有围观的价值,这未免让人失望.但是,只要是加上"唐骏"这个名字,新闻总是能让我们围观者觉得值,觉得得到某种满足,从这一点上来讲,唐骏牛!真的很牛!! 这一次,唐骏给大家带来的是"假文凭事件",整个事件的发展,真是一波未平一波又起,可谓波澜壮阔,最后发展成为事关"诚信"的大事件. 我不得不说,唐骏,你太牛了!!! 唐骏本身并不是坏人,也不是没有能力,到现在我还十分佩服他.而且我还想维护他,因为事情发展到现在

艾伟也谈项目管理,项目经理成长日记(7)——说是细,做的粗

估计绝大部分的公司都在提倡一个口号:"注重细节."但是往往是口号容易喊,行动却是千辛万苦,何谓细节?也就是自身工作的每一个环节.每一道流程的琐碎小事,而这些小事又常常容易被人忽略.有很多人有雄才大志,内心中充斥着舍我其谁的非凡气魄,但其眼高手低,小事不屑,大事难成,最终只落得一事无成的悲哀. 软件开发亦是如此,提倡了许久的注重细节,更有甚者许多公司标榜自己的优势在于:"我们更注重细节."然而如果说我们要做到和自己提出的口号一致的时候,我们该如何去做?该做什么的事情才

艾伟也谈项目管理,项目经理的思维批判

想做好项目经理,就一定要改变你的思维方式.这对于技术出身的朋友尤其重要. 清末人们自以为天朝,他国皆为蛮夷.结果如何呢?丧师辱国,自己沦为病夫.其根本莫非自己脑筋不对头?后来又搞洋务运动,以为洋人只是工具好,其他都不如我们,师夷长技以制夷就可了.而事实却告诉我们,感情我们又错了. 做技术出身的项目经理,就仿佛清末的国人.技术第一的概念已经深入骨髓,说是做管理,其实还是把自己的技术看做天朝上国,管理当做蛮夷丑类,或者只是把管理当做一种工具来学习学习.这么做,果真能做好项目管理吗? 从技术走向管理是

艾伟也谈项目管理,项目经理要如何看待技术?

当上项目经理后,技术人员往往对自己的定位失去了感觉.其中最令人困惑的就是自身原有的技术标签,撕了也不是,因为技术还不能丢,贴着也不是,因为个人的成败往往决定于自己对团队的管理,而不再是自己的技术. 想要从这种困惑中摆脱出来,首先就要搞清楚下面几个问题: Question 1--项目经理职位对技术到底有什么要求? Answer: 想把项目管理工作做到点子上,两个观点要明确: ①技术不是必须项.项目经理个人技术很重要,但这不属于必须项,属于有了更好的东西,当然越高越好.因此,在工作中,固然出任项目经

艾伟也谈项目管理,项目的故事

这是关于一个项目的故事,与其它项目相比,既不非常复杂,也不是很简单: 一个应用程序与数据库以及其它两个系统通信.这在技术和架构角度都是主流,而在管理角度则是标准情况: 所有工作都应该在昨天完成,但还有很多没有完成的.简而言之,"这很难!" (这是开发者经常表达的一种情绪,但是谁都不会太大声地把它喊出来.) 为此我们创建了团队.雇佣了四十位员工并指定了他们的角色.我们把团队分为小组,并在不同的小组之间设置了一种契约.每个小组负责应对特定类型的要求.这样就形成了要求的流程.指定的小组会承受

艾伟也谈项目管理,项目做完了,总结一下

在连续封闭N个月以及再后来的N个月的加班后,项目终于以延期N个月的结果结束了.不管曾经发生过什么,不管项目是否延期,重要的是项目结束了,所有的项目成员都可以松一口气了.曾经和同事开玩笑说:在我经过过的失败项目中多了一个项目,以后就能避免同样类型的失败了.同事们听了,都笑了.在那段时间里,很久没有听到过同事们畅快的笑了. 现在,我以我目前的知识水平,总结一下项目中存在的问题,这些问题的出现也不是一两个因素造成的.当然,专业水平太低,也总结不出什么高深的内容.不管怎么样,也算是对项目的总结吧.这里先

艾伟也谈项目管理,项目时间估算

大学里跟老师做的项目几乎没有一个是按时间完成,都是在拖时间,一拖再拖,每次老师初步地估算这个项目需要多少时间,我脑袋里都下意识地想(老师估算的时间*2,或*3,或者更多),其中最糟糕的一个项目估计用一个月,结果用了一年才勉强结束,实际时间=估算时间*12,我的天呀,当时估计也就是学校这种地方做得出来.到了企业之后,实际时间是估算时间的两到三倍也是很正常的事,这还是在需求明确到85%以上的情况下,需求不清的情况下,时间就海了去了. 项目开始时,客户简单的描述需求,开发方便豪言壮语一个时间(有时这个

艾伟也谈项目管理,项目经理成长日记(6)——对不上的帐

    中午吃过了午饭,端着杯茶做在休息室里正稍稍休憩.公司内部特别开辟出一个空间,并装修成吧台,高脚转椅,微高的台面和酒吧里面的样子多少有点类似.不少人见过微软.google的office的专修格调,让多少人羡慕而又渴望.其实程序员作为脑力劳动的工作者,有时候我们太需要像作家那样的灵感源泉,所以office的风格或多或少应该尽量给人营造一种比较轻松的环境,这样在轻松的环境中进行高强度的脑力将会尽可能让二者得到一种缓和,从而使质量和效率更为高效. "吃过了?小余."标准的中国人问候的方