出家如初,成佛有余

如何开发一个好的普惠金融产品?

Posted in 电子商务, 产品管理 by chuanliang on 2015/04/18

我在知乎就问题《如何开发一个好的普惠金融产品?》做的回答。

 

这话题太庞大,只能尝试从自己角度回答一下。
1、互联网金融产品从产品属性属性来说分为两种:金融端产品、互联网端产品
其中金融端产品主要指传统金融提供的各种金融产品。究其原因在于目前金融监管限制,互联网金融还很难有真正意义上的金融端产品创新。
互联网端产品主要指依托互联网渠道的各种产品、服务等。

2、互联网金融产品产品度量指标:
金融端产品的度量指标:风险、收益、流动性
互联网端产品的度量指标:创新、用户体验、用户口碑、用户数/流量

3、互联网金融产品玩法:
a、金融产品端的玩法:
监管套利、信息不对称、资源重配置等。
对现有传统金融产品通过组合、移植、包装等方式,形成互联网金融的金融端产品。
b、互联网产品端的玩法:
去中介化/脱媒、口碑传播、流量及长尾效应、持续运营

4、普惠金融产品开发挑战:
a、团队磨合
由于涉及金融产品团队、互联网产品团队等不同角色,不同团队的文化氛围、管理模式、风格、关注点等都不尽相同,怎样让团队尽快磨合,协同作战。
b、口碑及信任感建立
互联网金融的价值之一在于可以利用互联网渠道的口碑传播,快速放大产品及公司品牌影响力,但由于互联网金融产品的金融属性,用户对平台的信任感是平台的核心竞争力。怎样让产品获得良好口碑,培育用户起对平台信任感成为优秀产品的核心任务。

5、产品开发模式
精益创业的MVP方法、Scrum等。

6、怎样开发一个好的互联网金融产品
1)、跨职能的项目团队搭建
2)、市场调研,定位目标用户群
3)、金融产品设计及定价
4)、互联网产品设计
5)、互联网产品开发
6)、种子期用户试点
由于互联网产品的研发有一个过程,如果业务模式允许,在系统未上线前可并行采用手工方式进行金融产品试点验证(MVP方法)。
7)、运营数据分析及产品策略分析
8)、产品完善(包括定价策略、营销策略、IT系统等)
9)、扩大试点范围(受众群、区域、渠道等)
10)、运营数据分析->产品完善->更大规模推广及运营

7、好的互联网金融产品评价标准
可以参考 互联网金融运营需要关注的数据有哪些呢? – 梁川的回答

知乎回答原文链接:http://www.zhihu.com/question/29358993/answer/44781757

Advertisements

如何从零起步学习支付行业相关知识?

Posted in 电子商务, 产品管理 by chuanliang on 2015/04/06

我在知乎就问题《如何从零起步学习支付行业相关知识?》做的回答。

既然提的是产品经理,需要明确强调的一点:
虽然同为互联网产品经理,作为支付产品经理与其他偏内容、体验导向的互联网产品经理(例如微博、门户、SNS等)在技能有很多不同。
最 大的差异在于:支付产品经理需要较强的逻辑思维能力,并对后端系统技术实现有一定的理解。主要原因在于支付系统最为麻烦不在于前端的用户体验,而是后端复 杂业务逻辑。如果不理解已有系统的需求场景、实现逻辑、局限性、约束,那最终产品经理只能沦落为需求的传声筒。这也是为何诸多支付公司的技术同学们总觉得 产品经理可有可无(虽然偏妥,但也不无道理)。
因此,要入门支付行业做产品,如果不希望变为只是空谈用户体验“传声筒式”的产品经理,首先一定要努力提升自己的逻辑思维能力、技术能力,这也是为何在支付行业摸爬滚打多年的都有类似观点:好的支付产品经理应当有技术背景。
由于支付行业涉及金融、电子商务、所处行业知识、互联网产品管理等等方面的知识,不可能三言两语就说清楚需要学习那些知识,这里从怎样入门提一些参考建议。
1、先作为用户及商户体验了解第三方支付平台在整个交易过程中的角色及作用
商户涉及签约、系统接入、交易及异常处理(例如掉单、重复订单)、运营对账及清结算等方面。
用户涉及从商家平台(例如电商、游戏)购物、生成订单、支付等过程。
商户角色可以看看第三方支付所提供的接入SDK。
用户可以直接找个电商平台、游戏平台实际购买体验一下支付过程。
值得注意的是由于有使用神州行卡、游戏点卡支付的场景,因此游戏行业的商户与电商平台的商户支付流程上并不完全相同,同理POS收单、预付费、移动支付、外卡收单等支付过程也不尽相同。
2、积极参与一个支付产品日常运营问题处理,从问题入手,进而熟悉所负责产品的行业需求、业务逻辑、问题、行业知识
如果是从零开始做支付,强烈建议先做上一段时间的运营人员、客服人员,并建立与客服的沟通机制。在此过程中熟悉所负责产品的主要问题,从运营问题入手,边干边学。这样目标更明确。
3、在日常产品设计中,对自己高标准要求,不要以传声筒或撒手掌柜的标准来要求自己。在产品方案中,强迫自己写清楚产品业务用例的实现逻辑,全程参与技术实现细节的讨论中(注意是参与不是主导),不耻下问,向技术了解系统实现逻辑。
4、多多使用竞争对手的产品及行业解决方案,扩大知识面及视野
支付方面的图书较少,可以在当当、亚马逊搜索一下,就不做推荐了。
提供一本电子书《第三方电子支付探索与实践》,供参考 第三方电子支付探索与实践,完整扫描版.pdf_免费高速下载
利益相关:参与过此书写作,并不是说很好,只是供参考。

