青鸟100问

产品经理必须懂的技术知识!
北大青鸟总部

摘要:产品经理必须懂的技术知识!

在互联网行业中,最重要的人员莫过于研发工程师,有了程序员的代码,才能跑起来应用,提供产品和服务给到用户。而我们程序员哥哥们又爱又恨的便是产品经理了,产品经理就是给程序员提需求的人,通过原型图绘制出整个功能的雏形、用户使用路径,然后交由程序员去实现。

2345截图20200601092109.png

不过现在的互联网产品经理从业者大部分是非技术出身,有心理学专业、新闻专业、广告专业等等的人员加入,在他们与研发工程师进行交流时,往往就会出现GAP了。产品经理觉得这个需求很简单啊,我只是想要手机屏保随着天气变化,我只是想增加个搜索功能,我只是想做个条件过滤,几行代码就可以搞定了,而到了程序员这边,这个需要改动底层架构,那个需要兼容历史版本,最后这个需要改变数据结构,起码得一周以上才能搞完了,哪里这么简单呢?于是乎程序员和产品经理开始厮杀起来,整个需求从开发到上线的过程不是你死就是我活,场面一度很惨烈,像这样的例子数不胜数。


今天我们就给大家介绍一下作为互联网产品经理必须要懂的一些技术知识,它能帮助你在自己设计需求时初步就能评估需求实现的难度,结合技术想出更多的可行解;它也能帮助你在需求评审、项目排期时,更好的与开发沟通,了解到这个需求是不是真的做不了,实现成本很高(免得被开发一句“做不了”就怼回去了);它还能帮助你在用户验收测试时比较准确的描述出问题。


互联网产品经理必备的知识我们可以从需求的产生到上线这条线来介绍,在需求设计及评审完之后,第一阶段是开发;第二阶段是联调;第三阶段是测试;第四阶段是上线


开发阶段,我们要懂的第一个知识便是代码仓库与分支。无论前端、后端、测试这三个角色都会涉及到,前后端基于代码分支进行开发,测试基于代码分支进行测试。那么分支是什么呢?分支就是我们的代码版本记录,它存在代码仓库里,有新项目开发时就新建一个代码仓库,开发新需求时就在仓库里建立一个分支,每次在本地写了代码后,就通过分支提交。程序员们约定俗成的使用master分支来存放生产环境的代码,比如我的APP现在有浏览、下单、支付功能,我想新开发用户注册功能,那我就需要在master分支上切出来一个feature分支,这时候feature分支包含了master分支的代码,也就包含了浏览、下单、支付功能,我再在feature上写了用户注册的代码,这时候feature分支就包含了注册、浏览、下单、支付功能了。测试人员使用feature分支进行测试,测试通过之后,再把feature分支的代码改动部分合并到master分支,进行新版本的发布,这时候master分支就包含了注册、浏览、下单、支付功能了。所有的新功能开发从master切出分支,开发完成后合并到master发布,这样就保证用户看到的功能是一致的了。目前业内常用的代码开发管理工具是GitHub、GitLab。作为产品经理,当程序员和我们讨论在哪个分支做开发时,你只需要告诉他我希望用户能使用的功能有哪些就可以了,开发人员会根据产品经理希望上线的需求选择在什么版本上去做开发,产品经理也可以根据本片段讲解的分支知识来佐证想法。


开发阶段,我们要懂的第二个知识便是前端开发。作为产品经理,我们能感受到的就是前端页面,通过整个的布局、交互来感受这个功能如何传递给到用户。而在和前端工程师打交道时最长听到的名词莫过于组件了。在了解组件之前,我们先了解下前端页面是如何生成的(本篇介绍web前端开发)。我们的用户都是基于浏览器来浏览网页,所以前端开发也是基于浏览器引擎去做的。假设我们现在要开发淘宝的首页,这时候前端工程师会给它做一个布局,将整个屏幕规划一下,哪些是横着、哪些是竖着;在布局规划好之后,给页面写内容,在哪个地方查看什么品类的衣服,哪些地方放男装,女装,颜色、字体、大小怎么样;最后再处理用户点击后是去进行支付环节,如何成功完成支付,全完事后通过浏览器访问,底层浏览器引擎去DOM渲染,就加载出来页面了。在搭架子阶段使用HTML和CSS语言就可以搭建起来模型,而用户可以去点击做什么操作使用JavaScript技术可以实现,用户操作后可以得到什么结果就通过后端接口可以返回。


