一个重构眼中的“项目管理”

TID做重构两年多了,眼看着团队像自己一样,从无序到有序,从青涩到成熟,一步步成长起来。从最初的每次例会上轮流抱怨需求变更、需求插单,到现在井然有序的需求排期、项目邮件,这其中的蜕变,看似简单,实则十分不易。前不久支持“XXX”项目时,看到上游的小伙伴们还在混乱中摸爬滚打,故写下此文,希望对这方面有需求的同学有所帮助,也希望这方面有想法的前辈、同学指导、探讨。

开始之前,有几点需要特别声明下:

  1. 此处所说的“项目管理”并非专业的项目管理(所以我打了个引号),项目管理这碗水太深,并未做过甚至都没看过别人做的我不敢在这儿评头论足。这里只是作为重构,作为项目的一个环节,对所遇到的问题及解决方法的一点浅见。
  2. 我所谓的解决方法,主要是团队leader鬼哥bboy90的思想和方法,我只是从执行者层面表达一下自己的看法和认识。
  3. 每个团队的情况都不一样,遇到的问题和适用的方法也不一样。这里的团队背景是,需求(包括日常优化需求和项目)由产品经理来规划并跟进实施,对效果负责,也就是说,产品经理是需求的主导者。支持需求的各方资源,如交互、视觉、重构、前端、后台等都是公共资源,并不100%跟某个项目,而是在自己负责的产品线内,哪里有需要,哪里就现身影,也就是说,每个环节的资源(如重构)和产品经理之间是一对多或者多对多的关系。

好了,说这么多,开始进入正题了。问题大概是这样的,支持“XXX”项目时,频频收到来自上游的变更,与其沟通后发现他们也是深受其害而不知如何应对。下面是大概的沟通内容:

重构:亲,交互不是已经定稿了吗?怎么还在持续更新啊?

交互:没办法啊,之前开会提到过几个问题,产品方案做了点变更,交互也要重新设计下呀。

重构:为什么不让产品提个需求变更呢?这样你可以集中处理,也方便排期,对下游的影响也小一点。

交互:开会一起讨论过的,不用产品提变更了吧?

重构:那你其他需求不会受影响吗?

交互:会!有个“YYY”的项目,本来几天前就该启动的,这几天一直在优化我们这个,那个项目已经推迟4天了。领导一定觉得很奇怪,你这个项目不是已经结束了吗,怎么还在做。我也很无奈啊。。

……

重构:你最近很忙吧?除了我们的“XXX”项目,听说还在支持其他几个需求。

视觉:是啊。

重构:那你是在并行处理吗?应付地过来吗?

视觉:是啊,没办法,一起给过来了,都很急,只能自己撑着了。

……

这样的情况比比皆是,尤其是在新人中。因为大多数同学会有一个误区,觉得自己是来干活儿的,如果活儿来了自己反馈数量太多应付不来,会让人觉得工作态度不积极,或者能力有问题。所以都会先揽下,然后,要么很幸运的,有个项目卡在了上游环节,就可以理直气壮地说那啥啥稿还没提供过来;要么自己拼死拼活加班赶;要么忽悠产品经理,评估多点时间;要么谁催得紧先做谁的,催得松的就往后延呗,反正一般也不会投诉的。据我感觉,最后一种情况最多,第一种次之。羊毛出在羊身上,大家都是人,不是神,没有三头六臂,工作多的时候也不过在一定程度内提高点效率而已,不可能同样时间内有多少就能解决多少的。大家都明白这个道理,但大家都不敢把它放到台面上来讲,就像皇帝的新装一样,于是大多数人就这么糊里糊涂地躲过了一劫又一劫。通常,陷入这种境况时,除了手忙脚乱,还会很苦恼。明明自己很辛苦,明明自己已经尽力了,明明自己的工作能力也不差,却总是心虚的,怕这个催那个问。放在前面支持的,产品也不过是道声辛苦,放在后面支持的,产品虽也表示理解,但难免有不满的情绪。这种时候,也唯有祈祷上游提供得晚一点,或者会议、插单的事情少一点。

其实,这个问题并非没法破,只是对于新人或者资历尚不是很深的底层员工来说太难了。因为他们不够自信,他们知道自己的工作质量、效率都不是一流的,他们知道自己还有很大的提升空间,如果把问题抛出来,那就意味着要被挑战。这也是为什么say“Yes”容易,say“No”难的原因。所以,这个问题历史性地落在了项目管理或者团队leader的肩上。