知乎回答原文链接:http://www.zhihu.com/question/29217557/answer/43815296

互联网金融运营需要关注的数据有哪些呢?

Posted in 电子商务, 产品管理 by chuanliang on 2015/04/06

我在知乎就问题《互联网金融运营需要关注的数据有哪些呢?》做的回答。

 

由于互联网金融概念较为宽泛,支付、投资理财、信贷、征信、虚拟货币发行(比特币等)、金融产品搜索等不同领域所关注的核心指标并不相同;即便是相 同领域的公司,由于核心业务模式的差异导致大家所关注指标也不相同。因此从运营角度来看,最靠谱的是结合公司的核心业务模式来归纳运营指标。

备注:由于互联网金融公司的金融属性,从经营风险的角度来看,风险贯穿互联网金融公司的企业日常运营、IT平台运营等过程,这与普通互联网公司的运 营主要关注产品运营有极大不同,因此以下所指的运营并不单纯指普通互联网公司的运营部门的运营,而是从整个互联网公司企业运营角度来说的(其实也是运营人 员需要关注的),姑且叫大运营吧。

不妨先看看一家互联网金融公司正常运营要关注的问题(其实也是核心业务模式):
1、目标用户是谁,目标用户的分级体系?
2、提供什么样金融产品,金融产品的核心价值?例如收益、风险、流动性等
3、通过什么渠道找到目标用户?例如搜索引擎竞价、微信、APP、朋友圈、渠道合作伙伴等等
4、举办什么样的营销活动来扩大影响力,拓展新用户、提升老用户活跃度?
5、合作伙伴是谁?包括担保公司、保理、信托、银行、渠道合作等
6、怎样进行风险控制?包括政策法规风险、项目风险、系统风险、操作风险等
7、用户通过什么渠道投融资(支付)?第三方支付、网银转账、线下汇款、移动支付、POS等等
8、怎样搭建NB的IT支撑平台?用户体验要好、系统要安全可靠稳定等等
9、怎样服务好用户?客服体系、运营体系等等的搭建
10、怎样从众多竞争对手中脱颖而出,建立品牌形象并维系好品牌形象?

针对以上问题,可以总结出对应量化指标体系:
1、用户指标:包括用户信用评级、活跃度、留存率、转化率、客单价(平均投资额度)、用户分布(各等级占比)、互动指标等等。
2、产品指标:产品组合、投资人数、投资金额、满标时间、收益率、流标数、风险系数、热度(受欢迎度)等等。
3、营销渠道指标:渠道来源、渠道转化率、渠道成功率、渠道成本等等
4、营销活动指标:活动成本、活动渠道来源、活动转化率、传播数、新增粉丝数/用户数等等
5、合作方指标:合作带来的项目数、项目通过率、风险系数、成本等等
6、风控指标:项目审核通过率、风险备用金、项目流动性风险指标、合规相关指标等等
7、支付渠道指标:渠道转化率、渠道成功率、支付渠道来源、渠道成本等等
8、IT平台指标:用户体验指标(包括响应速度等)、可靠性指标、安全性指标等等。这块与互联网的指标类似。
9、客服指标:投诉分类、接通率、投诉渠道、响应速度、满意度等等
10、竞争性指标:竞争对手分析指标、互联网舆情监控指标等等

 

