产品经理必懂的技术那点事儿
2022-02-09 12:22:21 0 举报
AI智能生成
读书笔记,非技术背景产品经理可读
作者其他创作
大纲/内容
产品思维与技术思维
产品经理为什么要懂技术
产品思维:用户价值、使用场景、商业价值、业务闭环
技术思维:实现方式、技术架构、技术价值、开发成本
两种思维交叉点:需求、设计、功能
产品经理和工程师分别是干什么的
产品经理
发现并定义需求:产品职能属于信息上游,负责发现并定义需求,将用户需求通过具体的产品功能设计呈现为用户可用的产品,包括需求分析、功能定义、原型设计等
权衡业务与市场:需要将老板的战略意图贯穿到产品设计中,需要向工程师传递产品的核心价值,需要讲解设计背后的需求逻辑,在将设计落地为实施的过程中,产品经理扮演着重要的角色
工程师
评估:技术职能属于信息下游,负责从技术实现角度评估产品设计,设计技术方案,最终将产品设计实施落地为用户可用的产品。先理解需求,再衡量其合理性与投入产出比
反馈评估结果:工程师在对产品设计进行评估后,需要将实施层面的技术成本反馈给产品经理,产品经理需要据此灵活调整产品设计
调整优化:在不同的产品阶段,需要持续对技术方案进行调整与优化
产品设计中需要注意的技术边界
工程师的思考方式:工程思维
产品经理的思考方式
入门产品经理:功能思维
功能思维是从软件产品角度出发的思维模式,是从系统功能的角度评判产品的完整性和实用性
“是做功能还是做产品”,其实功能是产品的一种表现形式,功能思维会为了完成一个需求考虑功能体验上的各种可能性,重点都是关注产品功能本身,而忽略了其业务目标和业务价值
高阶产品经理:产品思维
产品思维是一种结合工程思维、功能思维及商业思维的综合思维模式,包括对商业目标的理解、对目标用户及用户使用场景的理解
产品体系由上至下
表现层
视觉表现设计,让产品看起来更友好
框架层
完成我们能看得到的界面设计
结构层
需要基于范围层的内容完成基础信息架构和交互设计
范围层
需要定义清楚在既有战略的基础上做哪些东西来实现战略目标
战略层
决定了业务和产品需要实现什么目标,为谁和什么场景服务
产品经理需要回答的8个问题
目标用户是谁
一个产品的目标用户往往是一个特定的人群,这群人会基于一个共性的需求来使用产品
产品为目标用户解决了什么问题
明确产品解决的核心问题
产品的核心功能
核心功能的选择决定了用户该如何使用产品。
e.g.微信
核心问题是沟通,那核心功能可以是语音、可以是文字,也可以是视频。基于微信原始版本所处的时代和网络环境,选择实时文字短信收发作为核心功能是最合适的选择
产品使用场景
了解场景-可对该场景下如何更好地满足用户需求提供真实的现场感受-利用这种感受指导产品设计-基于真实的使用场景优化产品定位
e.g.阅读类产品,有白天模式和夜晚模式
产品给目标用户带来的价值
如何用一句话介绍产品
与同类产品的定位差异是什么
与同类产品的定位差异化是拉开产品和业务差距的核心
产品的盈利模式是什么
互联网技术与思维
互联网技术发展史
基础技术发展期
PC互联网时代
移动互联网时代
人工智能时代?
互联网产品发展史
本地安装
网站系统
APP
互联网开源社区和技术
GitHub
使用最广泛的服务器操作系统:Linux
网上支付的基础保障协议:OpenSSL
开源数据库管理系统,属于关系型数据库:MySQL
服务器运行软件系统:Apache
开放源代码的基于Java的可扩展开发平台:Eclipse
下个时代的技术主角:AR与VR
互联网产品技术架构
分为两部分,分别是前端和服务端,前端和服务端通过中间网络进行数据传输
移动互联网技术的特点
在移动互联网时代,智能手机成为主要终端入口,移动互联网的技术特点相对于传统互联网阶段具备了移动性、随时性、永远在线的特点,也正是技术的升级,带来了很多产品创新的可能
下一代互联网产品
人工智能
VR
下一代互联网产品经理
产品经理的能力模型不仅包括设计产品的能力,也包括能基于产品定位把产品运营起来的能力
运营能力的获取需要通晓综合门类知识,包括行业知识、市场、财务、法律等
产品经理会从产品结构和功能设计者慢慢向全流程服务设计者转变。从产品定位、用户需求、技术方案、服务流程、市场推广等多个环节实现全流程打通,“全栈产品经理”的时代即将到来
随着人工智能技术的发展,下一代产品经理所面对的产品形态会升级,产品与用户的交互方式会发生变化,从现在用户通过鼠标或者手指的操作升级为语音、行为,甚至是意识操作
产品经理学编程
主流编程语言介绍
C语言
Java
早期的一些互联网应用系统,大多数都是基于Java开发的,很多大型计算机的系统软件都使用Java开发,现在很多机顶盒或者Android软件也是基于Java开发的
基于其跨平台的特性,大到超级计算机小到手机软件,都可以使用Java开发,可以说是一门应用比较广泛的语言
PHP
Web开发领域
是一种开源脚本语言,脚本语言通常以文本形式被保存,只有在调用时进行解释和编译,相对于C语言或者Java语言来说,PHP更轻量化而且更灵活,PHP吸收了C语言和Java的特点,学习成本较低
JavaScript
也是一种脚本开发语言,主要运行在浏览器中,可以为网页增加动态功能。JavaScript也衍生出了很多的应用场景,而且也具备跨平台的特点,可以运行在绝大多数的浏览器下
编程语言中的数据类型
数据类型
数据类型代表编程语言中的最基本规则
“数据”是计算机世界中的基本单元,一张图片是一个数据,一个文字也是一个数据
一个基本的数据单元主要由几部分构成,分别是数据类型、数据名称和数据值
计算机要理解程序的意思,首先就得从数据类型开始,数据类型好比我们说话用的单词,计算机需要理解我们传递了什么信息。在编程语言中也会有不同的语法规则和不同的关键字
表示整数的“整型”
我们通常会在需要计算一些数值时使用到整型,比如需要统计通讯录有多少人时,需要声明一个整型变量来记录通讯录项目总数,而且这个变量是可以持续累加进行计算的
整型是一种数字类型,所有的不带小数点的数字都属于整型,在编程语言中,用关键字int来表示整型
规范的变量取名一般是字母或者下画线开头,中间和结尾可以是字母数字或者下画线,比如“a1”、“_a”、“a1_”都是合法的变量命名
表示文本的“字符型
字符型是一种文本类型,字符型的内容没有规则限制,可以是任意内容
在不同的编程语言中,表示字符型的关键字略有不同。例如在Java语言中,我们使用关键字String表示字符型数据;在C语言中,字符型使用关键字char来表示;在Objective-C语言中用NSString表示字符型数据
如果字符型数据的内容是数字,比如“1024”,并不代表是整数,而就是一个字符型数据。也就是说,字符型的“1024”并不具备数学意义,不能用来做计算
字符型的数据在我们设计产品的过程中其实使用得最多,我们在产品界面上展示的所有信息在程序里都是以字符型的数据类型展示的
表示小数的“浮点型“
在编程语言中,一般使用float或者double标记浮点型数据
表示是非判断的“布尔型
布尔型变量的赋值只能是“true”或者“false”,“true”对应的序号是1,“false”对应的序号是0,一般用来做标记位使用,反映现实世界里的真假判断
一般用关键字“boolean”或者“bool”表示和声明布尔型数据。例如,我们可以声明一个布尔型的变量“boolean a=true”或者“boolean b=false”,变量“a”和“b”的值只能是“true”或者“false”之一
数据类型间的转换
我们在电商产品的购物车中填写购买商品的数量时,填写的是具体的数字,但是程序读取出来的实际上是字符类型,如果需要对购买商品的数量做进一步计算,比如要统计总共买了几件商品,就需要将字符型的数据转换为整型,再做计算
在产品设计中,我们会定义某一个输入项的输入类型是文字还是数字,这是产品层面的定义,比如产品层面会定义购物数量是输入数字,但在程序里面,从这个输入框获取的内容却是字符型的,如果需要对这个值进行数学计算,则需要先将这个字符型的数值转换成整型数据
如果字符型数据不是数字而是其他字符,比如“a”,这时将字符型转换为整型的话,得到的结果是“a”在 ASCII中对应的具体数值,实际上就是字母“a”对应的二进制代码,也就是一串由0和1组成的代码
数据拼接
数据拼接一般是字符型数据间的拼接,拼接后的字符型数据统称为字符串,字符串的内容可以表达任何内容,字符串简单来说就是一串文本
编程语言中的逻辑结构
条件判断“if else“
“if(用户名和密码不为空){ 执行登录操作; }else{ 提示用户相关信息; }”
“if(条件1){ 执行结果1; }else if(条件2){ 执行结果2; }else{ 执行结果3; }”
条件选择“switch case”
循环操作“while/do while”
数据的组织方式:数据结构
数据结构分为数组、栈、队列、堆、树、图等,每种数据结构都代表一种数据集合组织的方式,每种方式都有各自的特点
数组:同一数据类型的集合
我们定义一个整型数组,并且指定这个数组的大小是3,可以写成“int a[3]”,前面的“int”表示数组的数据类型,“a”表示这个数组的名字,也就是之前提到过的变量名,中括号表示这是一个数组,括号里面的3表示这个数组的大小是3,也就是说能存放三个数组元素。完整的写法应该是“int a[3]={1,2,3}”
数组中的元素可以通过下标获取,在编程语言中,数组的下标一般是从0开始,比如要取数组“a”中的第一个整数1的时候,通过“a[0]”的方式就能取到,完整的写法是“int a1=a[0]
栈:汉诺塔结构
先进后出
队列:排队的艺术
先进先出
树:长在树上的数据
树状结构上的元素往往叫作一个节点
每个树状结构都有一个“根节点”,也就是树根,从树根出发可以延伸出“枝干节点”或者叫“兄弟节点”,树状结构末端的节点我们称为“叶子节点”
程序的最小执行单元:函数
函数是完成一项具体任务的独立模块,函数的组成包括输入、输出及函数内部的处理流程
程序与产品功能之间的关系
程序是一系列数据结构和逻辑处理的集合,一个单一的处理流程用最小程序单元表示。将不同的逻辑处理流程组合拼接起来,就构成了一个产品的基本功能
产品经理学数据库
关系型数据库
是一种基于关系模型的数据库,关系模型折射现实世界中的实体关系,将现实世界中各种实体及实体之间的关系通过关系模型表达出来
“人这个实体和性别这个实体之间存在一个关系,一个人只能有一种性别,所以人和性别这两个实体之间的关系是一对一”
“人作为实体与职业这个实体的关系是一对多的,也就是说一个人可以拥有多个职业”
实体A具有三个属性,实体B具有三个属性,它们之间以某种关系关联起来,这种关系可以是一对一的,也可以是一对多或者多对多的
数据库表和表的关系
e.g. 对人这个实体,我们可以建立一个表,表的名字可以取名为“people”,在表中可以存在属性,例如姓名、性别、年龄、职业、爱好等。对于职业我们可以新建另一个表,取名为“profession”,表中的属性可以表示为职业名称
理论上每一个数据库表的属性里面都有一个用来做唯一性标记的id,这里我们使用“peopleId”来唯一标记一个人,即每个人只会在该表中出现一次。对应在职业表“profession”中,我们也使用了一个叫“professionId”的属性名来表示唯一性。在“people”表中有一个表示职业的属性叫“profession”,通过这个属性可以和“profession”表产生关联关系,可以将所有的职业信息全部存储在“profession”表中,然后在“people”表中通过“profession”属性和“profession”表进行关联
数据库字段和字段类型
属性在数据库表中也称为字段。一个数据库表有表名,也有字段名,理论上说,一个数据库表可以有无限个字段,每一个字段名都不重复
在数据库表中,每一个字段也有自己的数据类型,例如在“people”这个表中,用于表示姓名的字段“name”可以定义为字符型,用来表示年龄的字段可以定义为整型。在定义一个数据库表的时候,我们需要定义表名、字段名及字段的数据类型,这样一个完整的数据库表就定义清楚了,我们可以按照定义好的表结构往里存储数据
数据库操作语言(SQL)
SQL(Structured Query Language)即结构化查询语言,是一种用来操作关系型数据库的编程语言,可以理解为对数据库的操作命令
非关系型数据库
在非关系型数据库MongoDB中,我们使用键值对的方式表示和存储数据,键值对就是“key-value”的形式,类似在关系型数据库表中的字段名和该字段名对应的值
在MongoDB中,使用JSON格式的数据进行数据表示和存储,例如我们表示“people”这一数据结构可以使用如下方式:
{ ″peopleId″:″001″, ″name″:″张三″, ″sex″:″男″, ″age″:″28″, ″profession″:″建筑师″ }
上述就是一种JSON结构,一共有5个数据在这个JSON结构中,它们以“key-value”的形式存储,冒号左边的是“key”,冒号右边的是“value”,基于这个结构我们可以无限扩展其他的键值对,而且键值对可以进行嵌套,例如下面这种结构:
{ ″id″:″001″ ″name″:″张三″ ″profession″:{″id″:″1″, ″professionName″:″建筑师″} }
键“profession”对应的值也是一个JSON结构,通过这种嵌套的方式可以很灵活地扩展数据表示,数据存储方式也更灵活
数据存储与恢复
数据存储在数据库中,而数据库在物理上是位于服务器的数据磁盘中的
索引区
储存的是数据的目录
数据区
具体存放数据的区域
数据存储过程:当一条新数据需要存入数据库中的数据磁盘时,首先会在索引区建立一个索引,然后将具体的数据存储在数据区
删除与恢复
当删除一条数据时,只会将索引区的索引删掉,并不会立刻对数据区的数据进行删除操作,直到下一条新数据存储时,会将这些已经没有了索引的数据区数据覆盖掉
从这个过程中我们可以看出,当需要恢复已经删除了的数据时,只需要到数据区检索那些失去索引的数据然后重新为它们建立索引即可
当然,如果数据被覆盖,就无法恢复了
删除一条数据都是优先从逻辑上删除,并不会立刻完成物理删除的操作。所以如果要恢复数据,在恢复数据前不要对数据库有其他新的写入操作,这么做的目的是防止需要恢复的数据被覆盖
还有另外一种情况,有的设计为了更保险,会对已经删除的数据做特殊标记,将这些已经删除的数据存储在另外一个数据库表中或者对数据做一个已删除的标记,当需要恢复时,修改数据标记即可,其实并没有真正删除数据
互联网产品中的“删除”
在互联网产品设计中,涉及用户删除数据的时候,一般都是“假删除”,意思是对数据进行删除标记,实际上并没有在物理上真的删除数据,例如用户删除一个订单或者删除一张照片
这些被“删除”的数据并不是永远不会删除,因为数据存储需要开销数据硬盘。所以,通常情况是存储某一个时间范围内的已删除数据,超出时间数据就进行物理删除
从数据角度看产品设计
产品都是在一些功能的基础上实现数据的流转,通过用户对产品的操作和具体的业务流程,实现对输入数据的处理和输出数据的存储。产品经理在设计产品时,需要先明确在整个产品业务流程中有哪些实体对象,产品所涉及的数据在系统内是如何流转的
产品经理学客户端技术
产品经理为什么要学客户端技术
Android的应用范围非常广泛,扩展性也很强。从开发角度看,它基于成熟的Linux开发而来,在应用开发层使用主流的Java语言进行开发,颇受开发者欢迎。经过将近十年的升级迭代,Android系统的完善度逐渐提高
iOS系统的开发语言是Objective-C,目前也可以使用苹果自己推出的Swift语言进行开发
Web技术通常是指由HTML、CSS及一些动态交互技术(例如JavaScript等)组成的Web前端技术。以微信公众号为例,公众号的文章全是通过Web实现的。另外,微信红包页面和一些微信服务号页面都是通过Web实现的,通过Web实现的好处是内容可以灵活变化,而且可以在不发布新版本的情况下实现内容更新
Android基础技术及基本控件
Android应用使用Java作为开发语言,使用前文提到的Eclipse作为开发工具
View 视图
View是视图的意思,表示在屏幕上展示的一个可视化控件,是Android所有控件的根,其他(例如,按钮Button和文本展示框TextView)都是继承自View,在具备View的一些基本属性的同时还扩展了属于自己的属性
Button 按钮
TextView 文本框
EditView 文本输入框
ListView 列表控件
GridView 容器控件
有许多服务入口的产品
Android应用打包及发布
Android应用开发完成后,需要被打包成一个扩展名为“apk”的文件,APK的意思是AndroidPackage,这个文件是一个完整的Android应用安装文件,类似于我们在Windows系统中使用的“.exe”的安装文件
iOS基础技术及基本控件
UIView:类似安卓中的View
与Android系统不同的是,在iOS系统中可以实现UIView的相互嵌套,也就是说,我们可以在UIView里再放一个UIView,但在Android系统中,不能在TextView里再放一个TextView,这是二者的差异
所有UIView类控件在iOS系统中通过坐标轴进行界面布局
UIButton
UILabel:类似TextView
UITextField:类似EditText
UITableView:类似ListView
UICollectionView:类似GridView
系统权限控制
Android授权是发生在应用安装阶段,当用户安装Android应用时会提示用户同意相关权限协议才能进行安装,而iOS的授权则是发生在用户使用产品的过程中
iOS应用打包及发布
发布
App Store
内部测试版
开发者证书分三种
个人开发者
公司开发者
企业开发者
企业发布者可以自己开发并绕过App Store提供App下载,但只能在有限的范围内。企业开发者类型往往是提供给企业内部作为内部App开发和下载用,不面向公开市场
Web基础技术知识
在移动端App中使用Web加载的方式打开Web页面,就可以将Web页面嵌入移动App中,实现二者的相互混合。
这种方式对一些变化比较频繁的产品页面是一种较好的技术方案(修改Web页面的内容不需要重新发布一个新版本的App),但是如果要修改某个App的本地功能(例如,修改图片的打开方式),就需要修改App的本地代码然后重新发布一个版本。
使用Web的好处是能轻量化产品实现,而且能动态灵活地调整产品内容;劣势是Web的体验感和流畅度和原生的App实现还有一定差距。
在选择是通过Web实现还是原生App实现时,需要综合考虑产品功能的使用场景和频次。使用频次低而且内容变化比较快的可以通过Web实现,使用频次高而且内容相对固定的,为了保证产品体验可以选择原生App的方式实现
网页的骨骼和外衣:HTML/CSS
HTML
HTML全称超文本标记语言。它所能表现的内容不仅是文本,还可以是图片、链接、音乐等非文字元素,标记语言是对HTML特性的一种描述,HTML语言的语法结构是通过一个个的标签标记体现的
其结构包括“头”和“主体”
头部的内容使用标签<head></head>标记,第一个head标签是指标签的开头,第二个带斜线的标签标示标签结尾,头部的内容就放在头尾标签之间。头部主要存放一些网页信息,例如网页标题和网页描述等
主体部分用标签<body></body>表示,网页的内容全部放在body标签下
整个网页的内容都会放在一个顶层标签<html></html>下,如果我们打开一个网页,查看其源代码,能看到网页实际上是由一个个HTML标签组合而成的,大致的框架结构如下:
<html> <head></head> <body> </body> </html>
CSS
CSS全称层叠样式表,是一种将网页内容与网页样式分离的技术
简单地说,CSS是给只有内容的HTML页面穿衣服,让HTML页面好看起来。我们可以定义一套CSS风格,例如指定各种型号的字体、颜色及按钮的样式等,然后将这个CSS文件嵌入HTML网页中,这个网页中所有的控件样式都会根据这个CSS文件的样式设计进行统一替换
URL/HTTP
URL
URL的全称是统一资源定位符,互联网上所有的资源都有一个唯一的URL地址,资源的类型可以是一个网页、一张图片、一首歌曲或者一段视频
URL就是我们所说的网址,类似“http://www.xxx.com/aa/bb/c.png”这样的结构
URL通常分为三部分
第一部分是协议,也就是上例中的“http://”,HTTP协议(Hypertext Transfer Protocol)全称超文本传输协议,是互联网的基本协议。字面意思是通过该协议我们可以在互联网上传递除文字以外的其他内容,例如网页、音乐、图片等
第二部分是资源所在的服务器IP地址,为了方便识别,IP地址通常被替换成域名
第三部分是资源的具体路径,也就是域名后斜杠的部分,这部分内容和文件夹的层级结构类似,不同的结构间通过斜杠进行区分
这个例子中,我们就标识了一个名为c.png的图片在互联网的唯一地址
HTTP
HTTP还有一个安全版本HTTPS,当我们在浏览器中使用网银或者跟支付相关的服务时,浏览器的地址协议通常是“https://”开头的,HTTPS是基于加密协议的传输协议,其加密方式就是我们在第2章提过的OpenSSL组织研发的SSL加密方式
Web App/Native App
Cookie和Session
场景举例
1、当我们登录一些网站要输入用户名和密码时,通常都有一个记住用户名和密码的功能,这样下次登录时就可以不重复输入
2、当我们使用电商类网站购物时,把商品加入购物车后,下次进入购物车或者从其他客户端进入购物车仍然能看到之前加入购物车的商品
记住用户名和密码是通过Cookie实现的,保存购物车记录则是通过Session实现的。无论是Cookie还是Session,实际上都是一种会话存储技术,区别在于Cookie是将信息存储在本地,而Session是将信息存储在服务器端
当我们换一个客户端时记住密码会失效,但保存的购物车商品仍然能看到
广告推送:当我们在一个电商网站浏览过某一类商品,再去另外一个视频网站看视频,就会发现视频网站的广告栏给我们推荐了刚刚我们在电商网站浏览过的商品,而这两个网站是不同公司的产品。实际上,这里用到的就是本地缓存的Cookie信息,通过这种方式就实现了广告的精准展示
如何判断产品问题是否出自客户端
根据客户端出问题时提示的异常信息判断。不同的信息能给工程师不同的判断依据
e.g. 数据加载失败,有可能是客户端在向服务端发送请求时,数据返回有误或者数据显示有误,问题可能出自服务端,也可能是服务端修改了数据字段导致客户端解析失败。此时,如果定位不到具体问题,需要与客户端工程师、服务端工程师共同联调定位问题
对于产品表现出来的问题或BUG,产品经理不要急于下结论定位问题出在客户端还是服务端,基于前文提到的一些客户端技术,可以做一些基本判断
e.g. 列表中显示的数据有重复项,而且每次都能复现,这极有可能是服务端返回数据时返回了两个一样的;也有可能是客户端在解析数据加载显示时的问题,把一个数据展示了两次
产品经理学服务端技术
常用服务端技术介绍
PHP是一种脚本语言,可以用于网页开发。PHP有很多现成的框架可以使用,通过框架可以非常简单地实现很多功能
常用到Java语言的开发平台Java EE。Java EE本身是一个开发框架平台,在这个框架上,可以实现企业级复杂系统的开发,也可以基于这个框架实现很多类型的服务端业务
现在使用比较多的Node.js也是一种服务端开发技术,使用JavaScript语言进行开发,Node.js能实现从网页前端到后端服务的全流程覆盖,是一种灵活性和扩展性都比较好的服务端技术
服务端的基本架构
服务端通常被叫作云端,也就是我们所说的云服务器,云服务器指物理机房托管在第三方,而不用自建机房
e.g. 当我们抢购商品时,会出现排队或者无法访问的情况,这是因为我们已经进入了一个负载量非常大的服务器,如果这时我们关掉网页,重新打开再请求,有可能会被分配到另一台应用服务器上。若恰巧这台服务器比刚才那台负载量低,我们就有可能正常抢购到商品
数据接口及结构
数据接口是指客户端与服务端进行数据传输和交互的数据协议,数据接口是一种数据交换的标准
数据接口的构成通常是“key-value”的形式,也就是键值对,键(key)代表某一个数据字段所表达的意思,值(value)是这个数据字段的内容
e.g. “{username:ryan,password:123}”,在这个数据接口结构里,我们定义了两个字段,分别是代表用户名的“username”和代表登录密码的“password”,对应这两个字段的值分别是“ryan”和“123”
在完成登录操作时,客户端会通过该数据接口将客户端输入的数据携带并通过网络传递给服务端,服务端接收到后进行判断处理,处理完成后,服务端也会通过数据接口返回一个内容给客户端
e.g. “{code:200,message:登录成功}”,客户端通过这个数据接口返回的内容进行判断,服务端返回登录成功,说明输入的用户名和密码正确,这时就允许用户进行登录操作;如果遇到用户不存在或者密码错误的情况,也会在数据接口里面返回,客户端会根据返回的内容进行相应的处理
数据接口类型
JSON
JSON是一种轻量级的数据交换格式,也是一种用来表示数据接口结构的形式。JSON结构灵活性高,可以进行丰富的数据结构表达,JSON结构易于理解和阅读,也便于计算机进行解析和表达
一个简单的JSON结构如下:
{ "username":"ryan", "password":"123" }
在上面这个简单的JSON结构里,我们通过键值对的方式表达了用户名和密码这两个数据项
JSON结构通常由一个大括号包括,一个大括号包括的JSON结构叫作一个JSON对象,在一个JSON对象里,通过“:”左右的内容构成一个键值对,左边的是键,右边的是值,键和值都由引号括起来,每个键值对之间用逗号分割
XML
XML的全称是可扩展标记语言,与JSON一样,XML也是一种数据交换格式,也可以用来进行简单的结构化文本数据的存储
XML的基本元素是由一个个标签构成的,每一个标签都由标签头和标签尾构成,内容放在标签头尾之间,例如“<name>ryan</name>”就是一个完整的标签体,尖括号内是标签的名字,标签尾用“/”加在标签名之前表示。另外,与JSON类似,XML的标签元素也可以进行相互嵌套,标签内的值也可以是标签体
e.g. 用XML结构表示的省份和城市的例子。
<?xml version="1.0" encoding="utf-8"?> <country> <name>中国</name> <province> <name>黑龙江</name> <cities> <city>哈尔滨</city> <city>大庆</city> </cities> </province> <province> <name>广东</name> <cities> <city>广州</city> <city>深圳</city> <city>珠海</city> </cities> </province> <province> <name>湖南</name> <cities> <city>长沙</city> <city>株洲</city cities> </province> </country>
在上面的XML结构中,第一行是XML结构的头,注明了版本号和编码格式,编码格式是指该XML结构里的内容会以何种方式解析,“utf-8”是一种统一转换编码格式,可以支持繁体中文、简体中文及英文、日文、韩文等的解析
接着往下是一个用“<country>”表示的代表国家的大标签体,在这个标签体里有一个“<name>”和三个“<province>”标签体,“<province>”里又细分为省份的名字和省份下面的城市,在XML里表示数组的方式就是在一个标签体内存放多个标签体,例如标签“<cities>”下的多个“<city>”标签
服务端与客户端的交互模型
客户端请求
服务端获取并解析客户端请求
服务器响应
客户端获取并解析服务端响应
如何判断产品问题是否出现自服务端
服务端是用来接收客户端请求并将处理结果返回给客户端的一个中间调度者。服务端不仅与客户端进行交互和通信,同时还与数据库进行交互
当客户端上显示不出数据时,问题也有可能出自服务端,具体原因可能是服务端在查询数据库时没有查询到信息,客户端通过网络请求获取数据时,接收到的数据集为空,所以在客户端产品中没有展示出数据
产品经理学数据
数据分类及数据分析
结构化数据
结构化数据是按照一定数据规则储存的数据
e.g. 电商产品里的结构化商品数据,这些商品数据按照严格的商品分类和商品属性进行分类存储,手机归属在电子产品分类下,每个手机又具备颜色和内存规格等基本参数
按照这种结构存储的数据可以被有效地进行分类管理,基于这种结构化的存储形式,我们可以按照某一维度对数据进行分析和处理
通过分析结构化数据我们可以预测数据走势,提前预判风险
非结构化数据
非结构化数据多是一些零散的、没有一定规律的数据
e.g. 用户在电商网站上浏览商品的浏览记录数据,或者一些系统的操作日志等,这些不是按照一定的规则进行结构化存储的数据都叫作非结构化数据。例如图片、视频、音频等数据都属于非结构化数据
通过分析非结构化数据可以进行一些行为分析和相关推荐
与结构化数据相比,非结构化数据的采集和分析更复杂,非结构化数据的数据量也要大很多
P数据指标
UV/PV
UV
网站独立访客和独立用户的意思,指访问某个网站的独立IP的数量
PV
网站的页面访问量,和UV不同的是,PV统计的是用户打开网站的次数
DAU/MAU
DAU
Daily Active User,是指日活跃用户,记录一天内独立用户登录或使用产品的次数
MAU
Monthly Active User,是指月活跃用户,记录在一个自然月内用户的活跃度
GMV
GMV(Gross Merchandise Volume)全称为商品交易总额,是一种反映平台交易总量的数据指标
GMV不是指成交总额,而是指发生的商品交易总额,例如用户在淘宝上下订单了但是还没有支付,那么这个商品的交易额度也会被计算进入GMV。
只有用户完成支付动作的交易额才被计入成交总额,如果用户发生下单却因为某种原因不支付的情况,就会被计入GMV数据,但其实没有反映到成交额里
GMV数据指标只能从一个侧面反映平台的交易活跃度,交易类平台关键还是看总成交量
转化率/留存率
转化率
转化率是统计一个大范围的运营活动或者产品动作转化出有效用户的比例
e.g. 我们在线上做一场运营活动,让用户报名参与,有1000个用户打开并查看了该运营活动,最终有100个用户成功报名并参与了活动,那么此次运营活动的转化率就是10%
转化率越高说明活动的效果越好,投入产出比越高
留存率
留存率是指用户进入产品后,在一定的周期过后留存在产品中的用户比例
e.g. 以某一天开始计算,当天进入产品的新用户是100人,一天后这一批人里有50个人继续使用产品,那这一天产品的留存率就是50%
数据仓库
数据仓库(Data Warehouse)可简写为DW,是一种对历史数据进行存储和分析的数据系统,通常是为企业根据过往数据进行分析从而制定相关决策而存在的
数据仓库的数据来源通常是历史业务数据,例如历史订单及客户信息等,还包括一些系统的操作日志记录等
这些数据统一汇总存储至企业数据仓库,通过对数据仓库里的综合数据进行有目的的计算和分析,可以得出业务分析报告和历史数据报表等
数据仓库里的数据有一个特点就是有一定的延迟性,数据仓库里的数据通常是对历史数据进行的存储和分析
数据库 & 数据仓库
数据库是对实时数据进行存储和事务性处理的系统,对应的操作包括了新增数据或是对数据进行修改和查询,但是在数据仓库中通常只对数据进行查询操作
数据库是为捕获数据而设计的,数据仓库是为分析数据而设计的
产品经理的自我修养
三种类型的产品经理
用户体验型
用户体验包括了产品功能体验、视觉体验和信息体验
用户体验型产品经理更关注产品本身的体验,结合业务目标完成对产品的设计,并持续对产品进行体验层面的优化
业务型
全局思维能力
资源整合能力
沟通
数据型
数据型产品经理需要专注在产品的数据指标上,定义产品数据指标然后通过技术的方式采集指标反馈,从而根据大样本的结果辅助产品决策
产品经理的三项核心技术
让对的事持续发生
让信息高效流动起来
让组织合作顺畅进行
懂技术不如懂产品
为什么懂这么多还是做不好产品
设计完功能不等于做好了产品
产品经理设计完功能不等于做好了产品,符合产品核心定位的功能组合才是好产品
理解场景比设计功能更重要
出发需求迭代的三个条件
产品思维与用户场景
数据验证产品假设
用户反馈驱动产品优化
“张小龙在他的演讲中强调微信的产品观,认为好产品是人们用完即走的,也就是在当前场景下完成了用户任务,用户就会离开,下次需要重复该任务时,用户还会回来。好产品不应该黏住用户,而是应该让用户感觉到像水电一样自然。好比现在的微信,估计会有一部分人感觉它已经是手机系统里的一个默认应用了,沟通、购物、缴费、娱乐、理财等全部搞定”
产品是技术与艺术的结合
产品经理的修养
只关注真实用户的需求,忽略一切噪音(评论家的评价和办公室空谈者的奇思妙想)
只关注来自真实市场的一手材料,忽略一切二手信息(任何传话者都会用个人立场扭曲真实信息,所以一切二手信息都是失真的)
关注的最佳方法不是听,而是身临其境观察和发现
0 条评论
下一页