划重点,在前端开发中的两个字段便是组件和接口。可能有的产品经理同学在和前端打交道时,总听他们提起这个组件不支持啊,后端接口没有到位啊之类的,但对于组件和接口还很陌生。我们先来看看组件是什么?当前端在去开发一个产品时,需要写很多的页面,每个页面的元素总有一些是共通的,比如都需要按钮、下拉列表、搜索、帮助提示、输入框等等,如果每个页面的这些内容都去重新写一遍,代码很冗余,前端也很累。于是聪明的前端同学便把这些可以复用的部分抽象出来,专门写了支持这个功能的html、css、js代码,以后在其他模块要使用时,直接引用这个组件库就好了。介绍完了组件,我们再来看看接口是什么?我们知道一个产品只有前端,那是无法完成用户流程的,只能看看点点,不能更进一步了,因此需要后端来去实现业务的逻辑,并通过接口把信息发回给前端做反馈。比如在电商购买场景中,用户浏览看到nike的鞋子不错,选中了蓝色、37码的AJ,这时候需要前端把这些商品信息通过接口传递给到后端,后端接收到这些参数后,通过把参数套进自己写的函数里,一步步的实现了数据库的增删改查,也就是支付、下订单、减库存,最后返回前端交易的结果,前端再处理返回给用户。


开发结束了,就进入到了联调阶段。在联调阶段,主要做的事情就是前后端联同起来看看,双方写的前后端代码能否交流,数据格式是否符合预期?数据能否传递给到后端?是不是正确实现了功能。联调介绍后,研发把他们的代码开发分支提交,告诉测试人员可以测试了,测试人员就去找到对应的测试分支进行测试。


在测试的时候,最重要的两个便是打包和环境了。所谓打包就是把程序员写的代码通过打包工具编译成为运行环境可以识别的产物,在前端开发中会把代码写在很多文件里,把文件转化成html代码时,需要引入js代码,这样会使得每次请求都需要加载页面,从而导致性能损耗增加,通过把各种前端资源打包成一个整体,页面请求只需要一次就可以完成,提高了性能。前端代码的事情说完了,就该聊后端的事情了,后端的代码要运行起来需要一个环境,环境包含机器、操作系统、运行要用的数据库、其他软件、业务代码运行的工具(如tomcat容器、Docker容器),后端代码开发完成之后,会把代码通过构建工具编译成一个jar包或镜像文件,放在对应的环境里去运行。测试人员在环境里把前后端的包部署上去,再通过浏览器就可以访问新开发的功能进行测试验收了。


测试通过后,就进入到了上线阶段。上线阶段主要参与人员就是研发和运维了。研发把代码分支内容合并到master分支,打包。运维在服务器(可以是自己买的,也可以是在阿里云腾讯云华为云等租用的)上部署包运行起来需要的环境,包含操作系统、数据库等等软件,部署好了之后,用户再次访问产品页面时就是最新开发的内容了。此后如果用户在使用产品时打不开页面了、使用缓慢了,直接反馈给到运维人员,运维人员排查如果是机器资源问题,就申请新的机器,再部署一套服务,满足更多的用户可以访问;如果是业务问题,就反馈给到测试人员和研发人员进行解决。


本文介绍了产品经理在工作全流程中需要和技术打交道的内容,看完之后是不是收获满满啊?其实在产品经理的世界主要是概念层(关注目标)、范围层(关注功能)、结构层(关注交互设计&信息架构)、框架层(关注界面设计&导航设计&信息设计)、表现层(关注视觉设计),而技术人员的世界主要是逻辑层(关注业务流程&功能模块)、实现层(关注具体实现函数)、接口层(关注功能&页面&模块之间交互的通道)、数据层(关注数据库执行结果)、架构层(关注技术架构&调用关系&技术规范)。处于不同世界的人在互联网产品这有了交集,如何才能协作的更好呢?那便是多了解彼此一些,技术人员在交流的时候浅显易懂,产品经理也多了解技术知识,明白技术人员在表达什么?他们的工作逻辑是怎么样?这会帮助双方都工作愉快噢~


相关阅读
产品经理必须懂的技术知识!
互联网团队四驾马车之产品、研发、测试、运营如何协同办公?
热门推荐