知乎回答原文链接:http://www.zhihu.com/question/29164071/answer/43503400

目前在管理一个移动App研发团队,如果想App的人机交互体验更好我该让PM还是视觉学习交互设计?

Posted in 产品管理 by chuanliang on 2015/04/06

我在知乎就《目前在管理一个移动App研发团队,如果想App的人机交互体验更好我该让PM还是视觉学习交互设计?》问题做的回答

所经历过大部分公司的移动开发团队其实都很难配备专职的交互设计师,基本上要靠团队协作来弥补缺少专职交互设计的短板。
所经历的 APP开发项目大都是:产品经理主导,视觉设计师辅助的协作模式。也即:产品经理出产品原型及文档以描述清楚业务的目标人群、用例、初版的交互设计,由视 觉设计师在其基础上优化,然后团队成员(产品、设计、制作、研发等)一起集思广益优化,当然少不了研究、借鉴同类产品的优秀设计模式。
在缺少专职交互设计师的情况下,交互设计由谁主导交互设计,大致取决于如下一些要素:
1、主导人员能力强弱:业务能力、沟通能力、个人强势程度等等。
2、产品属性:是否有较多的业务逻辑或业务逻辑较为简单,较多的业务逻辑意味着交互设计的优化很大程度上需要依赖业务流程的优化,而这需要对业务较为熟悉。
3、热情: 一般而言,大部分团队做APP交互设计时候,都会学习、借鉴、抄越各种标杆产品,而这依赖于对各种产品痴迷研究的热情。

 

知乎回答原文链接 http://www.zhihu.com/question/28557022/answer/41278341

微信支付有哪些体验不好的地方?

Posted in 电子商务, 产品管理 by chuanliang on 2015/04/06

我在知乎就《微信支付有哪些体验不好的地方?》问题做的回答

谢邀。非微信支付的重度使用者,也未对微信支付的整体流程做仔细研究,因此回答可能有偏妥当的地方。
从个人常用的微信支付的几种场景:滴滴打车、发红包,整体体验还算流畅,如果从C端用户角度来看,只是将微信支付作为一个支付工具,微信支付的体验还可以。
如果要从一个支付平台角度来评价微信支付,从如下几方面评价微信支付尚有诸多可以提升的:
1、支持的银行数
主流的工农中建招支付倒没问题,测试了几个小行,微信支付对一些小行的支付较弱(当然不完全是微信支付的问题)。
2、支付场景或者使用微信支付的商家数及行业覆盖度
目前微信支付支付场景还是偏少,所涵盖的商家数及行业还是较少。当然这是一个综合性的问题,与面向B端商户的费率、单笔支付金额限制、行业解决方案、平台开放度等等有关。
3、安全性
微信支付在针对盗卡、盗刷、手机遗失等典型支付安全的防范措施还是偏少。
4、针对B端的行业解决方案
微信支付定位于移动支付,对B端的商家而言(例如第三方的手游),微信支付的接入门槛、接入成本还是蛮高的,最关键的是针对B端商家的行业解决方案基本无(当然可能与微信支付的定位有关),这也导致了微信支付新的场景拓展较慢及模式创新的缺失。

 

知乎回答原文链接 http://www.zhihu.com/question/28151993/answer/40654931

如果研发团队去中心化,团队主管这个职位是不是可以撤了?

Posted in 管理杂思, 产品管理 by chuanliang on 2015/04/06

我在知乎就《如果研发团队去中心化,团队主管这个职位是不是可以撤了?》 问题做的回答

