【逼疯程序员系列】老板让我做一份需求分析

【1】
大狗是一名程序员,非985院校毕业,也没有在996企业上班。
被互联网行业的高薪所吸引,
毕业之后毅然决然的投入到了某培训机构的怀抱(手动滑稽)。
培训出来后,找了一家很小的软件公司。
每天穿着格子衬衫,休闲裤,板鞋。
早晨上班习惯接一杯茶水,然后等待开早会。
一天的工作就是敲敲代码,改改bug。
对,就是这么普通,就好像是我们自己,以及身边无数的小伙伴。

【2】
这一天老板把大狗叫到办公室里,告诉大狗两件事情。一是让大狗接替原本离职的项目经理,担任让大狗新的项目经理一职。第二件事呢,就是目前急需做一份功能需求说明。
大狗一脸懵逼的说:老板,我只是个程序员啊
老板:我知道啊,但你现在已经是你们项目的PM,我看网上都说需求说明要PM来做。
大狗:那个应该是产品经理的PM(product Manager)吧
老板:那你让团队里面的产品经理做一下,做好交给我
大狗:我们团队没有产品经理
老板:为什么没有产品经理?
大狗(小声哔哔):因为老板你上次说,产品经理没啥用,就不用招了
老板:……,你的意思是怪我咯?
大狗:那肯定不能够啊
老板:这样吧,我看网上说了,人人都是产品经理。以后你们团队的产品经理就是你了。
大狗:要不咱再商量一下?
老板:商量这个月的工资要不要发?
大狗:老板放心,我一定能做好!

【3】
大狗回到工位,首先百度了一下,到底两个PM之间有什么区别
首先,是产品经理的岗位职责:

  1. 负责产品线的产品规划、设计和产品生命周期管理,从实际客户需求和项目场景中抽象产品需求和设计;
  2. 基于用户体验设计理念,结合用户需求和产品技术架构,完成产品的概念设计和原型展示;
  3. 负责与研发、设计、测试、销售等部门沟通,确保各个部门对产品充分的理解。

其次,是项目经理的岗位职责:

  1. 参与产品开发需求沟通及讨论,根据产品需求确定项目迭代排期,给出计划;
  2. 负责制定项目管理流程及制度体系,监督执行,并跟进项目,控制流程、协调项目所涉及的各方及各成员;
  3. 负责制定详细项目管理计划(包含进度、资源、沟通、质量和风险管理)、跟踪管理项目进展达到预期目标。

大狗看的是一头雾水,迫不得已只能去找自己的师傅,资深程序员老猫请教。
大狗:猫哥,猫哥,不要潜水了,快给我讲讲需求分析怎么做吧
大狗:猫哥,猫哥?
大狗:【微信红包】猫哥,救命啊!

系统通知:你的红包已经被老猫领取

大狗:……
老猫:……
老猫:大狗在呢啊,刚准备给你回话,你就发了红包,嘿嘿
大狗:猫哥,你快别说了,我都懂
大狗:猫哥,老板让我做需求分析说明,这个到底要怎么做啊
老猫:恭喜你,升职了啊
大狗;猫哥你咋知道的
老猫:在大中型企业内部,需求分析、原型设计、需求文档的撰写都是产品经理的职责。但是按照你们公司的规模来讲,这份工作可能会落到项目经理头上,所以你小子要写需求分析说明,肯定是当了项目经理嘛
大狗:猫哥威武,老猫哥,闲话不扯,这个需求分析到底要怎么做啊。
老猫:首先,你要明确一下,在这个事情中,大家每个人都在想些什么。

【4】
老猫:我给你看一张图,你应该能明白需求阶段我们需要做的事情。
【逼疯程序员系列】老板让我做一份需求分析
大狗:这张图说明的意思就是客户提出的需求,往往是笼统的,只有结果的最终目标,而产品设计阶段的主要目的,就是将客户的目标转换成明确的客户需求,交给开发小哥进行开发。
老猫:满分!有一点说明的是,很多程序员出身的项目经理在与客户沟通的过程中,往往过于注重技术的讲解,导致自己小嘴叭叭的说了一堆,客户还一头雾水摸不着头脑。
大狗:这就是因为没有转换成产品思维,没有用客户能够理解的形式将客户目标是如何实现的过程讲给客户听。
老猫:(o゜▽゜)o☆[BINGO!]
大狗:所以我现在要做的第一件事,并不是写什么文档,而是去听客户怎么说?
老猫:恭喜你,答对啦。

Tips:老板的本质和客户是一样的,基本上都只提出了最终目标,如何去实现都要靠自己。

【5】

大狗联系到了客户兔小姐,双方约定好明天下午见面详聊。

Tips:见面三分情,一定不要觉得麻烦就通过电话或者邮件等方式沟通。再麻烦的客户,当你本人站在他面前的时候,情况也会好很多

大狗:兔小姐你好,我想和您聊聊这次的需求。
兔小姐:好的,我们就是想做一个客户能够查询项目进度的功能
大狗:还有其他的要求吗
兔小姐:没有了,很简单吧
大狗:谢谢你
兔小姐:不客气~

