写给程序员看的项目管理入门
写给程序员看的项目管理入门
- 项目管理铁三角
- 定义任务范围
- 任务分解
- 进度计划
- 资源评估
- 任务排期
- 项目执行
- 提测阶段
- 冒烟周期长
- 代码bug
- 开发阶段
- 项目监控
- 项目回顾
- 附录
程序员从拿到一个需求到这个需求上线,除了写代码还有没有其他必须要做的事情?
初出茅庐的程序员
提交代码才是王道,被扯那些虚头八脑的玩意。
我们已经采取敏捷开发模式了,还需要项目管理?
我就开发一个普通的需求,一个星期就能写完代码,需要了解项目管理的知识吗?
计划赶不上变化,还计划个啥,干了再说。
从业三年的程序员
PD要我做个需求排期,就改几行代码的事情,为什么我总是评估时间少了,搞点buffer又被挑战,时间都去哪了?
为什么每天都有那么多杂事骚扰我,就不能让我专心写代码吗?
完蛋了,提测后才发现有个关联系统忘记改。
每到上线就通宵,需求总是无法按期上线,前面都干嘛去了?
关联系统接口总是调不通,有心无力。
项目管理铁三角
中高级软件工程师开始独立承担一些功能点的开发,在没有任何项目管理知识时,通常会成为“五拍”程序员。
- 需求排期:拍脑袋决定(所谓的经验)
- 追问进度:拍胸脯保证(毫无理由的自信)
- 遇到困难:拍桌子赶工(生死看淡,不服就干)
- 上线延期:拍大腿后悔(这个当时怎么就没想到)
- 反复失信:拍屁股走人(不是我不行,是这里的事太难干)
虽然我们日常功能开发并不需要使用完整的项目管理工具,但需求上线流程依然离不开项目管理的本质。一个独立的需求开发任务就是一个微缩版的项目计划,一样会包含项目管理的过程和要素。
项目管理的四个重要的方面,即:范围(需要做什么事)、时间(什么时间做完这些事)、成本(花多少钱做成这些事)、质量(这些事做到什么程度客户才满意)。
定义任务范围
专门立项的项目通常有项目工作说明书(Statement of Work,SOW),定位项目范围。日常开发任务范围通常由产品需求文档(Product Requirements Document,PRD)决定。没有明确的PRD就无法分析需求上线到底要如何实现业务需求,更加无法评估到底有多少工作量。
PRD并不完全等于开发任务,原因:
- PRD是对需求的整体描述,可能某部分功能现有系统已经实现,可能某部分功能不需要通过编码实现,可能某部分功能是在其他系统实现
- PRD只描述了最终上线需要达到的效果,不包括研发中的过程性工作,比如分析,沟通,测试,部署等等。
需求排期评估工作量时,需要对PRD进行分析后再做任务拆解,才能相对准确的评估工期。
任务分解
不管是瀑布式开发模式还是敏捷开发模式,软件开发都包含以下任务,差别只是任务的并行情况和任务的轻重。所以拿到需求以后第一个计划评估时可以直接按以下任务做第一步的任务分解和评估。
- 需求分析
- 详细设计
- 编码开发
- 开发联调
- 功能测试
- 部署上线
新手程序员做需求排期最常犯的一个错误是只评估了编码开发的时间,其他分析、联调时间统统没有预估。导致需求上线投入时间与计划严重偏差。
开发任务是逐步细化和完善的,接到需求后,第一步按软件研发生命周期完成任务拆分,对需求做一个大致的计划安排。在需求分析和详细设计过程中会进一步丰富和完善开发任务。
- 需求分析
需求分析过程中,我们会分析出那些功能点需要开发,那些功能需要关联系统支持,那些功能无法实现。这样我们可以分析出大的开发功能点,评估出详细设计的任务。 - 详细设计
详细设计过程我们给出详细的开发实现方案,从而可以评估编码变更影响点,代码改动量,开发人力需求,关联系统支持。
如果需求分析和详细设计完成质量较高,详细评审后通常开发任务和测试任务就已经非常明确,任务分解告一段落,基本不会产生太大的偏差。
大型软件特别是历史遗留系统,通常会发生只改几行代码,但分析定位要在哪里改代码需要花一两天的情况。这时详细设计就显得非常重要,并且在需求排期时需要预留详细设计的时间,否则经常会出现提测后甚至上线后才发现改漏了,项目基本无法按计划上线。
PS:
如果这个情况在某个项目中是个普遍现象,一般意味着这个项目坑非常的深。
形成这个问题的原因一般如下:
- 架构不合理,没有做到高内聚,低耦合。
- 核心开发人员不足,没有熟悉这一套代码的中高级软件工程师。
- 技术债太重,经手N代程序员,每代程序员都在填别人的坑,然后给后人挖坑。
ԅ(¯﹃¯ԅ)
赶紧找领导要求做新系统吧。写给程序员看的项目管理入门相关推荐
- 写给程序员看的“幻灯片”制作教程
大家好,我叫谢伟,是一名程序员. 如果你比较关注国外开发者大会,你经常可以看到,一些程序员分享一些在线可以查看的"幻灯片",当然这里的幻灯片和微软 Office 旗下的 Power ...
- 写给程序员看的面向对象摄影技巧
每次陪女朋友出去玩的时候,总得拍上那么一堆照片.如上一周,我和 @花仲马 在马来西亚玩耍了一星期,拍了那么近千张照片. 这样一来,我勉勉强强也算是有一些拍摄方面的经验了.在这里,就只好献(shan)丑 ...
- 写给程序员看的《2018 愚人节防忽悠指南》
今天,你中招了吗?
- 写给程序员的管理入门课程 -《格鲁夫给经理人的第一课》
写给程序员的管理入门课程 -<格鲁夫给经理人的第一课> 序 格鲁夫给经理人的第一课 <格鲁夫给经理人的第一课> 最早出版于 2007 年,书原名为<High Output ...
- 手把手写C++服务器(7):给C语言程序员看的C++科普
本系列文章导航: 手把手写C++服务器(0):专栏文章-汇总导航[更新中] 前言:这一篇博客只能算是服务器编程专题的番外篇,在去年的时候,我打算写一个专题,名字就叫做给C语言程序员看的C++科普, ...
- Discuz验证码识别(编码篇)-写给程序员的TensorFlow教程
欢迎大家回到<写给程序员的TensorFlow教程>系列中来,本系列希望能给广大想转型机器学习的程序员带来一些不一样的内容,我们不讲公式,只调方法,不聊文献,只说代码.不求最好,只求有用. ...
- Flask学习 黑马程序员-6节课入门Flask框架web开发视频(中途撤退,寻找py3教程)
文章目录 postman工具 get和post 如何给路由传参 解析 @app.route('')这个叫视图函数 Jinja2模板引擎 动态传参 注释.变量代码块以及控制代码块的使用 注释:ctrl+ ...
- 写给程序员的美术创作指南
引言 独狼游戏开发工作室日益增多,而他们之中也确实有不少成功者.尽管如此,如果这匹独狼恰巧没点美术技能又该如何呢?本文为独立游戏开发者创造.获得美术资源列出了一些选择. 像素美术 仿佛是从上个世纪 8 ...
- PHP笔记——java程序员看懂PHP程序
PHP笔记--java程序员看懂PHP程序 php是一种服务器端脚本语言,类型松散的语言. <?php ?> xml风格 <script language=" ...
最新文章
- 如何在两个目录中删除其中一个目录中同名文件
- centos 升级mysql5.6_centos6.9升级mysql5.1到mysql5.6
- [leetcode]110.平衡二叉树
- ​【v2.x OGE-example 第二节】 实体参数
- Remmarguts' Date(POJ2449+最短路+A*算法)
- git commit -m和git commit -am
- java 全双工服务器_利用Java实现串口全双工通讯_JAVA实例教程_IT部落
- 数据绑定如何在AngularJS中运行?
- Vue引入Froala-Editor富文本编辑器
- 苹果台式电脑怎么使用计算机,MAC电脑连接台式电脑显示器怎么操作
- Linux高级网络开发奇妙之旅
- HTML+CSS实现背景图片铺满页面的方法
- NDN-lite 命名数据网络 -----第二章:对Interest和Data包的处理
- Linux系统命令与Shell编程
- uniapp进行交互反馈
- Android 腾讯位置服务地图简单使用
- 编码时,不要让字母和数字产生混淆,影响开发判断
- Java实现Zip文件的解压和压缩_ZipUtil
- 胶片打印、排版、自助打印(二)
- 【PHP】高端响应式自适应房屋出售建筑设计企业织梦模板
热门文章