产品经理的技术思维≠技术能力。技术思维指的是理解基本技术原理的基础上,判断并解决产品问题,能够做到理解技术基本原理、判断技术实现成本,遇到问题建立技术排查思路。
那么,非计算机专业产品如何培养技术思维?简单来说,就是将技术概念转化为具象理解输出,形成思维解析中间件,用自己可以理解的概念代替枯燥的技术概念。比如,『URL』统一资源定位符,就像每一个的指纹一样,具有唯一性;『Token』令牌,访问操作的许可授权,就像家里的钥匙;『XML/JSON』可扩展的结构化数据传输格式,就像写信用不同格式的信纸。
接下来将分为几部分,介绍技术常用概念。
1.程序与功能
2.前端
3.后端
4.数据库
正文:
1.程序与功能
工程师说的写代码,写的是什么?代码是通过一定的程序规则和逻辑结构,让计算机执行的命令。通过包括给代码中的特定标识起名(变量命名)、写出功能逻辑、告诉系统要使用的基础库(组件)、给代码加注释。
1.1写代码其实就是写程序,程序=数据结构+算法。
其中,数据结构定义了数据的类型,如整数int、浮点型float、字符串string等,单一数据项按一定规则形成结构;算法通常包括判断逻辑、选择逻辑和循环逻辑等,通过不同的逻辑结构组合,完整的表达一个具体事务,如登录判断)if else、while等
常见的数据结构如
1)队列:先进先出,顺序执行。常见应用如:消息推送、排队叫车
2)树状结构:唯一根节点,多个末端节点。场景应用如:商品类目、角色权限设计
3)数组:数据按顺序成组,每个数据项都有下标,数据项位置可交换。常见应用如:订单列表、通讯录、商品排序等
4)一键值对:每一个键(key)对应一个值(value),key不能重复。常见应用如:实体对象结构(商品、订单、消息)、参数记录
上述数据结构可嵌套使用,为业务逻辑提供结构化数据管理。
1.2程序是如何组装成功的
方法:程序中的最小执行单元,执行简单的业务逻辑
程序块:多个方法和逻辑处理的集合——程序块,执行相对复杂的业务逻辑
产品功能:多个程序块的组合拼装
1.3技术架构
好的技术架构是稳定、可扩展、易于开发,MVC框架是目前最常用的软件架构方式。具体关系如下图:
Model:模型结构层(数据)
View:视图层(界面元素)
Controller:控制器(逻辑处理)
产品经理通过了解技术架构,在技术上实现组件化架构,避免重复开发(如基础服务组件化)
2.前端(客户端)
常用技术包括:
APP(小程序):Android、ios、windows phone;
网页:html5、wap;
桌面软件:windows、Mac os、linux
2.1web技术
Web技术是用来开发网页的前端技术,包括html、JavaScript语言、css样式及一些前端框架。html页面是骨架,css是装饰的衣服。以下是一些基本概念:
html:超文本标记语言,以标签的形式表示网页组成元素,通过浏览器解析成可视化页面。如:超链接<a href="">链接内容</a>;按钮<input id="brn_01";type="submit"value="百度一下"/>
常用html标签:层(div),用来区分网页结构和区分显示网页元素样式的最常用标签之一,可以理解为不同房价的隔断和风格区分。
css:层叠样式表,定义统一样式风格,给html页面元素进行样式渲染。
web技术上,修改网页内容不需要重新发布,重新部署网页代码即可,进行热更新
2.2http协议
http协议格式:http://www.xxx.com
互联网应用最广泛的网络协议,所有www文件都需遵守该标准。设计http的最初目的是提供一种发布和接受html页面的方法。
客户端与服务器之间的通讯,也是基于http进行数据传输
URL的构成:协议头(https://)、域名(www.baidu.com(对应实际的iP地址))、参数名+参数值
2.3http请求及get和post方法
基于http协议发起的网络请求——http请求,可以携带参数进行传递。两种方法:get方法和post方法。
1)get方法:向指定的资源获取数据,参数携带在url中(可见),参数的长度大小有限制,请求过程参数会被记录在浏览器中,安全性不高。应用场景如:查询、翻页等
2)post方法:参数携带在请求体中(json),参数长度大小无限制,请求过程中参数可加密,安全性较高。应用场景如:提交数据等
2.4cookie和session
1)cookie:存储于客户端本地的文本文件,用来记录个人信息和浏览历史。具备有效期且可以手动清除。应用场景:记住密码、浏览记录、广告推荐等
2)session:服务端生成的访问状态,存储于服务端,用来校验用户身份有效性。可以在服务端设置有效期,客户端无法控制。
2.5web静态页和动态页
1)静态页:静态内容的展示,无需调用接口,仅加载渲染一次
2)动态页:通过数据加载展示数据,一般功能页面都属于
3.服务端
如何获取互联网资源:客户端作为接入载体,访问服务端的数据,服务端提供计算逻辑和内容服务,以数据流的方式进行数据传递。
同一台服务器的服务可能有多个,通过『端口』确定唯一的服务
代理服务器——客户端发起数据请求时,先发到代理服务器,然后由代理服务器发送请求给目标服务器。优点在于:逻辑解耦、提升安全性、便于协调资源
CDN服务:内容分发网络,通过大量服务器来为用户提供就近资源访问。特点:需要海量服务器支持,内容路由分发规则,访问就近CDN节点
3.1服务端基础架构
服务端开发技术包括java、PHP、python等,服务端运行在服务器中,服务器的部署有2种方式:自建服务器机房、云服务
3.2接口与api
客户端之间、客户端与服务端之间的通信都通过『接口』实现。
api:应用程序编程接口,是一个通讯协议,约定了数据传输格式和访问地址。
api=url地址+数据参数。url地址:确定所访问的服务器地址和对应的端口及服务;数据参数:以某一种格式来定义和携带数据。
3.3JSON和XML
两种数据存储格式,如下
JSON(常用):
"username":"Ryan",
"password":"123"
XML:
<username>Ryan</username>
<password>123</password>
3.4api和sdk
api:url地址+数据参数;
sdk:软件开发包,是一些列开发工具(api)的结合。不同的平台和技术对应不同的sdk版本,集成sdk时,应用程序通过调用不同的sdk接口来实现多样化的服务
api是一项单独能力,通常一个api对应一个能力接口,如定位API、登录api。sdk则将一系列的api集合封装,以软件包的形式对外提供服务。应用程序调用集成的sdk中的api接口
3.4服务端和客户端的数据交互:请求响应模型
每一次请求都由客户端发起(通过http请求访问对应的api(url)),并携带参数(json/xml),服务端接收并完成业务逻辑和数据处理,将结果返回客户端。
3.5生产与测试环境
服务端程序运行在服务器中,可分别配置生产和测试环境,通常通过访问服务器的ID地址不同来划分。
如生产环境:http://192.168.0.1/myserver
测试环境:http://127.0.0.1/myserver
在做新老版本的兼容性测试时,测试环境和生产环境都需要做
4.数据库
4.1数据库:数据库运行在服务器,属于后端的一部分。服务端程序处理业务逻辑,然后调用数据库进行数据操作。
数据库常见分类:关系型数据库(MySQL、sqlserver)、非关系型数据库(mongoDB)
数据库如何工作:被服务端调用(通过SQL语句),进行数据增删改查。数据库运行在服务器,数据存储在服务器硬盘上
数据库表由很多字段组成,字段是实体属性的映射。每一个字段都有对应的字段类型(如整数、日期等)。
数据库字段和字段类型是设计接口的基础,接口里的参数和值对应的就是数据库的字段
数据库各个表之间,通过『主键』相互关联,表结构的关联关系包括1:1、1:n、n:n
数据如何呈现到客户端界面:客户端调用接口发起请求,服务端处理查询数据库(使用SQL语句),数据库返回查询结果到服务端,服务端返回所需数据至客户端
SQL语句:结构化查询语言,嵌入在服务端程序中,对数据库进行操作,常用语句包括增删改查
4.2数据库表索引:基于数据库表某一列或几列建立的目录结构,极大提高检索效率,无需遍历整个表进行查询。但需要耗费一定的物理存储空间单独维护
例如这样一个查询:select * from table1 where id=10000。如果没有索引,必须遍历整个表,直到ID等于10000的这一行被找到为止;有了索引之后(必须是在ID这一列上建立的索引),即可在索引中查找。由于索引是经过某种算法优化过的,因而查找次数要少的多。可见,索引是用来定位的。
5.与工程师的高效沟通
三个原则:
重事实:现状、问题和方案(可行性)
讲逻辑:分支覆盖、遍历完整、冲突性
确定性:工作量、周期、风险预估
瞄准问题,少讨论现象,多关注问题
举例:
现象:登录不上去;
问题:网络故障?后端服务故障?前端处理异常?;
方案:网络排查、前后端分别排查,解决
注意:给工程师提需求,需要材料备齐全(页面原型、功能交互流程图、接口URL及对应参数、视觉稿、素材、标注等),不要迷信文档模板,重在把背景、方案、素材说清楚
如何评估工程师工作量?工程师的工作可能包括以下内容:
pm无需精细化评估,按系统、模块和页面,结合过往经验去评估
尽可能在实现过程中,技术组件化,降低评估工作量难度。在考虑方案的实现过程中,主要涉及:
1.数据结构调整(数据库、接口)
2.页面调整
3.逻辑兼容(新老版本)
最后,技术思维提升途径主要如下:
1.需求评审时,记录rd的问题反复思考
2.阅读数据库设计文档及接口文档,建立认知
3.产品升级和设计调整时,了解其技术细节
——起点学院学习总结