做过技术,你就是懂技术的产品经理吗?
作为什么都需要会一点、懂一点的产品经理而言,技术也是产品经理必懂的一门知识。掌握了技术技能后,产品经理能够对产品的框架进行更加全面、细化的规划,为后面的产品工作打好基础。
做过技术就是懂技术的产品经理吗?如果是这样的话,岂不是人人都是产品经理?
近日和某大佬聊到工作相关的话题,结合刚刚结束的高考,讨论了大学应该读什么专业比较好。对比来对比去,发现像产品经理、产品运营这块,大学里好像没有专门的课程。
于是乎又聊到自己身边的一些产品经理,我发现了一个问题:
很多产品经理都是开发到了一定的年限转来的,所以很多时候会突出自己是【懂技术的产品经理】。但是实际工作中,他并没有利用自己的技术背景为公司做太多事情,而仅仅是画画原型之类的。
那么【懂技术的产品经理】应该是怎么样的呢?
实际上,一个懂技术的产品经理,说是产品的架构师也不为过。
因为在技术方面,你得懂这些内容:抓包、反编译、数据库、HOOK技术、服务器相关、客户端相关等………..
这些技术你不用很精,因为你不用去写代码,但是你必须得懂,得知道技术怎么去做才最好。
关于竞品分析:
在公司做某一款产品的时候,PM通常会将竞品的所有功能以PRD的方式去呈现,然后去调查用户、收集行情等。
当然,这么做是没有错的,但是在设计整个框架的时候,这些完全不够。很多产品之所以失败,就是因为前期框架没搭好,以至于后期的需求,还有修复BUG等,是一件非常痛苦的事。
下面,我将举例进行说明:
需求一:做一个视频点播的APP
相关竞品有爱奇艺、优酷。
首先,技术方面的竞品分析是必须做的,要理清楚竞品是怎么实现这些功能的。
所以我们必须懂【抓包】,而且得会抓,包括使用工具下断点、过证书验证(很多APP有HTTPS验证)、修改返回值看客户端的异常处理等。
抓包的工具我就不说了,也可以参照我在吾爱破解论坛发布的原创技术贴【Fiddler为所欲为】系列。
直接开始,通过抓包可以得知:
爱奇艺接口:cache.video.iqiyi.com/
如:
优酷接口:ups.youku.com
如:
通过接口,可以得知以下信息:
1. 爱奇艺是将一部视频切割成了若干个小的视频,而每个小视频下,都有各自的接口。客户端每次播放会去请求该接口下的小视频的接口,每个视频时间在5分钟以内,格式为f4v。
2. 优酷一部电影只有一个接口,该视频从接口看没有被切割(暂不考虑m3u8是ts的切割,仅从接口来看),格式为m3u8。
那么问题来了——面对同一个需求,为什么优酷和爱奇艺的实现方式会有不同,它们的优缺点分别是什么。而这就是【懂技术的产品经理】应该去做的事情了。
我的看法:
优酷:由于m3u8一直观看,得一直访问该视频的ts,因此,当观看的人数多了,会造成服务器压力大,服务器并发高的话费用就会很大。
通过域名暂无法得知优酷是将文件保存在自己的服务器下还是第三方服务器(如阿里云)。但是会减少很多CDN的成本,因为用户不可能每个人都从头看到尾,哪怕是跳过片头片尾,也是解决了非常多的CDN。
爱奇艺:类似于自己做了个m3u8的逻辑出来,每段视频都有自己的地址。m3u8是看到哪下载哪,但是爱奇艺的逻辑是需要下载到指定的片段,因此对CDN的成本会提高很多,每个视频下载一次,对服务器的压力会减少很多。
从用户体验来讲的话:
当用户网络畅通的情况下,两者基本无区别。而当用户网络不佳的情况下,体验就有很大的区别。
优酷:缓冲时间短,但是会放一小段就卡一会。
爱奇艺:缓冲时间较长,但是画面出来过后,后续缓冲的情况小(因为一段视频在5分钟左右,播放期间会去缓冲下一段视频)。
技术成本上来看优酷会更简单,有现成的。
那么如果我们也要做视频点播功能,应该采取优酷还是爱奇艺呢?这就得根据公司实际情况来看了。
需求二:APP的开屏广告,可以设置在某个时间段显示图片A,另一个时间段显示图片B
这个需求是不是很简单?可以用这种方式来实现:每次打开APP的时候请求一个接口,客户端根据返回的结果来看。
然而身为一个【懂产品的产品经理】,绝对不能这样做。你必须知道,实现某个功能,通常来说有两种方式:
- 接口
- 配置文件(这种方式很多技术还有很多人不知道……)
接口就不用解释了,配置文件一般是指放在自己或者第三方的的服务器上,客户端下载指定的文件,从文件进行读取,然后APP生效。
这种方式适用于APP大多数功能,包括:
- 定时的功能
- 某些一直不变的内容,如APP的关于我们。客户端只用下载好了用作本地缓存即可。
那么什么时候用接口,什么时候用配置文件呢?
通常来讲APP的量级大,就用配置文件的方式。因为通常第三方服务器,如阿里云,服务器比较能承受高并发。而接口形式适合用户量级小的APP。
同时,配置文件会产生CDN的费用,接口却不会产生。不过配置文件有个风险——如果用户下载文件失败,会导致一定的结果;而接口却不会。
所以数据的重要性也是决策用哪个技术的。
另外,如果使用配置文件,客户端和服务器端必须懂HTTP协议的HEAD方法,不是HEAD头,而是就像POST、GET一样的方法,避免重复产生CDN成本。
需求三:在APP的部分页面弹广告A,部分页面不允许弹广告
通常情况下是这样做的:服务器告知客户端哪些页面应该弹广告,哪些页面不能弹广告,客户端拿到广告根据相应的规则来。
当然,这样设计本身是没错,但是拓展性很差,万一哪天需求改成这样:部分页面弹广告A,部分页面弹广告B,A和B不能同时显示。
需求改成这样是不是意味着客户端得进行版本迭代了?否则没办法立即实现。
其实这个需求是非常简单的——当PM在设计后台的时候,像上述需求,只用告知哪个页面要显示,然后后台做一下限制就OK了。也就是说可以理解为一个简单的概念——显示广告的需求。这样的话技术也简单,操作起来也简单。
需求四:客户端和服务器都能实现某个需求,那么应该由谁来做?
很多PM或者技术在考虑这个问题的时候,会根据谁容易实现,谁比较有空,就决定由谁来做。
但实际上并不能这样,身为PM,你得考虑到各种风险。
比如由服务器来做,那么服务器的压力、成本都在你的考虑范围。并且它还有一个缺点——在用户网络不畅通的情况下,这个功能就属于摆设了。
放在客户端来做,客户端的兼容性和稳定性也是你的考虑范围。做了这个功能,会不会导致安装包体积增大,从而增加CDN的成本,这些各方面的因素。
结语
一个【懂技术的产品经理】是一个非常难的,也是非常优秀的产品经理。一个产品经理真正做到了懂技术,将会对用户体验和公司的运营成本进行极大的改善。
身为懂技术的产品经理,除了PM必备工具以及编程的思想以外,你得学会并精通各种工具的使用,例如Fiddler、xposed框架下的工具、存储重定向、MT管理器、MyAndroidTools等。
其次是一些常见的安卓技术:热更新、插件化开发、增量更新等(版本迭代必须了解的技术,只有了解这些,才知道哪些需求可以立马做,哪些需要版本迭代。)
本文由 @狂暴补师 原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自Unsplash,基于CC0协议
还未公司节省了架构师的钱
一名并不想懂技术的产品前来点赞
对了,楼主还在找坑。
坐标哪里
成都