1. PmTemple首页
  2. 产品经理

产品经理要懂的「技术那些事」

产品经理是否要懂技术?要懂到什么程度?

非技术背景如何与研发沟通?工程师口中的“黑话”到底是什么意思?

本文是作者的课程笔记,刚好能解答以上问题,适合对技术基础知识不太了解的朋友,建议收藏~

01

产品思维与技术思维的对比

产品经理需要懂的技术

02

技术思维在产品设计中的应用

产品经理需要懂的技术

03

核心观点简单一览

1、产品经理为什么要懂技术?

1)当谈到一些技术专有名词时,不至于“一脸懵逼”。
2)当谈论一些技术实现方式(如:Html5应用与Native应用)时,有些参与感!
3)当产品出问题时,知道是客户端问题还是服务端问题?
4)知道技术边界在哪里,不至于“天马行空”。
5)避免设计好的产品在开发评审时遇到研发人员的挑战(接口不匹配、结构调整过大…)
……

2、产品思维与技术思维
产品思维先行,技术思维是确保产品能成为现实的有力前提和必要工具,优秀的产品往往是扎实的技术基础和良好的用户体验相结合的产物,是产品思维和技术思维的结合体!
产品思维:从用户价值出发,在满足商业战略和业务目标的同时寻求产品路径满足用户需求;
技术思维:从功能和工程实现出发,在满足产品需求的同时需求可复用技术架构和低开发成本;
3、产品经理对技术要懂到什么程度?
1)产品经理需要的是“技术思维”,而非“技术能力”。
2)会写代码不是目的,能判断功能复杂度才是目标。
3)技术思维是一种严谨的逻辑思维,强调遍历与穷举。
4、非技术背景产品经理如何与研发沟通?
1)成为沟通组织者,而不是命令或质问方。
2)明确问题,协同参与方聚焦解决方案达成一致。
3)遇到不懂的技术问题,多引导和转移,多请教和理解。
懂用户比懂产品重要,懂产品比懂技术重要;
考虑对数据数据结构和接口的影响,考虑工作量和兼容性;
4、从技术角度判断产品需求的参考原则

1)做新需求比改老需求相对容易。
2)业务逻辑越复杂,对应的技术解决方案就越复杂。
3)对原有产品方案做需求变更,会涉及到新老版本数据兼容问题。
4)产品的几句话,可能意味着研发几天的工作量。

5、技术思维在产品设计中的应用

1)如何判断客户端技术实现难度?

界面复杂度、布局方式(适配问题)、原生控件or自定义控件…

2)功能调整时需要考虑什么?

功能和界面变化、数据结构调整、新版本和旧版本的兼容性以及过渡方案…

 

04

整体知识架构

*在公众号后台回复“技术”,即可获得高清大图
产品经理需要懂的技术

05

普及一些简单常见的概念!