谢邀。很惭愧,没听说过“研发团队去中心化”的理念。按照去中心化的字面意义,我理解,题主要表达的几个可能含义:
下面假定公司层面无独立的类技术中心、研发中心的组织。
1、公司层面去中心化:无技术中心,研发归到所支撑的业务部门,并作为一个部门/项目组存在
2、部门层面去中心化:无技术中心,研发归到所支撑业务部门,有专职研发,但无单独部门/项目组
3、彻底去中心化:无技术中心、无专职研发,类似“人人都是产品经理”的口号,姑且叫:“人人都是程序猿”
个人觉得此问题本质在于”研发团队去中心化“的可行性。要考虑“研发团队去中心化”这个问题,至少可以从如下方面考虑一下:
1、公司定位:公司是营销导向还是技术导向、是项目实施型、产品研发型还是互联网运营型、是赚一把就闪还是要持续经营等等?
2、公司发展阶段:是初创期、发展期、成熟期?
3、公司的文化氛围、组织架构稳定性、考核制度:公司已有文化氛围接受吗?一堆人是否被公司文化洗脑过,真正做到“使命驱动”?怎样度量研发人员的绩效?
3、 研发人员汇报对象的管理能力:即便“研发团队去中心化”后,所谓的研发团队主管这个职位可能不存在了,但从组织架构角度,但研发人员肯定还需要有汇报对 象,此时研发人员的汇报对象多数为偏前端的市场/销售/业务人员等,值得注意的是研发人员的思维模式与偏前端的人员思维模式确实有较大差异。此时候需要重 点考虑:研发人员汇报对象思路是否清晰、管理经验是否丰富、能否”忽悠/驱动”研发认同其目标?
4、研发人员素质、能力:如果研发人员都是能够自我管理、自我驱动、能力超强的人员,每一个都能独挡一面,那么实际上已经去“中心化”,否则。。。
5、研发人员成长及职业发展规划问题:“去中心化”后,谁来关心研发人员的成长、技术培训、职业发展规划
如果能够清楚回答以上关于”去中心化“的问题,具体到是否需要研发团队主管这个位置,大致也清晰了。

 

知乎回答原文链接 http://www.zhihu.com/question/27977285/answer/39492293

对于想创业的产品经理来说,现在工作之余的时间应该投入到编程还是其他呢?

Posted in 产品管理 by chuanliang on 2015/04/06

我在知乎就《对于想创业的产品经理来说,现在工作之余的时间应该投入到编程还是其他呢?》问题做的回答

由于未提供更多信息,从题主的问题推测一下:

  • 题主虽然有一定的产品设计经验了,但作为一个产品经理至多只能算是入门级,而且是偏实施的产品经理(与此对应的是偏市场端的产品市场经理);
  • 题主对当前所做的产品及行业热情并非十足;
  • 题主内心深处不一定真正热爱创业,而是有可能处于职业发展的迷茫期,创业只是改变现状的一个可选的方案而已。

之所以这样说,一个有创业想法、经验丰富的产品经理,面对“准备创业”这样一个产品规划,首先要做的事情,不是通过漫无目的的学习来弥补自己的劣势为未来 创业准备,而是:发现自己的优势->深入行业->找到市场机会->聚集志同道合且互补的团队成员->产品设计->采用各种 手段(例如精益创业的MVP方法)去验证需求->持续运营、持续改进->完善业务模式->创业。这个过程足够一个产品经理忙得分身乏 术。
承然,产品经理懂技术对于创业有诸多优势,创业团队也需要所谓的全栈工程师、全栈产品经理,但创业是一个团队成员间专业分工协作的群体活动,作为产品经理,你可以在技术不给力或技术资源不足时候客串、替补或予以弥补,但你的核心价值还是在于产品相关的方向上:

  • 参与业务模式的完善及产品战略落地
  • 主导产品设计,以获得最佳的用户体验
  • 产品研发过程的精益管理
  • 产品运营过程中持续改进完善
  • 产品营销推广的支持
  • 作为润滑剂,推动团队中市场、推广、运营、产品、技术间的协作

因此题主现在最高优先级的事情不是去学习技术,而是:

  • 搞清楚自己的核心需求:创业真的是你内心最真实的需求还是因为职业发展迷茫的问题?你理解的创业是怎样的,你愿意为创业付出多少? 经历过几次创业,关于创业,最大体会莫过于:其实大部分人都不适合创业;所有人都有创业的美好梦想,但大部分人即便处于创业中,还是打工思维:按部就班, 指望拿打工差不多的钱,承担打工同样的风险,过自己当老板的梦想。
  • 搞清楚未来在创业团队的核心定位:你的优势是什么,怎样更好发挥出你的优势?你在团队中的核心价值是什么?是你主导创业还是参与别人主导的团队?是偏产品规划还是偏产品实施或偏运营还是其他?
  • 围绕核心定位强化核心技能
  • 扩大人脉圈,找到价值观匹配切能力互补创业合作伙伴
  • 锻炼自己的身体、磨练心性:创业(打工也如此)需要有一颗强大的心和健康的身体,想不清当下及未来,不妨从这点做起。

 

