这是敏捷开发一千零一问系列的第四篇。(之一,之二,之三,问题总目录)
这个系列的文章太多,除了用于总结性篇章外,请访问“问题总目录”查找感兴趣的具体问题。
初始问题
对于不断更新的需求,导致需求优先级的判断出现了错误,知道项目周期后期才发现,怎么办?
答案
1. (临时方案)确保所有排序均是由PO完成的
常常出现所谓现场客户、由客户出PO、由一个销售当PO的情况,都是应该避免的。
PO一方面要熟悉具体的需求和原始目的(广度与细度的要求),另一方面则应该对产品的商业目标、终极目的了然于胸(高度与深度),才能站在企业立场而非简单的客户价值立场。
从这一方面看,“有无限时间陪着我们的现场客户”和“一个销售”,其细度有余,高度不足,很容易带入歧途;而由“客户出PO”则会被客户牵着鼻子走,客户的想法一变,项目就会变化,也不符合企业的利益。
2. (最终方案)优先级排序应该基于较为稳定的商业计划,要确保有产品总监或项目总监来把控产品或项目方向
一般的产品经理和项目经理排列优先级的依据一般有两个:一个是客户价值方面,一个是开发因素方面(比如对架构的影响、需求间的依赖)。但这些都相对浅薄的理解。
真正决定什么优先的因素,是产品或项目的商业目标,并因此制定版本计划,在版本中体现优先级。
作为产品,每个版本都是为了打败某个竞争对手,取代某个已有产品,获取某类客户的过程。从这个角度看,若商业目标明确了,那么要做什么功能才能达到商业目标,应该也是相对明确的(或者说,只有商业目标变化时,才需要发生重大的变化,不会突然有人一拍脑袋又变了)。
这一点要求产品研发需要产品总监来做好产品的商业计划,并与具体负责的产品经理不断制定和沟通产品版本计划,并进而明确版本中应该实现的功能。
作为项目,看似是为了完成需求规格上面的描述,其实是为了支撑客户的某个业务。这个客户业务,乙方要有人明确是什么,并最好能预见未来的业务。这样除非这个业务的优先级发生变化,项目任务不会发生重大变化。
另外一个要做好的事情则是项目切忌不能客户说什么做什么,或者什么项目都做,而是要想好自己企业的主营业务是什么,有什么可以平台化以进行积累的东西,才能在做大的同时做强,成为某个领域不可替代的供应商。
这一点要求应该按业务领域设立项目总监,对外不断审视领域的投资价值、分析客户群,对内推动核心业务的开发而抑制周边业务的开发。有了这个主心骨,就只有符合实现想好的业务方向的项目才接,自然也就不会发生重大的变化。
项目要想被乙方控制,初期很难做到,甚至说如果这样是找死;但是如果做了很久还处于什么项目都做,客户说什么做什么的状态,则是在等死。
案例
1. 一个军工项目
这个项目发生在某年的10.1阅兵仪式上,但可别就此认为所有需求都与此有关,里边还是掺杂了甲方很多人的想象,面对强势的甲方,这些需求很难拒绝。
不过项目负责人还是很清楚那天这个软件到底会被用来做什么的,所以核心功能被提前4个月完成并经常使用(因此也很少有缺陷);而其他功能被扔在最后零星且“凑合”地实现。在最后期限逼近的时候,所有纯粹的想象都烟消云散,最重要的功能顺利运行。
2. 一个产品
这个数字电视产品研发时,国外已经有两家企业运营一段时间了,因此主要工作就是“抄袭”他们的功能。在抄袭了一段时间后,终于成为国内的佼佼者,但是现在反观走过来的几年,反而冒出一身冷汗,为什么呢?
原来直到10年后的今天,有很多功能仍然没有“被使用”,原因就是国内电视台有自己的业务规矩,比如年龄分级、赛事区域禁播这些功能,在国外是很热门的,但在国内至今也没有运营。这些功能的优先级在国内和国外排,会截然不同,这不是一个开发问题,而是一个客户的业务问题。
如果不是因为当年这个领域的竞争不像现在的互联网行业这么强,加之团队的工作能力极强,结局很可能不是现在的样子。
补充
很多问题的发生,并不局限于要在开发组的范围内找答案,而一定要追究最终的原因(无我)。
很多时候人们只现在在自己范围内找答案的原因,是因为自己可以控制,可以解决。但实际上如鞥这些答案解决问题不彻底,问题就会永远存在。
但如果遇到了别人的答案,则应该遵循劝人、帮人、替人解决问题的方法。有时候在这家企业、这个部门、这个项目上有可能失败,但就像共振一篇中所提到的,如果因此而放弃,则必定失败;不但如此,还会失去在那家企业、那个部门、那个项目的成功准备。
分享到:
相关推荐
这篇文档介绍的是一个幼儿园中班的音乐公开课教案——《一千零一个喷嚏》,这是一次结合故事和节奏乐的教学活动,旨在通过趣味性的故事激发孩子们对音乐节奏的兴趣,培养他们的音乐感知能力、合作意识以及爱护乐器的...
这篇文档是一个针对中班儿童设计的音乐教案,主要教授节奏乐知识,以有趣的故事《一千零一个喷嚏》为载体,让孩子们在游戏中学习音乐节奏。教案的核心知识点包括: 1. **节奏乐教学方法**:传统的节奏乐教学通常...
【标题】"初中语文文摘文苑一千零一面镜子"所蕴含的知识点主要涉及文学欣赏、诗词解析以及情感表达。 【描述】中的内容简洁,直接引用了诗句“一千零一面镜子”,这暗示我们要探讨的是一种文学表现手法和深层含义。...
这篇文档是一个幼儿园中班的音乐教案,名为"一千零一个喷嚏",旨在通过故事与节奏乐的结合,激发孩子们对音乐的兴趣,提高他们的音乐感知能力和团队协作能力。教案主要包含以下几个关键知识点: 1. **节奏乐教学法*...
中班音乐活动教案《一千零一个喷嚏》润新教育.txt
工控安全,也称为工业控制系统安全,涉及保护工业自动化和控制系统免受恶意攻击和安全威胁的影响。近年来,随着技术的发展和工业互联网的应用,工控安全越来越受到重视。本文将介绍工控安全的研究方向、各类工控设备...
【权限维持的理解】 权限维持是黑客在成功入侵目标系统后,为了保持长期控制而不被发现的一种策略。这种控制包括能够持续地访问系统、收集信息、执行任意操作等,只要目标系统未检测到异常,就可以认为权限得以维持...
154、能设置一些代码在我所有的JSP文件之上运行?如果可以,能共享吗? 37 155、对一个JSP页,如果多个客户端同时请求它,同步可能吗? 37 156、在jsp:useBean语法中使用beanName有何好处? 37 157、当我使用<jsp:...
四. Java web部分 85 1、Tomcat的优化经验 85 2、HTTP请求的GET与POST方式的区别 85 3、解释一下什么是servlet; 85 4、说一说Servlet的生命周期? 86 5、Servlet的基本架构 86 6、SERVLET API中forward() 与redirect...
2. 万以内数的读法和写法:学生应该学会正确读写万以内的数,包括整数和带零的数,例如1000应该读作“一千”,1001读作“一千零一”,而2050应该写作“二千零五十”。 3. 万以内加法:学生要掌握不进位加法和进位...
四. Java web部分 85 1、Tomcat的优化经验 85 2、HTTP请求的GET与POST方式的区别 85 3、解释一下什么是servlet; 85 4、说一说Servlet的生命周期? 86 5、Servlet的基本架构 86 6、SERVLET API中forward() 与redirect...
四. Java web部分 85 1、Tomcat的优化经验 85 2、HTTP请求的GET与POST方式的区别 85 3、解释一下什么是servlet; 85 4、说一说Servlet的生命周期? 86 5、Servlet的基本架构 86 6、SERVLET API中forward() 与redirect...
四. Java web部分 85 1、Tomcat的优化经验 85 2、HTTP请求的GET与POST方式的区别 85 3、解释一下什么是servlet; 85 4、说一说Servlet的生命周期? 86 5、Servlet的基本架构 86 6、SERVLET API中forward() 与...
四. Java web部分 93 1、Tomcat的优化经验 93 2、HTTP请求的GET与POST方式的区别 93 3、解释一下什么是servlet; 93 4、说一说Servlet的生命周期? 93 5、Servlet的基本架构 94 6、SERVLET API中forward() 与redirect...
【标题】"java代码-软三47号JSP3" 涉及的主要知识点是Java编程语言在Web开发中的应用,尤其是使用JSP(JavaServer Pages)技术。JSP是一种动态网页技术,允许开发者在HTML页面中嵌入Java代码,以实现服务器端的数据...
四. Java web部分 85 1、Tomcat的优化经验 85 2、HTTP请求的GET与POST方式的区别 85 3、解释一下什么是servlet; 85 4、说一说Servlet的生命周期? 86 5、Servlet的基本架构 86 6、SERVLET API中forward() 与redirect...
”、“一千零一个愿望”这类题目鼓励学生发挥想象力,展现个性和创新思维。 9. **生活观察**:“走出呵护展翅”、“摸一摸猴子屁股”等题目提醒学生关注生活细节,从日常生活中寻找写作素材。 10. **文学引用**:...
84.5. 金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。 109 84.6. 内部类的实现方式? 112 84.7. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节...
9. 金额转换问题:将阿拉伯数字形式的金额转换为中文大写金额,如“1011”转换为“一千零一拾一元整”。这通常需要根据中文数字的规则来设计转换逻辑。 10. Java通信编程与Socket:Java的Socket编程用于实现基于TCP...