懂技术对于产品经理来说有诸多好处,这并不是为了让产品经理变成研发,其主要目的在于降低产品经理和开发的沟通成本。要想了解技术,首先需要知道技术源头在哪里,本篇文章分享了相关的技术基础知识,希望能对你有所帮助。
产品经理在技术那人人平等,但如果你懂点技术,你会比其他人更加平等。
懂点技术的好处毋庸置疑,作为公司中最受技术欢迎的产品经理,现身说法。简单来说,因为你要和技术对接,如果你知道他们平时在怎么做事、核心在关心什么问题,那会让你们沟通成本大大降低。
所以,明确目的,我们懂技术是为了降低沟通成本,而不是为了自己变成研发。当然如果你从此激发了兴趣,那算另一回事。
一、要懂技术,那技术的源头在哪里
技术同学的能力并不是从石头里蹦出来,一出生就有的。简单来说,绝大多数技术的起点都是因为大学选了计算机专业而已,大家都是平常人,不存在什么“技术有不同于常人的思维”。所以想了解技术,我们只需要知道他们大学学了什么就能有个大概轮廓。
那么计算机专业到底在学什么,又是为了解决什么问题呢?
下面是一些底层知识,虽然没法直接应用,但能帮助你了解计算机世界的大体轮廓。
想看实际运用的同学,就跳到下一个标题处吧~
那首先,我们来说计算机要解决什么问题,可以这么认为:计算机的发明就是为了处理数据。
我们可以把计算机想象成一个黑盒子,盒子一头是“输入”,另一头就是“输出”,盒子内部就是“处理过程”。比如我们让小朋友计算“1+3等于几”,那这个问题就是“输入”,小朋友比着手指一个个数的过程,就是数据的“处理过程”,最后他说是“4”,那就是“输出”。
整个计算机专业的核心原理就可以概括为“输入”、“处理过程”、“输出”。
但这种模型还是过于粗糙,为了进一步了解,我们就来看看计算机专业的四大专业课吧。这四位天王分别是:《计算机组成原理》、《计算机操作系统》、《数据结构与算法》、《计算机网络》。
它们共同组成了我们熟知的计算机世界。那它们是怎么配合的呢?
众所周知,计算机是由硬件和软件两部分组成的。
《计算机组成原理》书入其名,讲述的是怎么用硬件来组成一台计算机。
拓展一下:计算机硬件中最核心的就是晶体管。晶体管的本质就是一个开关,它有三个种类:与门(and)、或门(or)、非门(not),通过这三种逻辑控制电流的输入、输出,人们就在这个基础上,搭建了无比复杂的计算机世界。
《操作系统》讲述的是配置在计算机硬件上的第一层软件,比如window、Linux等等。
我们把《计算机组成原理》和《操作系统》组合在一起,就得到了一台PC机。
而无论表现形式多么不同,人们使用计算机的最终目的就是处理数据。
比如你玩王者荣耀会看到伤害数字、刷抖音背后支持你的是推荐算法。你可以把计算机里流动的数据想象成一个个Excel表,那游戏和抖音的表格肯定不一样,研究如何组织、提取这些数据的就是《数据结构与算法》了。而不同的《数据结构与算法》决定了计算机处理数据的效率。
上面说的都是单独的计算机,那研究如何把单独的计算机组织起来,成为“互联网”的就是《计算机网络》了。
至此,《计算机组成原理》、《计算机操作系统》、《数据结构与算法》、《计算机网络》就组成了计算机技术中最核心最基础的知识。
在我们实际工作中,产品经理用到最多的就是《数据结构与算法》、《计算机网络》了。
二、了解你需求的数据结构
用研发的语言定义好你需求的数据结构,就能帮助研发快速理解你想要啥,极大降低沟通成本。而且,这种方法我亲身实践过,非常简单。
数据结构分两种,基础数据结构和复合数据结构。基础数据结构就像不同形状的砖块,复合数据结构就是用砖块自由设计搭好的房子。
基础数据结构和实例
那首先看下基础数据结构,比如:
你需要整数,就给研发说要:int
需要小数,就说要:float,最多保留X位
要文本,就说:str,或者说“字符串”
如果是想表示要么是“true”,要么是“false”,这种二选一的情况的,就说此处是个“布尔值”
比如,像这种需求描述:
练习试次:游戏中的操作次数
正确率:游戏的正确率
你就可以改为:
练习试次:int,含义是游戏中的操作次数
正确率:float,最多保留1位小数。含义是游戏的正确率
还有像这种:
在进度条区域,根据单元完成情况配置一条文案描述
单元全部完成:今日训练已全部完成!
可以改为:
在进度条区域,if 单元状态==已完成
展示一条str,内容为:
“今日训练已全部完成!”
这样的好处就是改起来很方便,研发同学也容易找到重点。
不过在基础数据结构中,我日常用的最多的,其实是“变量”这个概念,因为我们需求中的文案可能常会变来变去的,所以用变量提前把它标示出来,给研发同学一个心理准备,是不错的选择。
比如,在开发一个报告的需求时,我会这么告诉研发:
【】里面是 变量
再生成一个表格,一列title为“内容”,比如:
【报告完成日期】,【用户名称】完成了【测评报告名称】
一列title为“数据结构”,比如:
【报告完成日期】 实例: 2023年1月21日
【用户名称】
If 是后台生成的随机id: 则【用户名称】==“孩子”
If 是用户手动改的值: 则【用户名称】==【用户手动改的值】
【测评报告名称】 值==“暂未确定,待确定后@相关人员”
说完了应用,我们来唠唠为什么有数据类型这回事。主要是因为计算机能处理的数据太多样了,如果啥类型都不分,找起来很难找,比如,文本、图形、音频、视频、网页(就好像最近大家常提的AI的多模态能力一样),你可以直观感觉到它们的类型不太一样。
人脑处理复杂信息能力有限,而分类,就是为了更好地开发。
三、复合数据结构和实例
你有可能看到研发在群里发过类似的东西:
{“name”: “John”,
“age”: 30,
“isStudent”: false }
这种由花括号括起来的玩意就是复合数据结构,它叫做JSON。你可以把JSON这种格式理解为TXT之于文本格式。
JSON在Web开发被中广泛应用于前后端通信、配置文件、数据存储等场景,也就是说它在前端、后端、运维、测试、数据分析那都是通用的。
那如果我们会用它写需求,可就太方便了。
说回到上面的例子,换你用自然语言表达,可能就会写成:“一个名叫John的用户,不是学生,现在30岁”,和JSON格式对比,还是JSON清晰一些。
以前,你可能会这么写:
“展示由当前单元的全部任务串成的进度条,包含任务icon、任务名称及任务的一级能力名称”。
现在,你可以这样写:
进度条:
{
“任务icon”:png,分辨率待定
“任务名称”:str,长度不超过4个汉字
“任务一级能力名称”:str,长度不超过4个汉字
}
四、进一步,定义你的异常
计算机网络包含了大量异常判定,比如我们常见的“404”,其实就是在说“客户端(也就是发起请求的电脑)请求的东西在服务器上找不到”。
所以,我们看一看计算机网络对异常的分类,就能对大部分异常有所了解。
上面说的“404”学名叫:HTTP状态码,它由三位数字组成,其中第一个数字定义了响应的类别。
以下是一些常见的HTTP状态码及其含义可供你检索:
1. 看到4开头,就是客户端的问题
4xx(客户端错误状态码):请求包含错误语法或无法完成请求。
- 400 Bad Request:服务器无法理解请求的格式。
- 401 Unauthorized:请求要求身份验证。
- 403 Forbidden:服务器拒绝请求。
- 404 Not Found:服务器找不到请求的资源。
2. 看到5开头,就是服务器的问题
5xx(服务器错误状态码):服务器在处理请求的过程中发生了错误。
- 500 Internal Server Error:服务器遇到错误,无法完成请求。
- 501 Not Implemented:服务器不具备完成请求的功能。
- 503 Service Unavailable:服务器暂时无法处理请求(可能是过载或维护)。
五、最后,产品经理需要了解技术到什么程度
要说得出OSI模型的7层结构吗?要能选择出哪种技术实现路线更好吗?
这都是我在面试时遇到的真实问题,实话说,我一向不理解这种问百度一下或者GPT一下就能出来答案的问题意义何在。
产品经理了解技术,目的只是为了和技术在沟通时更方便而已,如果要选出技术路线,不如直接去找个研发。
感谢你看到这里,如果还想了解产品经理的技术学习路径或者还有什么其他建议,请留言。