知乎回答原文链接  http://www.zhihu.com/question/27822708/answer/38598450

Tagged with: ,

支付平台的账户体系结构是怎么设计的?

Posted in 电子商务, 产品管理 by chuanliang on 2015/01/19

我在知乎就《支付平台的账户体系结构是怎么设计的?》问题做的回答。

这个话题比较大,简单来说:
1、支付平台有自己的一套客户/账户/账务体系,用于记录各个客户/商户的基本信息、账户信息、账务信息。
基本信息包括实名认证信息、联系方式等等信息。
账户信息比较重要的属性是账户资金/余额,此处的账户资金实际上只是虚拟账户的资金信息,并非实际的资金,实际的资金存放在支付平台在银行设立的银行账户上。
关于账户/账户体系,一般有单式记帐法、复式记账法,关于账户/账务系统的设计具体原理可以找一本《会计学原理》好好学习一下,琢磨清楚科目设置、账户、流水分录、账簿、复式记账法之类概念,再结合交易订单处理,基本上就可以做出一个简单的账户/账务系统。
当然一般所说的账户/账务体系,实际上还涉及客户/商户模型,以满足“客户为中心”而非“账户为中心”的管理需求。
简单说来,支付平台的账户体系实际上用于记录每一个客户/商户的账户资金等虚拟信息。
2、支付平台会在银行设立一个或多个账户,用于归集客户或商户的备付金(粗俗地可以理解为,客户/商户充值、支付、交易等待结算的资金)。
以普通用户在第三方支付平台给自己虚拟账户在线充值为例(懒得画图了):
1)、用户在第三方支付平台执行充值操作,跳转到银行网关进行支付。
2)、用户支付成功后,银行会实时从用户银行账户上执行扣款操作。
3)、银行网关通知支付平台用户支付成功(成功扣款)。
4)、支付平台在自己账户体系中给对应用户虚拟账户增加对应资金。
5)、银行和支付平台然后按照约定的结算周期(例如T+1)进行对账、清结算等操作后,将用户充值的资金结算给支付平台在银行设立的账户。
备注:
1)、一般情况下支付平台不会在自己在银行设立的账户为每一个用户都设立一个对应的账户,只会有一个总的账户用于归集所有客户或商户的资金。而哪一个用户账户余额有多少钱,需要结算多少钱给某个商户,在支付平台的虚拟账户/结算系统中做标识。
2)、在银行备付金管理办法颁布前相对灵活,可以毫无限制地根据需要设立多个账户。例如在中国工商银行不同省份的支行设立不同的账号。
备付金管理办法颁布后,有所谓的汇缴户、收付户、存管户等限制,具体参考《支付机构客户备付金存管办法》
P2P平台自己账户体系的设立基本类似,并无过多复杂的地方,当然一般只需要采用单式记账法就够了。
只不过如果是P2P平台在第三方支付平台做资金托管,那么第三方支付的账户托管在账户设置上一般会有两种模式:
1、资金池模式:每一个P2P客户在支付平台的托管账户没有独立的虚拟账户,或者在项目级有对应每一个项目的总虚拟账户,或者只有一个总的虚拟账户(此种情况一般称为网关模式)。
2、虚拟账户模式:每一个P2P的客户在支付平台的托管账户都有一个独立的虚拟账户。

 

知乎回答原文链接:http://www.zhihu.com/question/27606493/answer/37447829

小型研发团队应该招怎样的人?

Posted in 管理杂思, 产品管理 by chuanliang on 2015/01/19

我在知乎就《小型研发团队应该招怎样的人?》做的回答。