【6】
大狗兴高采烈的回到公司,迫不及待的和老猫分享需求调研的结果
大狗:猫哥,客户想做一个查询项目进度的功能
猫哥:需求都调研清楚了吗
大狗:清楚啦,✿✿ヽ(°▽°)ノ✿,很简单,一个页面搞定
老猫:那这个功能具体的使用过程是什么样的?
大狗:……,这个,好像是说客户就是进去查询一下,显示结果就可以了
老猫:那么多项目,项目信息怎么来的,通过什么条件查询呢?
大狗:……,不知道
老猫:你这是典型的程序员思维啊,客户说什么就是什么,隐含的信息都没有获取到。
大狗:那我应该怎么和客户沟通这个问题呢?
老猫:很简单,模拟场景和用户使用就可以了。
大狗:谢谢猫哥,我再去沟通一下

【7】

大狗:兔小姐,打扰一下。我想问一下,这个功能还有什么其他要注意的地方呢?
兔小姐:没有了啊,上次不是说的很清楚吗,就是一个查询功能
大狗一筹莫展,突然想起了老猫之前提到的模拟场景
大狗:兔小姐,咱们假设这个功能已经做好了,现在我们两个人模拟一下使用时候的场景吧
兔小姐:这个倒是新奇,let‘s try
大狗:假设我是客户,我打开电脑上这一个功能,默认应该显示什么呢
兔小姐:默认应该显示最新的项目信息
大狗:我可以通过条件查询我想要的项目信息吗
兔小姐:可以啊,我们的信息中包括了客户的项目名称,地址以及合同签订的日期,这些都可以查询
大狗:那这些信息是从哪里来的呢?
兔小姐:我们有行政人员每天会把最新的项目信息导入到系统中
兔小姐:对了,项目信息导入后,客户应该能够收到通知吧?
大狗:是可以收到通知的,这个通知是需要打开电脑登陆系统后查看
兔小姐:那这样太不方便了,手机上能收到通知吗
大狗:可以啊,我们可以根据客户的手机号,发送短信
兔小姐:那太好了。
大狗:客户查看了项目进度后他们会怎么处理这个信息呢
兔小姐:应该是把各个项目的进度,汇总到一张excel表格中,然后统计不同进度的项目都有哪些。
大狗:我们是不是可以给客户提供一个导出功能,这样就不需要整理电子表格了
兔小姐:最好再有一个统计功能,能够将不同进度的项目分类统计
大狗:这个可以有
兔小姐:如果能有个对比就更好了,客户能清楚的了解到项目上周的进度是什么,本周进度情况如何变化了。
大狗:没有问题
兔小姐:如果真的能做成这样,就太方便了。感谢你们
大狗:您客气啦

【8】

大狗回到公司,将兔小姐提出的需求整理如下:

功能名称:项目进度查询模块
功能概述:客户通过该模块,可以查询、导出、统计项目进度信息
使用对象:行政人员、客户
子功能描述:

  • 导入功能:行政人员每周将项目进度信息导入到系统中
  • 查询功能:
    • 客户可以根据项目名称,地址以及合同签订的日期,条件查询项目进度信息;
    • 默认查询结果为最新的项目进度信息
  • 导出功能:客户能按照查询条件,导出项目进度信息
  • 统计功能:客户可以查看项目每周的进度情况分析,与上周的进度进行对比
  • 手机短信提醒功能:当行政人员将项目进度信息导入到系统中后,系统能够根据项目的客户手机号,给客户发送提醒短信。

【9】
大狗将整理好的需求分析发给老猫,准备让老猫把把关再拿给老板说
大狗:猫哥,你看一下,我的需求分析写的怎么样
老猫:第一次写成这样,已经不错啦,值得表扬
大狗:谢谢猫哥
老猫:不过
大狗:……,猫哥,你别大喘气好不好
老猫:人上岁数了,打字慢,要理解一下
大狗:好吧,你接着说
老猫:有两个问题要注意一下
老猫:第一,你本身作为项目经理,在拿给老板看之前,心里一定要有个谱,这个需求是否可以实现
大狗:没问题的啦,毛毛雨
老猫:第二,如果想要一次性汇报成功,你最起码要评估一个初步的项目周期和项目预算
大狗:老板让我做需求分析,为什么还要做项目周期和项目预算啊
老猫:老板的目的是做功能吗?
大狗:难道不是吗?
老猫:当然不是,老板的目的是为了赚钱,功能再好,周期过长,收不回来钱,老板也不会去做的
大狗:佩服!佩服!猫哥,我这就去完善一下

【10】
大狗将项目技术可行性分析、项目周期和项目预算做好之后,来到了老板办公室。
大狗:老板,你上次让我做的需求分析我做完了
老板:能实现吗?
大狗:我做了技术可行性分析,以我们的技术能力,是可以实现的
老板:工期大概多久
大狗:10个工作日左右
老板:项目预算呢?
大狗:15个人/日
大狗内心窃喜,猫哥说的问题,果然都言中了。猫哥牛逼!

【11】
功能上线后,平稳运行,客户评价也不错。
公司正式任命大狗为《狗不理》项目的项目经理。

弗里德里希·威廉·尼采:
“那些没有消灭你的东西,会使你变得更强壮”