软件开发和产品经理是怎么回事
过年的时候,经常有七大姑八大茄子们问道,你的工作是做什么的?电视上天天报道的黑客什么的,你们在外面可别干什么违法的事啊。每到这时候,我 都想直接说,我就是一个修电脑的,可是真要这么说了,七大姑八大茄子们又要带着去各家转,一边转还要一边修电脑,说不定还要手机下载电影小说歌曲,对了, 还要贴膜。
为了能够把软件开发这回事说得更清楚,正好是周末,就花时间把内容写一写,让七大姑八大茄子们也能知道什么是软件开发,我们这伙人每天都在做些什么事。
首先,说一下什么叫软件。
软件,就是一切支撑电子设备的灵魂。你使用的电脑安装了 Windows 操作系统,那么 Windows 就是一个软件,你手机上安装了一个微信,那么微信就是软件,你去购买火车票,登录 12306 网站,那么 12306 就是一个软件,甚至你无聊了,想用陌陌找几个小伙伴,或者打开电驴在精神层次上与仓老师做一次沟通,那么这些都是软件,甚至你在百度网盘下载一个盗版电 影,百度网盘也是软件。
那么,为什么要开发软件?
开发软件的目的有很多,不过主要有这么几种目的:
1, 服务于商务运作和业务运营
比如电商,很多的电商为了能够比竞争对手更加了解市场,更高效率地处理货物,大多都会开发自己的进销存,销售管理,退货管理,客户管理或者热点营销软件,当然不依赖于第三方软件(比如淘宝)而独立开发电商软件的也不在少数。
再比如房产租赁,移动公司的业务办理,医院信息系统,当然也包括大量的办公流程审批,这一类的应用也属于商务运作及业务运营类的软件,其本质还是使用软件服务于当前的业务模式。
2, 带来娱乐和放松
这一类的软件太多太多了,游戏,电影,聊天全部属于这一类,无论是手机,平板,手表,汽车当然也包括电脑,这一类的软件数量巨大,质量各异,并且新奇软件层出不穷。
3, 提供阅读,工具和效率相关的软件
个人时间记录,手机微博,手机日历,天气,英汉词典,这一类的软件全部属于第三类,这一类的软件相对功能单一,目标明确,以提高效率为目的。
4, 专业软件
Photoshop 就属于一种典型的专业软件,还有 AutoCAD 也属于这一类,目前市场上有大量的专业软件存在,而今天有很多的软件需要移植到不同的平台,比如手机的 Android 和 iOS。对了,顺便说一句,Android 和 iOS 也是软件。
5, 试验性质的软件
这一类的软件,往往是一家企业或者一个组织,希望尝试一种新的工作模式,或者需要尝试一种新的产品形态,再或者为了进入某一个市场而专门开发的 某一种软件,这种软件往往只有一个模糊的需求,开发人员很难拿到定义好的需求规范,在市场上只有少数人能够接触到这一类的软件。
当然,除此之外还有很多很多软件,是无法随便归类的,比如说一个游戏外挂,再比如一个政府单位需要对某些数据做一些筛选处理,不过总体来说,这些软件也可以称为应用软件,简单地说,能够想像到的各种服务于我们日常生活的产品,都属于软件。
那么软件是怎么来的呢?是那些长得像大猩猩的程序员们用一般人不认识的程序代码一行一行写出来的。可是,具体的流程是什么样的?
首先,需要有一个产品经理站出来,寻找需求并设计产品。先不用管什么是产品经理,反正知道是一个经理,就行了。在做一个产品之前,有两个人是少 不了的,第一个是客户,一个是产品经理。无论是客户出钱做软件,还是自己想做一个服务于别人的软件(比如做一个聊天软件给别人用),那你都需要寻找到客 户,也就是说客户是使用软件的人,如果一个软件没有人用,或者最初就不知道这个软件要给谁用,那就没啥意义了。
OK,现在我们知道产品经理要和客户打交道,从客户那里了解需求,也就是知道客户想要一个什么样的软件。不过最大的问题来了:客户以为自己知道 什么是需求,但其实客户只能提出当前的问题,并不能够了解当前的需求,他们误以为自己面临的问题就是需求,可是真正的需求是解决方案,也就是说产品经理需 要引导客户说出自己面临的问题是什么,并且帮助客户寻找解决方案,然后把这一套的东西转答给程序员。
也就是说,产品经理至少要做到:
- 客户啊,你的问题是啥,我来给你记下
- 客户啊,你的问题如何解决,咱们一起来商议
- 客户啊,看,这是文档,这里面写了我们怎么解决你面临的问题,还有,还有,这东西要花不少钱啊,还有,你看这软件是不是这些人来用?这软件是不是分这么几个模块?
- 客户啊,你的问题和解决方案全部已经交给程序员了,那帮长得像 NBA 里面的詹姆斯的背着双肩包的人会帮你把软件做好的
- 你们这帮大猩猩,做的软件有 bug,来来来,让我告诉你,你的 Bug 在哪
- 客户啊,你看,我天天在你身边,帮你解决问题,现在,你爽了吧?你还要什么软件,你说啊,你说啊。
当然啦,要服务于一个行业,首先需要的是了解这个行业的基础知识。比如要帮淘宝卖家做软件,那至少需要了解淘宝体系内的各种知识;再比如要为一个矿场开发软件,那当然需要了解矿场是如何运作的,这就是做一行,爱一行,干一行,通两行。
那这样软件就做出来了?没有,当然没有,因为程序员拿到这些调研的需求,做出一个简单的开发计划以后,还有很重要的活需要做:精细定义产品。
程序员里面总会出来一个老大,长相大多比较像 23 岁的詹姆斯,基本会长成这样:
他会做出一付冷酷无情的态度说:你描述的需求不完整啊,你看,我们现在把开发分成了这么几个阶段,第一步,我们要做一个用户体系;第二步,我们 要作一个消息系统,当然这个家伙还有可能会说:我们根本不打算做软件,我们喜欢看着编译的过程,就是一片黑色的屏蔽上有绿色的字不断滚动,就像这样:
这时候,产品经理只需要知道,程序员已经进入了某种入定的状态,他们需要的是:你告诉他们,客户想要的一切细节,即使你不知道,你也要告诉程序员:乖,别担心,我去帮你问那伙长得不酷的家伙们。
这时候,产品经理需要去编写一些用户的用例说明,比如像这样:
- 用例开始
- 用户点击登录链接,打开登录界面
- 用户输入自己的用户名和密码,同时输入正确的验证码
- 如果输入正确,则让用户进入自己的个人控制中心,否则跳转回登录页面
- 如果用户连续三次输入了错误的密码,请给出提示“对不起,您的人品已用光”
- 当用户成功登录个人中心后,记录下用户的登录时间和登录 IP 地址
- 用例结束
这些东西,就是程序员的精神鸦片,不用管为什么,只要知道程序员看到这些,就会很激动地主动去写代码了,其他的事,无论是什么,他们都不需要,唯一可能看到的是他们在这个用例下面加上评论:什么玩意,客户根本不需要这样的东西,他们不懂。
当然,对于产品经理,看到这样的评论,你只要回一句:”乖,别怕,我去和他们说“。
只要通过这样的一个简单的流程,大多数软件就是可以做出来的,能否做得好还不好说,可是起码能出来一个可以点来点去的东西,也是可以用眼睛看到 的东西。这就是软件开发的一个缩影,虽然软件开发比你想像得要复杂得多,可是产品经理总需要在这里做很多很多工作,这就是我们要干的活,也是我们的目标: 做世界上最会做软件的团队。