所幸我所在的团队leader很给力,这方面一直管理有方,而且也在持续改进。下面就大概说下我们团队的“项目管理”之术吧:

  • 首先,每个人都是资源,而且是稀缺资源 ,一个人工作一天的工作量叫1人日。假设团队有3个人甲、乙、丙,那一周可以支持的总工作量就是3人*5日=15人日。
  • 假设这个团队要支持的产品线有两条,产品线A和产品线B。产品线A重要程度更高些,工作量也更大些,经协商,对产品线A和B按3:2的比例来安排资源支持,也即每周为产品线A投入9人日,为产品线B投入6人日。那资源的安排上,3个人中会有一个人(比如甲)全部投入到产品线A,一个人(比如乙)全部投入到产品线B,另外一个人(比如丙)部分支持A,部分支持B。
  • 对于各产品线的需求,由产品线自己的接口人进行优先级排列,周一早上统一发给支持方接口人(如产品线A的需求优先级列表发给支持方的甲),支持方接口人评估每个需求需要的时间,根据协商好的人力数(如每周9人日),按优先级列表进行排期,若列表里的需求都排上了,固然最好,若排不完,看其他产品线的资源有没剩余的,即看乙和丙有没有剩余的人力,若有,则寻求支持,若无,排不完的需求顺延到下周再排。
  • 若在支持需求期间,有新的需求插单,则插单需求的产品自行与其他产品协商,确定出谁的优先级更高。支持方只需关注协商的结果即可,若同意插单,则其他需求排期顺延,若驳回插单,则按原计划进行。
  • 若在支持需求期间发生需求变更,视变更大小更新需求文件或重提需求,支持方重新评估工作量并修改排期。

如此,把原本就该产品内部协商的优先级问题抛回去了,支持方不必再为先支持谁的需求左右为难了,需求时间冲突时,也不必并行支持多个了。当然了,世上没有免费的午餐,要求别人规规矩矩地,那自己也不能乱来。这样做了之后,对自己的要求也更高了:

首先,需求的时间评估要准确。

其次,排期结果要反馈给产品,要按自己承诺的时间完成。

不想别人浑水摸鱼,自己首先就不能浑水摸鱼了。

当然了,制度是死的,人是活的,实际操作中可以适当灵活点。比如需求变更不大时,在自己可承受的范围内可以开开绿灯;比如紧急需求插单时,可以帮产品分析如何既支持插单需求,又把对原需求的影响降到最低。制度是为了让整个流程更规范、更顺畅、更高效的,但遵守制度的同时我们也要时刻记住,我们的目的是为了解决问题,为了更好地解决问题,而不是拉仇恨的。在别人需要的时候帮别人一把,不但是职业素养的体现,也为自己日后寻求别人帮助打下了基础。不过一定要把握好度,切记过犹不及。

上述方式对于日常需求来说可以了,但对于项目还远远不够。因为项目规模比较大,时间比较长,支持期间难保有其他事情插单、上游提供内容不及时、项目变更等等意外情况。诸多的意外可能造成你项目延期,或者完成后又返工,但其他人是不知道个中缘由的,别人只会看到你没按计划完成,看到你流转下游后还在修改。夸张点说,你可能在背黑锅,你可能在背黑锅你都不知道。这种情况怎么办?透明化!在我们团队,是有一套项目专用的邮件模板的:

开发计划模板主要内容,用于项目启动时:

项目变更模板主要内容,用于项目内容有较大变更或者有其他需求插单时:

项目待确认模板主要内容,用于本环节完成时:

通过几个阶段的邮件,使自己的计划、输出清清楚楚,不但有利于自己的时间管理,保护自己免于各种误会,还可以使产品和上下游清晰地知道你的进程以及对他们的影响,减少沟通成本。而由于这些邮件都有现成的模板,你只需填内容进去即可,并不需要花多少时间在邮件的编辑上。

Ok,回到最初的问题,如果上下游都这样管理自己的项目,自然就没有问题了。在上下游都有序管理自己的项目的前提下,如果进行过程中,项目变更了,该当如何呢?结合当时大家的讨论结果和自己的想法,简单总结一下:

变更内容由产品经理通过需求管理系统或邮件发出,尽可能集中。根据变更内容对现有开发的影响程度和变更量的不同采取不同的措施。

以上,欢迎拍砖~通常来说,明事理的产品经理都是支持资源方这样管理自己的项目的,因为这样也更利于他们对项目进度和项目风险的把控。总之,一切只为合作更愉快,一切只为工作更顺畅,一切只为项目更高效!

以上,欢迎拍砖~

2014.6.19

一个重构眼中的“项目管理”

时间: 2024-10-01 01:25:36

一个重构眼中的“项目管理”的相关文章

一个重构的js分页类

// JavaScript Document /**//** * js分页类 * @param iAbsolute 每页显示记录数 * @param sTableId 分页表格属性ID值,为String * @param sTBodyId 分页表格TBODY的属性ID值,为String,此项为要分页的主体内容 * @Version 1.0.0 * @author 辛现宝 2007-01-15 created * var __variable__; private * function __met

一个开发眼中的运维