1. 类、对象、抽象和实例
在技术的世界里,有一类编程语言叫面向对象编程,例如典型的面向对象语言Java。说到面向对象,不得不提的几个概念是类、对象、抽象和实例。这些技术术语会经常在工程师的讨论中出现,非技术背景的产品经理该如何理解这些概念呢?接下来具体介绍这些技术术语分别代表什么意思。
首先介绍第一个概念“抽象”。
我们说某一个概念听起来非常抽象的意思是不具体的事物,对应的反义词是具象。抽象在技术术语里的意思是提炼出一个通用模板,然后基于模板做具象化的实现。例如,在现实世界中关于人的分类,会有男人、女人、老人和小孩,如果将这个具体的分类抽象出一个类别,得到的抽象结果就是人。
所以,人就是一个抽象出来的分类,也就是技术术语里面的“类”。在编程语言的世界中,通过程序语言描述现实世界中的事物时,使用的就是抽象的方法,将一类事物抽象成一个类,就得出了程序世界中的一个基本模型。
有了基本模型后,可以基于抽象出来的模型(类)产生很多具体的实例,也就是基于类实例化的具体对象。例如,将“人”这个类实例化为两个对象,分别是男人和女人,也可以实例化为其他对象,例如小孩和老人,甚至可以实例化为具体的人,例如Maggie和Ryan。这一系列的过程如图所示。
产品经理需要懂的技术
从上述流程中可以看出,工程师做的工作就是根据产品需求将现实世界中的事物抽象成程序世界中的一个个类,然后根据需要实例化很多对象,不同对象间通过相互协作完成一个具体的产品功能。
非技术背景的产品经理在工作中也可以试着以这种技术思维的方式定义产品需求,先从产品角色开始抽象出具体的类,然后分别定义这些角色在整个产品流程中需要完成哪些关键动作,从而定义出具体的对象。这样既有利于明确需求和用户角色,也能培养非技术背景产品经理的技术思维。
2. 工程师口中的“打印”是什么意思
在与工程师的配合中,你一定听说过“打印”这个词,通常场景是在调试产品问题或进行开发测试时。工程师口中的“打印”和我们使用打印机打印文件究竟有什么区别呢?对非技术背景的产品经理而言,听到这个既熟悉又陌生的词汇时,该如何理解呢?
首先,“打印”这个词在大多数场景下是指我们将文件或图片通过打印机从计算机世界输出到现实世界中,意味着一种结果的输出。工程师口中的“打印”一词,表示的是一种结果输出,只是这种结果并不会输出到现实世界,只是将程序运行的结果“打印”到命令控制台上。
工程师在编写程序代码时,需要不断测试程序片段运行是否正确,例如编写一个加法的程序片段,当代码编写完成后,工程师需要测试加法程序是否运行正确,所以会输入两个参数然后查看程序的运行结果,程序运行结果输出到命令控制台的过程就叫作“打印”。
工程师在调试问题程序的过程中,也会经常用到打印技术,将每一块代码的执行结果输出到控制台,用来查看具体问题出在哪个环节。因为代码的运行过程是不可见的,所以通过“打印”的方式能让代码的运行过程和结果可视化。
3. 工程师口中的“写死”是什么意思
在与工程师讨论产品需求或者工程师相互讨论技术方案时,经常会听到“写死”这个术语。“写死”这个词严格来说不算一个标准的技术术语,而是工程师用来描述一种技术实现方案的说法。
例如,要设计一个下拉选择框用来切换不同的城市,这个产品需求在技术层面有两种实现方案,第一种是将城市数据放在服务器端,客户端通过请求数据接口将城市数据获取回来再显示在下拉列表中。第二种是将城市列表数据存放在客户端,客户端从本地读取城市列表并展示在下拉列表中。
第一种方式是一种相对灵活的方案,当城市数据有变化时,只需要调整服务端的数据内容即可,客户端不用做任何修改,但需要开发一个专门的数据接口获取这部分数据。第二种方式就是工程师所说的“写死”,将数据集写死在本地,这样可以省去数据接口的开发,也能快速实现想要的效果。
这两种不同的实现方式在很多产品设计环节中都会体现,例如一些客户端的文案或者图片会经常变化,这时就不太适合将需要变化的数据“写死”在本地,合理的方案是将变化的数据存储在服务端,客户端通过数据接口灵活地获取这部分数据。
当然,也不是所有的数据都不适合“写死”在本地,例如性别数据,无非就是男和女,不必专门为了它开发一个数据接口,我们得根据具体需求和使用场景判断哪些数据应该写死。
4. 架构和框架
架构和框架是工程师经常提及的两个技术概念,另外,在技术职能中还有架构师这一岗位。对非技术背景的产品经理而言,该如何理解和区分这两个技术概念呢?通过一个例子就可以非常直观地理解二者。在修建房屋时,会有一个总设计师负责设计整体蓝图和规划,这个工作可以理解为是架构师的工作,而房屋设计结构和规划本身是房屋的架构。
架构工作完成后就进入具体的施工环节,施工时可以选择从头开始一砖一瓦的加,也可以使用现有的房屋框架,基于成熟的房屋框架一层一层累加,后期只需要做整合和装修工作即可使用现成的框架,既能降低施工难度,也能提高施工效率。
在技术领域,架构这个词是对系统的结构设计和规划,通常由经验比较丰富的架构师或者高级工程师完成,架构的好坏直接决定了后期系统的稳定性和可扩展性。框架则是指利用现有的成熟技术框架简化开发过程,例如针对企业级应用的开发框架J2EE,就提供了很多现成的组件来降低开发的复杂度,如今很多系统的开发都会使用一些比较成熟的开发框架替代纯自主开发,这样既能保证系统质量,也能提高开发效率。
5. 控件和组件
任何一个网页或者App产品都是由大量的输入框、按钮、文本展示框构成的,产品中的这些最小界面元素组成单元就叫作控件。一个按钮是一个控件,一个输入框也是一个控件。如图所示为几个基本控件(输入框、文本展示框和按钮)。
大部分产品都设计为底部有几个模块,点击不同的底部按钮可以在不同的模块之间切换,实现展示和切换的就是Tab组件,它包含了页面容器展示、按钮等一系列功能,将这些细粒度的控件组合到一起来完成复杂功能,这就是组件。
6. 进程与线程
工作中经常会听到工程师讨论进程和线程。例如,涉及一些复杂功能的技术实现方案时,工程师会说现在已经同时开了几个线程在处理。进程和线程究竟是什么?它们之间有什么关系呢?本节主要介绍进程和线程的概念。
当我们点击手机屏幕上的一个App按钮(启动一个产品)时,系统会为这个产品的运行分配系统资源(例如CPU和存储空间),分配好资源后,产品会在这个资源区域运行应用程序。这里所说的运行应用程序就是进程,也可以理解为每一个正在运行的App都是一个进程。
例如,我们在手机上使用微信或者微博,就有分别属于微信和微博的系统进程。一旦关闭应用程序或因为系统资源紧张而自动关闭在后台运行的应用程序,进程就会被终止,同时对应的进程所占用的系统资源也会被释放。
相比于进程,线程是一个更小的执行单元,一个运行中的应用程序是一个进程,一个进程中可以存在多个线程,每一个子任务都可以理解为是运行中的一个线程。我们以微博为例,运行中的微博是一个系统进程,可以上传照片发布微博,也可以上传视频发布微博。
用户上传照片的任务在一个独立的线程中运行,上传视频的任务也在一个独立的线程中运行,并且这两个任务可以同时运行互不影响,这种方式叫异步线程处理,即可以并行互不干扰完成各自的子任务。当然,还有一种线程处理方式叫同步线程,即子任务是按照一定的顺序完成的。
产品之所以能同时完成很多功能,就是因为线程的存在,尤其是涉及需要网络请求的一些功能时,例如用户在微信中发布朋友圈后有可能立马去刷新朋友圈,这时可能刚刚发布的内容还没有上传成功,所以在技术实现时会用两个线程分别处理发布和获取新信息的子任务。这样做既能保证用户体验,也能保证系统资源被合理地分配和利用。 
7. 什么是“脚本”
“脚本”这个词在工程师口中出现的频率比较高。当需要对数据库进行批量处理时,工程师会说“跑一个脚本统一处理一下”;当需要查询某一数据报表时,工程师会说“用一个脚本批量查询”。
脚本也是一种被计算机执行的程序,为什么叫脚本呢?可以把脚本理解成拍戏用的剧本,剧本里会按照角色及对白把要拍的戏清晰地列出来,导演和演员会严格按照剧本表演。脚本就是一种面向计算机的剧本,是一个可被计算机执行的文件,文件里是一系列计算机指令,这些指令会按照顺序被计算机解析并执行。
例如需要对数据库中所有用户数据添加一个数据项,一个一个添加显然是不可能的,通过一个批量操作一次性地完成是效率最高的做法,此时就会用到脚本。通过脚本写一个新增数据项的命令,然后执行脚本,所有的数据就会被批量执行同样的操作。
8. 同步处理和异步处理
同步和异步是开发技术中的两个概念,计算机通过解析和运行程序完成相应的操作。在程序执行过程中会涉及同时处理多个任务或者同一时间只处理一个任务的情况。在前面的章节中我们介绍过什么是进程和线程,一个进程中包含多个执行任务的线程。
以用户登录为例,登录任务是在一个登录线程中执行的,登录任务执行过程中除了验证用户名和密码是否正确外,还需要处理其他子任务,例如从服务器获取用户信息,更新本地缓存信息等。这些子任务通常会在新开辟的子线程里执行。执行登录的线程可以称为主线程,执行获取用户信息的线程称为子线程。
在一个登录操作过程中分别执行两个任务,这个过程就叫作异步处理。异步处理不会造成线程阻塞,相当于各自处理各自的任务。如果所有的任务都在一个线程中处理,那就会出现资源占用过多和响应时间过长的情况,例如我们在使用一些安卓APP时偶尔会出现应用程序闪退的情况,这有可能是因为出现了线程死锁。
同步处理比较好理解,就是同一时间只执行一个简单任务,任务处理完后再执行第二个任务,同步处理适用于一些顺序执行的任务,例如流水线处理就是典型的同步处理,流水线上的一个环节处理完成后再处理下一个环节的任务。
9.原生开发(Native)和网页开发(H5)
Native是利用原生控件进行开发的意思,所谓原生控件就是操作系统自带的UI控件,例如Android和iOS操作系统本身提供的按钮、输入框、列表控件等。Native开发的优势是体验较好,而不足是每次更新应用需要重新发布新版本。
H5是利用HTML和CSS等技术进行网页开发,网页运行在浏览器中,所以只要有浏览器环境,H5就能运行。比如在Android和iOS应用中可以继承浏览器组件,然后在APP中直接访问H5页面。H5开发的优势是可灵活更新,不需要发布新版本,而不足是体验相对于Native来说没有那么好。
10.数据接口(API)及数据传输格式(XML、JSON)
API全称应用程序接口,是客户端与服务端之间的通信接口,比如登录功能,发起方式客户端,调用服务端开放的登录接口,然后进行数据传输和验证,期间完成数据请求和数据响应。API是服务端开放出来的应用能力,例如登录接口、支付接口、分享接口等。举一个形象的例子,接口就是墙壁上的插头,有两口的也有三口的,这项能力是由电网对外开放的能力。
JSON和XML都是数据传输格式,客户端向服务端发起请求后,需要将客户端的数据传输给服务端,而JSON和XML就是扮演数据载体的角色,JSON和XML是一种数据格式,好比两种不同格式的信纸,同一种数据内容分别可以以这两种不同的格式来进行传输。
11.什么是SDK(软件开发包)?
SDK全称是软件开发包,常见的比如百度地图SDK、微信支付SDK等。SDK是软件开发商封装自己的一些基础服务后,对外提供的一种软件开发工具包。目的在于省去第三方应用开发者的开发成本,使用现成的软件能力来服务于自己的产品。
例如百度地图SDK,提供了完整的地图展示、导航、定位等功能。作为第三方开发者,只需要调用SDK里的接口来使用这些服务即可,不需要自己从头开始来开发这些功能,极大的降低了开发成本,而对于SDK厂商来说,扩展了自己的生态圈,也丰富了用户群。
12.什么是URL?
url是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
基本URL包含模式(或称协议)、服务器名称(或IP地址)、路径和文件名,如“协议://授权/路径?查询”。
第一部分——模式/协议(scheme):它告诉浏览器如何处理将要打开的文件。最常用的模式是超文本传输协议(Hypertext Transfer Protocol,缩写为HTTP),这个协议可以用来访问网络。
第二部分——文件所在的服务器的名称或IP地址,后面是到达这个文件的路径和文件本身的名称。服务器的名称或IP地址后面有时还跟一个冒号和一个端口号。它也可以包含接触服务器必须的用户名称和密码。路径部分包含等级结构的路径定义,一般来说不同部分之间以斜线(/)分隔。询问部分一般用来传送对服务器上的数据库进行动态询问时所需要的参数。

本文来自PMCAFF,本文观点不代表PmTemple立场,转载请联系原作者。原文链接:

发表评论

电子邮件地址不会被公开。 必填项已用*标注