该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-20
最后修改:2010-05-20
而几年前,我做过的两个项目,技术难度比这大,功能模块比这多,却只需要一个人,一个月。 问题在哪里?大家一起来分析一下。 先描述一下这两个成功的项目。 项目一 南开BT联盟(简称:BT) 项目背景 南开BT联盟是我03年底在校内部署的一个BT网站,采用一个免费的BT服务器(PHP)。半年后,也就是04年秋,发展成南开校园内几乎最热门的下载站点,我爱南开BBS的BT版成为年度十大热门板块(网站运营是另外一帮哥们,我只负责幕后技术)。因为校内注册用户超过5000,并且种子数超过1万,于是出现了定制化开发的需求。但是,该BT服务器是免费闭源,PHP是加密过的,没法改。于是,05年年初,也就是寒假那一个月,我没有回老家,从零开始,一个月写了一个Java版的BT服务器,开学后,就替换了原来的,运行一个月后,反应良好,晚上高峰期,上千人同时下载,五年前的截图。 功能模块 内核:BT客户端和Server端通信(编码解码器),torrent种子文件解析,种子状态更新、下载流量统计。 附加约8模块:种子列表、详细,站内信,简易BBS,种子上传、管理,用户管理,用户注册登录,排行榜、求种、系统管理等。 开发技术:JavaBean+Servlet+JSP(eclipse3.0+Tomcat5.0) 代码量:50多个JSP,约三万行Java代码 项目二 报表展现(简称:Report) 项目背景 该网站约有两百个复杂报表,现在,因为整个大系统统一用Java开发,所以主要是技术升级。项目经理估算是10个人月,所以把活丢给我就没管了,慢慢开发吧。我分析了两天后,告诉他,我可以两周出一个版本,他大吃一惊,很有信心,就不过问我了。 我根据需求,自己开发了一套适合报表的框架(定制化的MVC框架)。另外,将sql统一到几个配置文件,以便将报表查询和程序分开(DBA和开发人员分开)。说实话,真正有难度的是sql,反正我看不懂。 开发了一个月后(两人,一个月),交工,客户很满意(50万合同额)。后来有近两个月的维护期,基本一周花半天就可以了,反正那段时间我特闲,专心啃技术。 实际情况是,我两周开发框架,两周开发业务。 项目三和四 当前的项目(简称:新B2C)? 项目背景 该项目(老B2C)04年,一个程序员一个美工,一个来月就上线了。其后几年,每年几十万的毛利。但项目几年没维护,页面陈旧,内容过时,当然,产品和价格总在更新。 于是准备改版,核心页面总共10个左右,如首页、频道首页,产品详细页,预订表单。 技术5人,业务2人(负责网站内容)。技术人员中,一个(我)负责需求和原型,一个负责后台(另外一个辅助),一个负责前台,一个设计师。其中有技术高手,比如我,却搁浅搞业务,一个电子科大的技术牛人,一个原来开发老版本的开发人员。 花了一个半月,约8人月。 技术:前台JSP+JavaBean+WebWork,后台用Flex+Hibernate+Spring。前台让开发人员选用自己的熟练地技术,后台技术也是熟练的,基本上进度阻力并不在技术。 改版后,Google统计数据和实际订单量表明,并不成功。 -------------------------------------------------------------------------------------------------------------------------------------------- 问题在哪里? 下面是我的分析和比较,但我认为项目的决定性因素总是那些方面,只不过哪一方面突出些。 1、原型开发(需求分析) BT:基本没有,因为业务非常简单,主要是老版本技术升级。 Report:基本没有 老B2C:有,主要是抄袭,业务简单。另外,两个人,一拍即合。 新B2C:开发完原型后,给业务人员确认,修改,反反复复。老板当时不看,过几天会突然提出修改命令(小企业,老板没那么多事)。 最后确定下来的,是第三个版本,已经花掉了约两周。 2、内容建设 BT:不需要内容,只做平台。 Report:不需要内容,主要是处理数据 老B2C:内容抄袭,美工、开发人员一起抄。 新B2C:内容重新整理,只要出结果就行。 不过,出哪些内容,也就是一级大纲我出,包括原型上要求的内容,我都要截图出规范,配合很死板。小团队协作,通过文档规范来解决,已经是下下策了,但没办法,已经没法推进了。 3、界面开发 前三个项目,界面都很简单,直接Dreamweaver开发。 新B2C,一位高级设计师,新来的。因为原型中已经大体确定了布局,另外,可能我对界面干涉较多,所以他来后极不适应,因为以前做网站都是自己一人说了算,经常是到下班六点,就开始做自己的个人网站,不把工作放在心上。后来差不多做完,就离开公司了。 界面开发了约一个月,其中首页开发了半个月,后半个月都是赶,所以质量很差。因为界面设计都是先PS做效果图,后切片做HTML,工作量大。 我的问题:交互设计师(我)和界面设计师的职责不明确,导致设计师失去热情。后来我想到解决方案:1、设计前先给设计师仔细讲解业务,为什么我这么布局;2、界面风格的评审留给业务员。 但我本身对交互设计和界面设计有较好的基础,我更接近客户,还是业务员?我接触业务已经一两年了。 4、决策 前三个项目,基本上是个人决策,执行力很高 新B2C:因为涉及到产品经理(我)、业务员、老板三方,谁都想争取决策,闹得非常僵,项目几乎无法展开。第三个版本,修改建议主要是听业务员的,但大家已经彼此失去合作热情,导致后期的原型确认和内容建设进度很慢,三方都在耗。 5、协作 前三个项目,基本都是单双人,很顺畅。 新B2C项目,涉及7人,技术团队内部协作对进度影响可能只有10%(除了当时那位设计师,都服我),但部门间协作非常困难,因为没有利益制衡。虽然没有剑拔弩张,但已经是很机械、被动的合作。 6、激情/热情(最根本的问题) BT:强烈的学习动机,一定的责任和荣誉感。那时候我每天写代码到晚上3点,睡一觉后接着写。 Report:强烈的技术爱好,领导的信任和支持,没有进度压力。那时候我路上思考,吃饭时思考,睡在床上也思考。 新B2C:毫无激情(一周有效时间三天都不到),下班和周末就彻底不想思考。 我:有责任,但无权和利。权:无法推进业务员的内容建设, 利:作为合伙人,只拿基本生活费2k(五年前月薪的1/3)。 我的期望:老板把网站业务这块抓起来,另外花点时间在用户体验上,而不是想起来就催进度,提需求,而从来不关心导致进度迟缓的原因,并且一起办法。 管理的本质是利益的制衡,对于我们三方,我、老板和业务员均无制衡。 事后我想到的解决方案 以信任和激励为核心(激励的本质是满足人性的需求:比如我最看重士气和团队凝聚力,做事本身的快乐,而不是利润)。 一切问题,都是人的问题。 如果说业务人员不配合、缺乏动力,是我引起的只有30%,因为我们是物理上分开的两个环境,两种文化。 如何激励?
上面的措施,主要是解决我(负责人)和设计师的激励。如果说管理的本质原则是:责权利的平衡,那么有权和利做支撑,我的责任感也会来,我也想把事情做好。 不过,我的期望似乎太理想了,去改变老板太难。 如果能够解决团队协作和士气问题,我认为可以达成如下目标:整体进度提前50%,约15工作日(三周),也就是将内耗省下来。界面设计速度、代码开发速度可能快不了,但原型开发速度、内容建设速度可能提高60%。 因为公司有好几个子网站要改版,目前这个子网站,我把负责人的位子交出来了,离开成都来大连(和老婆团聚一段时间),我只专注于原型和界面评审,也就是用户看到的那部分。因为,我确实不想这样内耗,或许那位做老网站的员工和业务员、老板处容易些(企业基因啊,我是外来基因)。 大家看到这样的案例后,对团队协作和单人作战,以及项目开发过程(需求、原型、开发、内容)与进度的关系,有什么新的看法?如果这样一个项目,你是负责人,你会怎么做? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-05-20
补充几点:
1、项目并没有失败,只是没有达到我预期的目标,快(比目标提高半个月)、省(人力少)、好(质量高)。 2、我很希望老板、业务人员和我齐心协力,而实际上合作成了交易,讨价还价,干得很不爽。 3、可能是我要求太高,目前不过做得很平淡罢了。 |
|
返回顶楼 | |
发表时间:2010-05-21
楼主,我非常倾佩你的技术,我是初学者,对你1L说的BT服务器很感兴趣,能分享一下代码或者说一下原理么?
我想搞一个试试。谢谢! |
|
返回顶楼 | |
发表时间:2010-05-21
很明显,前2个系统,其实是你单打独斗。
BT系统纯粹是从需求到维护你一个人包了,没有任何交流问题。因为纯粹出于激情和成就感,也没有任何利益纠葛。 报表系统和BT系统有类似情况。你需要的需求是已经确定、无变更的,而具体报表不用你关心。 而最后的B2C则是一个非常典型的混乱团队开发。人员职责划分不合理、需求管理混乱、交流不通畅、没有协调机制。至于你认为最后还是成功的,对此我表示怀疑。我认为项目的目标根本没达到,你们项目的价值基本是0,项目花了多少亏损就有多少。你所谓的目标其实根本不是项目的真正目标。 项目为什么要做呢?是因为老网站已经不能适应公司业务发展,购物体验不好。真正目标是提高客户购买体验,带来业务提升。而你最后也说了,从后来的统计来说,改完了和没改差不多。那么也就是说钱白花了。如果事前能预知,老板绝对不会启动这个项目。 我认为你们最大的问题就是团队的建设问题。你在项目中的角色是什么?是团队开发的一员?掌控项目的项目经理?还是负责业务分析以提出需求?我可以看到你在需求、设计等多方面出击。但是又和同样负责这些的团队成员产生冲突。 以信任和激励为核心不错。只有看到项目有好的前景,大家都可以从中获得收益才会积极应对。不过你不看重利润非常错误,企业中不能创造利润=没有价值。而且我也没看到你在团队中“最看重士气和团队凝聚力”,你和业务人员与界面设计相处得都不好。“原型决策权”为什么要在你呢?如果你是负责需求,对项目成败负责,那么你确实有这个权利。如果不是,那么你没有权利。“界面风格决策权”同样,只有负责需求,对项目成败负责的人才有决策权。设计师只是根据需求进行设计。如果设计不能符合需求,那么就必须纠正。薪水我不知道你们现在拿的是否合适,不发表意见。 至于如果把团队建设好,能取得多少进步,实在很难说。因为你们成果的好坏,要市场来检验。我只能说,新系统带来的业务越多、节约的成本越多,你们的项目越成功。哪怕仍然是和现在一样的失败,那么你们至少可以减损和止损,少赔点。 如果我是项目经理,我该如何呢? 我不知道你们当时的工作情况,比如是否有非常严重的加班等等。如果有加班,那么你给出的工时其实并不准确。还有,你们没有任何测试人员。那么是否有可能项目中很多功能其实是半成品呢?所以我只能按照我自己想的情况模拟。 项目情况:B2C项目。参考老系统并结合新需求,开发新的B2C销售平台。 项目目标:提升用户购买体验,以达到增加流量和订单的目标。 项目人数:准备和你的一样。 项目时间:初步规划1个月试运行,2个月内正式运行。如果需求不断增加,则对应延期。 我觉得应该在启动时就选择合适的软件开发流程。如果可以,我希望选择敏捷流程,至少也是增量开发流程。开发必须迭代进行。因为项目较小,我认为1星期迭代比较合适。进度方面我认为2个迭代发布一个可用的alpha版本。也就是说理论上半个月可以开始初步试运行。4个迭代至少发布出Beta版。 老板+业务员负责提出需求,检验成果。需求只能在迭代开始时提出,除非有非常特别的原因。不能在迭代中途加需求。迭代完成,进行审查,看成果是否符合需求。然后根据这次审查结果,准备下次迭代的需求。 我负责掌控项目进度、协调需求方和团队、帮助解决团队开发中遇到的困难,整理会议记录和项目文档。 团队人数上如果按照你的人数,我希望有1-2名GUI设计、4-6名开发、1-2名测试。团队负责根据需求进行设计和开发,GUI设计负责页面和图片、开发人员编码并进行单元测试、测试人员编写测试案例并尽快启动测试。 |
|
返回顶楼 | |
发表时间:2010-05-21
最后修改:2010-05-21
看了一遍,想说几句:
管理主要在两个方面: 人 和 事 。 要想做成功,无论管人还是管事,都能做到“运筹帷幄”,“全盘把握”,“事无巨细均了如指掌” 。 项目小,一个人或许可以扛下来,项目大了,人 和 事 分别由其能负责的人来管。 从这点来看,你的项目的曲折 千错万错, 作为项目管理者的你错最大 。 协调做不好,人管不好,事也没把握住, 我要是老板,第一个要“开导”的就是你,当然你上进心不错的话值得培养的话, 那第一个要重点提高的就是你。 无论做什么事情,都要打有把握之战,这个把握 一个在你,一个在你的兵 。 你的兵不行那就得靠你,你还不行,那就只能靠天了。 |
|
返回顶楼 | |
发表时间:2010-05-21
最后修改:2010-05-21
To魔力猫咪,看来你是一个很务实的人。我认为你们最大的问题就是团队的建设问题,我很认同。
这个项目的细节我没有过多透露,因为我希望找到一种半通用的软件过程和项目管理方法。对于你的解决方案,我感觉它主要适合企业应用(用户是企业员工),而不是互联网应用(用户是大众)。 我们做的是旅游电子商务B2C网站(可以理解为携程网ctrip的mini版),这个项目的特定环境:
你不看重利润非常错误,企业中不能创造利润=没有价值。我很认同,我的意思是,当项目的成功只决定于执行力的时候(内容建设、界面、代码开发),执行的效率主要由士气和团队凝聚力决定(有较好的流程)。 关于你提高的团队情况,我说明一下:
所以,在这样的环境下,你的项目管理方案可能需要变更。 另外,人员安排,可能达不到你的要求,也没有必要。
你没有提到内容建设,而这是项目最难推进也是工作量最大的一块。比如帮助类文章纯写一篇可能要一上午,抄袭带编辑可能一小时,要保证质量,除非业务人员自律和高度责任感,或者业务人员的上级严格把关。 顺便说一下,一个电子商务网站的成功,有七大方面,按顺序:
有这样一个限定环境,该如何进行项目管理? |
|
返回顶楼 | |
发表时间:2010-05-21
很简单,大家都是按月拿工资的。要是按活拿工资,比如这个项目多少钱包给你们这几个人做,要是实施成本比较低你们自己就把这些钱分了,这样的话做起来就快了。
|
|
返回顶楼 | |
发表时间:2010-05-21
最后修改:2010-05-21
项目中有很多特殊情况,比如人:
老板和我是亲兄弟关系,他是生意人出身,两人做事习惯差别太大,我算过来帮忙 特别是设计师:
|
|
返回顶楼 | |
发表时间:2010-05-21
前两个事可以不用提了,一个人干事怎么都好说,人一多了就难办事,群龙还得有首呢,我感觉领导阶层的威信非常重要,全都民主了,跟台湾的政局就没有什么差别了,都自己想自己的,自己干自己的,人与人的思维方式存在很大差异,各种客观原因都可能致使你的项目被拖延。
|
|
返回顶楼 | |
发表时间:2010-05-21
最后修改:2010-05-21
老板、技术人员 中间要隔一个经理的角色
作为技术人员,不能同时兼顾经理的角色的话 那么剩下2种选择 要么自己当经理 对产品只提比较粗的要求,控制关键里程碑,对外负责协调沟通 要么自己当技术人员 找个经理来让自己安心工作 不然争权夺利外加各种会议,一顿忙下来以后,很难再有心思想技术问题 做管理和做技术都很出色的牛人有不少 但同时做管理和做技术都很出色的人就少见了 |
|
返回顶楼 | |