在云计算时代,开发和运维的结合变得越来越重要.在 DIFF论坛第一期,前新浪SAE运维主管, 郑志勇,分享了<一个开发眼中的运维>根据自己从开发人员转型运维之后的心得,谈如何把在开发上的运用抽象思维方式运用到运维领域. 1. 运维不是什么? 运维不是打杂的,运维不是客服,运维也不是服务开发的,但要做好合作. 2. 运维是什么? 运维服务于整个产品,保证架构合理,系统稳定.运维只对业务稳定负责,所有的工作都是奔着这个去的. 3. 你如何写程序,写程序的目的是什么? 程序是为了完成特定的功能.为了

一个菜鸟眼中的前端

首先,笔者本身不是大牛级别的程序员,一个入行没多久的菜鸟而已,因此观点难免有所偏差,欢迎指正,不喜勿喷.算是自己工作三年以来的经验之谈吧.  什么是前端?前端的过去,现状,未来 简单的说前端就是在B/S模式中,处在browser部分的代码,使用的技术主要为javascript ,css,html,html(当然还有actionscript,vbscript等)主要用于内容的展示,css主要用于页面的美化,javascript主要用于行为的控制.然而,前端却不止于此,首先前端代码不一定只适用于B/

【ITOO-工具】一个霸气的项目管理平台--Confluence(2)

项目开发过程中用到confluence管理文档,当然Confluence本身也是有规范的,下面我就分享一下自己创建这个企业Wiki目录结构的简单过程.创建好一个space(空间)后才能进行空间首页的编辑,所以如果您还没有创建自己项目的空间,就先新建一个吧. 开始编辑首页.在home页面,点击编辑,选择插入,添加一个Children Display. Confluence功能强大,我们可以根据企业管理的需要选择要展示的形式或内容.在选择Children Display 添加完成后,首页左侧边栏有F

一个广为流传的关于项目管理的通俗讲解

想首先问大家一个问题:你觉得中国人聪明还是美国人聪明?我见过最好的回答是美籍华人.我们说美国人很愚蠢,为什么呢?你们都考过T或G吧,他们经常会出这么一道题1/3+1/2=? 50%的人回答是2/5,这可是美国研究生入学考试的试题呀!通常在这个问题之前还有一个1/2+1/2=?为什么?他们怕太难了,先给个容易的热身一下.我在 美国的时候见过很多的PHD,对于美国人来说if...else...是逻辑,而if...if...else...就成了哲学,也是美国这么多哲学博士的原因^_^ 我们说美国人很愚

【ITOO-工具】一个霸气的项目管理平台--Confluence

最初使用confluence上传下载文档还有点烦,渐渐地熟悉了这个平台,发现confluence还真是强大!这样一个专业的企业知识管理与协同软件,可以用于构建企业wiki,wiki就是那个外表很严肃内容很权威的维基了-通过confluence能够实现团队成员间的协作和知识共享. ITOO是具有30多人的开发团队,使用confluence管理文档,实现了知识的快速共享.每个人都有用自己被分配的账号和密码,负责更新和管理自己相关模块的文档,邮件通知给所有人,每个人都可以看到别人发送给他的分享,避免了

项目管理学习笔记之中的一个.项目管理综述

一.引言: 认识项目管理 三位管理学大师的三段话: 1. "在当今社会,一切都是项目,一切也将成为项目." ---- 美国项目管理协会主席保罗 2. "项目管理将站在21世纪管理舞台的中央,21世纪将进入项目管理时代!" ---- 管理学大师 Tom Peters 3. "在应付全球化的市场活动中.有两个管理将起到关键的作用. 第一个是战略管理 ,第二个管理是项目管理. 战略管理立足于企业的长远和宏观,它考虑的是一个企业核心的竞争力问题, 而项目管理是实现

小酌重构系列[19]——分解大括号

概述 if else, for, while等是程序中最常用的语句,这些语句有一个共同点——它们的逻辑都封装在一对“{}”包围的代码块中.在实现复杂的业务逻辑时,会较多地用到这些语句,可能会形成多层的代码嵌套.代码的嵌套层数越大,代码的缩进层次就越深,这将会降低代码的可读性.如下图所示,如果我们想理解绿色if代码块的逻辑,需要先了解前3个代码块是如何工作的. N层嵌套的代码不仅可读性差,也难以维护.当需要变更某一层的代码时,因前后层次的逻辑制约,很容易改出有问题的代码.本文要讲的“分解大括号”策

Eclipse 中的重构功能

Eclipse 中的重构功能使其成为了一个现代的 Java 集成开发环境 (IDE),而不再是一个普通的文本编辑器.使用重构,您可以轻松更改您的代码,而不必担心对别处造成破坏.有了重构,您可以只关注于所编写代码的功能, 而不必分心去考虑代码的外观如何,因为之后您可以使用重构工具来快捷地将代码变成整洁而高度模块化的代码.本文将向您介绍如何使用 Eclipse 中的一些功能强大的重构函数. 重构类型 重命名 Rename 应该是 Eclipse 中重常用的重构.利用这个重构,可以对变量.类.方法.包