如果说做项目不需要计划,恐怕没人会认同。是否每个项目计划都起到了作用呢?却不尽然。知道要做计划,但不知道为什么做计划,如何做计划的还是大有人在。所以很多计划沦为依样画葫芦,成了摆设。

IT项目计划的用意其实非常明确。因为我们无法事先知道系统最终会长什么样,和用户想象当中的是否一致,和用户的需求是否匹配,我们就需要通过一个计划,从需求,到设计,到测试最后做出来。每前进一步,都要保证不再返工回前一个阶段。如果一个计划不能起到应有的作用,项目都会在原地逗圈子。而这点绝不是靠某个天才的系统就能解决的。因为一个IT系统在完成之前,没人知道它到底长什么样,大家就不得不借助一些想象。即便有一些原型或者样板,也只是窥一斑而想象全貌。而群众的想象力是无限的。

其实乔布斯给人们的苹果,并不是人们想象中想要的东西,也不是超出你想象的东西。他给的是一个载体,一个窗口。通过它找到各自想象的东西。从而满足了人们的多样性需求。IT系统里也存在这样的系统,即工具层面的东西,随便你怎么用,但不要提要求。对于面向特定需求的系统,我们所做的就是先找到一个大体适用的方向,然后一起奔着这个方向走,且要不逗圈子或少逗圈子。

曾经遇到一个项目,每次项目回顾会上,都有一堆问题。很多问题都说不清楚需要花多少时间解决。还有一些问题,有了解决方案,也有了实施计划。但是,每每问起对整个项目进展有何影响时,项目经理都信心满满地说“没影响”。一次两次也就算了,后来明明某个任务推迟的不像话了,怎么还说不影响项目上线呢?让项目经理把里程碑计划展示一下,这才发现,这些有问题的任务都不和里程碑节点相关(所谓不在关键路径上),以至于都推迟到后一阶段,后后阶段了,还是不用调整里程碑计划。

---那确实需要推到上线时间点以后的问题呢?有这种事情吗?

---有!

---那如何不影响项目上线?

---放到上线后完善阶段了

做了十多年IT项目的我,一时间没听懂,上线后完善是个什么玩意。 只见过上线后支持,哪里又出来个上线后完善呢? 

后来才明白,这个项目计划,除了里程碑时间节点不变,其他都在变。凡是不能按时间完成的任务,都推迟、推迟,等推倒上线节点也兜不住了,就上线后再去完善了。

听懂之后,真有种想骂人的冲动。这是做项目吗?这不就是脚踩西瓜皮吗? 整个一个不拿里程碑(milestone) 当石头。当它不存在,透明的,一概穿越。 最后完全是以任务节点构成的网络结构图在管项目进度,而没有了项目阶段的概念。

也许是为了心里安慰,因为有任务被推迟,项目经理又把能早安排的事情就提前安排了做。问题是,很多事情如果不是在里程碑节点上有个清楚的交代,那些提早做的事情完全有可能返工重做。比如开发还没结束,就安排一部分用户做试运行(pilot)。 如果开发完成后,有些地方又调整过,那么pilot小股部队就被牺牲掉了,成pioneer先驱了。 

至于那些所谓上线后完善的事情更是后患无穷。等到项目都剪彩、放鞭炮庆祝成功上线了,谁还会管完善不完善的事情呢。比这更糟的结果是,这“完善”最后成了没完没了的终生事业。那也就不叫项目了。

其实,项目里程碑节点就意味着质量门。在某些情况下确实会让步放行。但让步的时间和内容都是有底线。这个底线就是,让步放行的东西我是可以不要的。到总体验收的时候,确定无法完善了,也就认了。没有这个共识,就不可以让步放行。

IT项目其实就是从粗到细的设计,从细到粗执行。制定计划时,先做里程碑计划,明确大阶段目标。而明细计划只要做到当前阶段,所谓的“渐进明细”。不要急着把最后一天做什么都想好。但一定要从第一天就知道最后一个阶段的目标。

等到计划执行起来则从细到粗。在最细节操作层面的事情,需要反馈到最上层的里程碑计划中,以确定里程碑是否需要调整。在上文的案例中,常常是某件具体的事情都有计划了,比如项目上线时的数据迁移(通常是指未完成的业务操作,例如未关闭的采购订单等)计划。但这是一个个孤立的任务计划,和里程碑计划的关系完全忽略。而作为一个项目,因为其独特性,非常有必要把网络化的任务关系分派到各个大阶段上,然后在里程碑节点上进行“前进还是后退”的评估。里程碑是项目进程中真正的基石,打下桩,就可以继续向前,不再回头看。

