11.3. 项目管理
11.3.1. 组织架构
开发部
产品部
- 产品经理,产品专员
- 平面设计,UI/UE
开发部
开发部
- 软件项目经理
- 开发组长(根据项目并行开发的产品线而定)
- 高级程序员,中级程序员,初级程序员
测试部
测试部
- 软件测试经理
- 测试组长(根据并行测试的项目数量而定)
- 高级测试工程师(自动化测试),中级测试工程师(功能测试),初级测试工程师(功能测试)
运维部
运维部
- 运维经理
- 运维组长(根据服务器数量而定)
- 高级运维工程师(运维工具研发),中级运维工程师(8小时,处理日常运维),初级运维工程师(7*24小计监控)
11.3.1.1. 开发、测试和运维三个部门的关系
- 开发,测试,运维不是三个独立部门,他们相互紧密联系,但又相互制约
- 开发只负责写程序,将运行无误的程序提交至版本库中
- 开发不能私自将程序交给运维部署,也不能将编译好的程序给测试人员
- 测试部只能从版本库提取代码,然后编译,打包,运行,测试
- 不允许测试部将代码交给运维部部署
- 避免代码没有经过版本库流入生产环境,造成线下与线上代码不一致
- 运维部负责部署应用程序,配置管理,只接受测试部确认无误的版本,部署代码只能从版本库中获取
11.3.1.2. 权限角色
文档角色:产品,设计
报告角色:测试
开发角色:开发
运维角色:运维
11.3.2. 项目计划
我常常把项目开发计划比做列车时刻表,每一个站对应一个项目节点即里程碑。
列车时刻表的概念来自早年我参与的一个英国项目,我们使用 TRAC 管理项目,这是一个古老的项目管理软件,他是很多现代项目管理软件的雏形,很多思想沿用至今,甚至无法超越它,由于他是 Python 开发,框架古老,后期无人维护更新跟不上时代节奏。 另一个项目模仿它90%的功能叫 Redmine,Redmine 红极一时,但是仍然没有统一江湖。直到 Github/Gitlab 出现,一站式解决了软件项目管理中遇到的各种刚需问题,TRAC,Redmine,Confluence,Bugzilla,Jira, Mantis, BugFree, BugZero…… 慢慢淡出人们视野。
在 TRAC 中,任务叫做 Ticker 翻译成中文就是“票”,项目是沿着 Roadmap 走,走过的路叫时间线 Timeline, 里程碑又形象的比做站点,每个 Milestone 里面是一组 Ticker。每次升级就如同买票上车,火车不等人,同理项目也按照自己的 Roadmap 运行,错过只能等下一班。
项目经理会在即时通信软件中,通知发车时间,需要升级同事就会将自己上手的Ticker代码合并主干,然后等待发车。
[ Roadmap ] ---------------. ----\ \ Timeline -----o-----o-----o-----o-----o-----o-----> ----------/ / ---------------------
火车偶尔也会出现晚点,取消班次,临时停车或不停靠直接开往下一站的情况。项目也是如此:
晚点就是项目延期,取表班次就是停止本次里程碑的上线计划,临时停靠即热修复和紧急上线,不停靠就是跳过本次里程碑,下一个里程碑一次性解决。
我们常常会在即时通信软件中发布发车时间和询问发车时间。
项目计划应该是像列车时刻表一样,一旦你定好,就不能随意修改,必须按照设定的里程碑有条不紊的推进。
我们发现很多国内项目是被任务牵着做,即没有项目路线图,走到那里算那里,觉得差不多了就上线,相当随意。一旦出现交叉,冲突,就会手忙脚乱,回撤更是家常便饭。
11.3.3. 工作流
项目管理需要设计工作流
你会发现 Gitlab 并没有提供工作流的功能?为什么?你是否想过?不仅Gitlab 没有 ,微软的 Microsoft Project 也没有,为什么 Microsoft Office 不提供这种功能?
谈谈我的一段职业生涯,大约在2000年我来到深圳,第一份工就是OA(办公自动化)系统开发,当时有很多公司开发类似产品,也包括金山软件,用友等等。20年过去了,OA没有一个标准,也没有一个成功的产品,OA似乎成为企业数字化转型不上的工具之一,上了之后又发现这东西根本没法使用。
OA 没有成为主流的原因,死结就是工作流,每个公司都有自己的流程,无法统一标准,即使是管理学诞生的西方国家,也没有统一的流程,流程是随着市场和环境不断变化的,没有任何流程能始终延续。经历了德鲁克时代的企业到目前为止保留下来的流程也只有部分行政审批流程。
这就是微软不碰这块,IBM也做,Oracle 也不做的原因。虽然技术上已经又成熟的工作流引擎,图形化配置,使用过的人都表示巨难用,对于非技术的行政人员几乎都放弃了。
但凡设计流程,设计者都会表现自己,最终设计的出的流程无比复杂,看似流程堪称完美,执行起来不是内耗就是受阻。几乎都是做加法思维,能做减法思维的人少之又少。
工作流设计原则
- 遵循减法原则而不是加法原则,参与人越少越好,节点越少越好。
- 尽量线性,从一端流向另一段,中间尽量不出现分叉。
- 尽可能不出现逻辑判断分叉,例如 A审批决定下一步是流向B还是C
- 避免循环,依赖关系避免循环,即流程后退。
目的是让工作流可操作,易操作,能冗余。
下面这个流程有问题吗?
开发人员提测 -> 开发组长审批 -> 技术部门审批 -> 测试部门审批 -> 测试组长审批 -> 分配测试人员
稍具规模的企业不都是这样做的吗?
开发人员提测 | 分配测试人员 -------------------------------------------------- 开发组长审批 | 测试组长审批 -------------------------------------------------- 技术部门审批 | 测试部门审批
矩阵转换一下,看的更清晰,工作流从一段流向另一段,经历两个部门,六个节点。理论上审批超过三层就要控制,超过三层就会影响进度。为什么会出现这种情况?
我做过分析,国内的管理层大可分为两类,一类是着重考察项目过程本身,一类是主要考察项目的参与者和结果,前者着重于时间管理,后者倾向于绩效考核。 [2]
第一类管理者,很清楚项目的 Roadmap,所以根本无需做,技术部门审批到测试部门审批这个审批过程,这些工作都是在 Roadmap 会议定定好的,按时发车即可。
第二类管理者,通常是学管理出身,运用管理学工具管理项目,他无法参与项目过程,只能关注时间点和进度,不断催促,他