由于小型团队!=资源有限,这里姑且假定题主指的是资源/资金都有限的草根团队,高大上的小型团队可以按照其伟光正的愿景、目标、战略要求高标准筛选各种所谓的牛人,不在讨论范围内。
大 部分小型团队基 本上都属于“等米下锅”的状态:等人、等项目谈定、等产品研发出来、等资金到位,各种“米”不能及时到位,团队可能只能呜呼鸟散,因此对小型团队最大的成 本其实是时间成本,有人快速推动各种事情向前进展并生存下来是第一要务(即便有诸多不完美),因此小型团队初期人才招聘只能无奈地从“矮子中拔大个”。
按照这几年创业折腾的心得,我更愿意招聘如下的人:
1、心态阳光
创业过程中诸多的不确定、不完善、困难、挫折,面对各种压力,单纯只是硬住头皮挺很难挺过去。团队成员有所信仰,愿意相信生命中、人性中有更美好的东西值得为之付出是支撑下去的重要动力。
创业公司最核心的“企业文化”、“团队文化”的形成需要创始团队成员间的换位思考、宽容、感恩、信任,用阳光的心态去面对彼此。
2、有激情、有韧性
3、持续学习,拥抱变化
4、与团队现有成员在能力、性格上互补
5、执行力强
招聘只是第一步,只有为新进入的成员提供持续成长的平台才可能长期留住人,这中间最重要的还是“团队文化”,有什么的团队文化就会留住什么样的人,因此问题的核心还是在于:我们这帮老人要求别人的,原有成员是否能够做到呢?

知乎回答原文链接:http://www.zhihu.com/question/27498534/answer/36904685

Tagged with: , ,

交易系统和风控系统的架构怎么设计?

Posted in 电子商务, 技术相关, 产品管理 by chuanliang on 2015/01/19

我在知乎就《交易系统和风控系统的架构怎么设计?》做的回答。

交易系统和风控系统从架构角度设计,是应该设计成两个单独的系统,题主提到的问题,本质在于交易系统和风控系统之间数据共享及服务调用的问题。
一般通过如下几个层面来降低交易系统、风控系统的耦合度,提升系统性能和扩展性:读写分离、缓存/内存数据库、SOA架构、复合事件处理
数据库读写分离机制:在初期,风控系统一般都极为简单,此时侯一般通过数据库主从复制/读写分离/Sharding等机制来保证交易系统的数据库和风控系统数据的同步及读写分离。风控系统对所需要的客户/账户数据、交易数据一般都只进行读操作。
缓存/内存数据库机制:不 管是交易系统还是风控系统,高效的缓存系统是提升性能的大杀器,一般会把频繁使用的数据存放到Redis等缓存系统中。例如对风控系统,包括诸如风控规 则、风控案例库、中间结果集、黑白名单、预处理结果等数据;对交易系统而言,包括诸如交易参数、计费模板、清结算规则、分润规则、银行路由策略等。对一些 高频交易中,基于性能考虑,会采用内存数据库(一般会结合SSD硬盘)。
RPC/SOA架构:要降低交易系统和风控系统的 耦合度,在初期系统服务较少的情况下,一般直接采用RabbitMQ/ActiveMQ之类的消息中间件或RPC方式来实现系统间服务的调用。如果系统服 务较多,存在服务治理问题,会采用Dubbo之类的SOA中间件来实现系统服务调用。
复合事件处理(CEP):对实时/准实时交易风险控制,相对于纯基于规则的处理模式,采用复合事件处理(CEP)模式,性能及扩展性更好,开源的方案包括Esper、Storm、Spark等。
从风控系统构建角度,对应所谓的事前、事中、事后风险控制,作为风控系统最核心的风控引擎分为实时风控引擎、准实时风控引擎、定时风控引擎三种:
1、实时风控引擎&准实时风控引擎
实时风控主要在交易过程对交易过程进行实时监控,一个典型应用场景是甄别钓鱼、盗卡风险。
准实时风控典型应用场景是在T+1结算时候,对商户洗钱、跑路进行甄别。
实时/准实时风控引擎一般采用规则引擎+复杂事件处理(CEP)。
2、定时风控引擎
主要定时对支付/交易/账务等数据进行定时ETL、深度挖掘等处理,建立对应的风控模型,一个典型应用场景是商户的信用等级模型。此时侯一般采用Hadoop、ML等技术进行大数据建模
以前写过两篇关于第三方支付风控系统建设的文章,供参考
支付系统风控系统建设思考
复杂事件处理(Complex Event Processing)入门1

 

知乎回答原文链接:http://www.zhihu.com/question/20860347/answer/36328342