别不拿里程碑当石头---------IT项目管理之项目计划(转)的更多相关文章

  1. trac项目管理平台

    本文来自百科,由于是非Python开发者,所以仅为了拓宽知识面 1软件介绍 Trac是一个为软件开发项目需要而集成了Wiki和问题跟踪管理系统的应用平台,是一个开源软件应用.Trac以简单的方式建立了 ...

  2. 个人博客 week1

    1:看完教材后不懂的几个问题: (1):团队合作中每个人分工而行,如何保证比较完善的各人之间的信息共享? (2):敏捷开发如何保证开发的效率?即在进行大项目的开发时敏捷开发看上去会很混乱. (3):黑 ...

  3. 【SE】Week1 : 个人博客作业

    快速看完整部教材,列出你不懂的 5 - 10 个问题,发布在你的个人博客上. 1)针对书中提到的NABCD模型中的N,如何发掘市场不明确的潜在用户需求? 2)PM是否负责团队职责的分配以及工程模块的设 ...

  4. GODOT 3.0 开发快照版本 ALPHA1 释出

    经过将近一年的开发后,master 分支(即未来的Godot 3.0)所有功能特性接近完成,可以在Godot社区里进行更广泛的测试了.因此我们释出了第一个Alpha快照版本,供老用户体验.报告Bug. ...

  5. week1:个人博客作业

    1.软件工程课程的希望和目标 老师步置的任务完整的做完,每一步都是自己做的,明白自己做的每一步,和为什么这样做. 期末考试最后为95分以上,最好是100. 每周学习这门课时间 每周2节课(90分钟)+ ...

  6. PMP知识领域

    · 十大知识领域 整合-项目整合管理 识别.定义.组合.统一和协调个项目管理过程组的各种过程和活动而展开的活动与过程. 整合:统一.合并.沟通和简历联系:贯穿项目始终 七个过程组 一.制定项目章程(启 ...

  7. 【BUAA 软工博客作业】个人博客作业

    项目 内容 课程:2020春季软件工程课程博客作业(罗杰,任健) 博客园班级链接 作业:热身作业,阅读并撰写博客 作业要求 课程目标 学习大规模软件开发的技巧与方法,锻炼开发能力 作业目标 阅读教材, ...

  8. TFS使用指南

    上一篇文章已经简略介绍过TFS的安装与管理,本篇文章主要描述一下我个人在工作过程中使用TFS的一些指南与建议.本章内容预览: 1.  项目计划与跟踪 经常有很多朋友在日常聊天中抱怨做计划很无畏,因为计 ...

  9. 聊聊Unity项目管理的那些事:Git-flow和Unity

    0x00 前言 目前所在的团队实行敏捷开发已经有了一段时间了.敏捷开发中重要的一个话题便是如何对项目进行恰当的版本管理.项目从最初使用svn到之后的Git One Track策略再到现在的GitFlo ...

随机推荐

  1. C++学习28 重载>>和<<(输入输出运算符)

    在C++中,系统已经对左移运算符“<<”和右移运算符“>>”分别进行了重载,使其能够用于输入输出,但是输入输出的处理对象只能是系统内建的数据类型.系统重载这两个运算符是以系统类 ...

  2. Maven pom.xml 配置详解

    http://niuzhenxin.iteye.com/blog/2042102 http://blog.csdn.net/u012562943/article/details/51690744 po ...

  3. Python之几个技巧特点

    今天偶然看到一篇文章<你可能不知道的30个Python语言的提点技巧>,虽然做python有几年了,但中间还是好多不知道或没想到,特在这里做下摘抄. 原文地址: http://soft.c ...

  4. [SQL]SQL删除数据的各种方式总结

    SQL删除数据的各种方式总结 一.使用DELETE从表中删除目标行.记录每次删除操作.如: USE pubs DELETE FROM authors WHERE au_lname = 'McBadde ...

  5. (medium)LeetCode 229.Majority Element II

    Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorit ...

  6. java自定义注解注解方法、类、属性等等【转】

    http://anole1982.iteye.com/blog/1450421 http://www.open-open.com/doc/view/51fe76de67214563b20b385320 ...

  7. OC基础(20)

    Protocol基本概念 Protocol注意事项 Protocol类型限制 代理设计模式 *:first-child { margin-top: 0 !important; } body > ...

  8. 出现win8.1蓝屏重启故障该如何解决?

    出现win8.1蓝屏重启故障该如何解决?电脑出现win8.1蓝屏重启故障,系统提示“你的电脑遇到问题,需要重新启动,我们只收集某些错误信息,然后为你重新启动.”怎么解决?本教程为你提供了win8.1蓝 ...

  9. 在java 中,数组与 List<T> 类型的相互转换

    在java中,数组与List<T> 之前进行互相转换,转换方法可总结为以下几种: 一. 将 数组转换成List<T> 1. 使用 Collections 的addAll 方法 ...

  10. 简单JS实现对表的行的增删

    这段代码非常的简单,仅仅作为自己的一个小小的记录! ok,先上一个简单的图例,效果如下(注意:这只是一个简单的例子,不过可以根据这个简单的例子,变化出更为复杂的效果)! 代码也非常的简单,如下所示(注 ...