场景一:“这个需求做不了,你想其他产品方案吧”——其实是程序员觉得开发起来太难或者太麻烦而糊弄产品经理。在你转身准备离去的那刻,不巧你眼角的余光瞟到他轻蔑上扬的嘴角:“憨憨”。场景二:“你一点技术都不懂,这个方案太奇葩,按照目前的技术框架无法实现,键盘给你,你来敲”——因为确实无法用技术实现,并向你投来鄙视的眼光,看着你默默走开的背景,他缓缓的放下了双手侧举的键盘。 有些朋友可能遇到过我在上方提到的两种情况,这也是很多不懂技术的产品经理会担忧的难题。要么程序员因为太难或太麻烦而不想做需求,就欺负你不懂技术糊弄你;要么就是你提的需求太天马行空,没有考虑技术实现的可行性,落的被程序员鄙视的下场(可能还会被打)。这也是为什么我们经常听到网上关于产品经理和程序员之间的吐槽段子。 那么问题来了,产品经理到底要不要懂技术呢?应该懂多少呢?个人认为不需要深入到会写代码,但要去了解技术,至少要知道技术实现的基本原理。产品经理懂技术不仅能有利于自身的产品决策,而且在和程序员沟通需求方案的时候,你就会更容易理解程序员的意思,同时程序员也能够很好的理解你说的话。大大提高与程序员的沟通效率,从此妈妈再也不用担心我被走夜路不安全了呢(#^.^#) · 正 · 文 · 来 · 啦 · 接下来就是技术干货,通俗易懂,让零技术基础的人看完后都能明白基本的技术实现原理。 本文就以一个简单的开发技术架构展开来说,如下图:
接下来分别讲讲每一层的含义和原理。 第一层:前端服务 前端服务就是产品最终展现在用户眼前的样子,有多种形态,比如APP、WEB前端(web网站—电脑上的网站,wap网站—手机上的网站)、PC客户端、小程序、快应用等等。 完成一个前端产品的步骤基本分为3大步: 1、画页面的样式(样子):所有的页面样式都是前端开发工程师画上去的,虽然有一些前端框架可以直接用,但是页面细节还是需要按照实际需求调整,比如页面的布局、按钮的颜色、栅格栏的间距、字体的大小等等; 2、页面逻辑(逻辑):一个前端页面画好之后,如果没有写入逻辑,那只能算是一个静态页面,就好比是一张静静的图片,什么动效都没有。如果我们想要页面产生交互效果,比如点击按钮实现什么效果,输入信息的验证、页面之间的跳转等等,就需要程序员写入大量的前端处理逻辑。 3、前后端交互(数据闭环):页面画完了,逻辑也写好了,但是还差一个东西——数据!数据要从哪里来?比如点击用户头像,进入该用户的个人信息页面,用户信息这个数据从哪里来?这就是由后端服务提供的。 前端向后端服务发起一个HTTP请求去问后端要数据,后端接受请求后就向前端提供对应的数据。同样的,如果前端修改一个信息后点击提交,也会发起一个HTTP请求给后端,由后端处理完之后再反馈给前端。 刚才提到了,产品可以呈现为多种形态,接下来就讲讲常见的几种: 一、APP 目前市场上APP主要分为IOS版本和安卓版本。由于手机操作系统的不同,程序员写代码时使用的语言也不同,安卓APP用的主流语言是JAVA,IOS则是用object C开发。这就是为什么公司里面有安卓工程师和IOS工程师的区分。当然也有牛逼哥拉斯的程序员一人同时干安卓和IOS的活,不过头发可能掉的会更快。 安卓开发:安卓机上的APP刚才说是主要开发语言是JAVA,JAVA语言主要是处理页面逻辑的,画页面样式还得需要一些布局文件,然后去调整细节。 这里要注意,由于市面上安卓机型众多,屏幕大小也不同(因为安卓系统是开源的,很多手机厂商都会定制属于自己的安卓操作系统,比如锤子、小米、华为等)。所以安卓工程师需要花费大部分时间去做不同屏幕的适配、不同机型版本的兼容。这也是PM在推进开发过程中需要注意的一点。 IOS开发:IOS系统是苹果爸爸自己做的,且不是开源的。因为IOS开发者只能在苹果生态的环境内进行开发工作,而且苹果的开发者账号是收费的。这就是为什么公司里的IOS开发工程师用的是清一色的苹果电脑。另外你的产品想上架在APP STORE里面,还得给苹果爸爸交所谓的“保护费”。 二、WEB端 我们日常能用浏览器打开的都属于WEB端。用电脑浏览器打开的是web网页,用手机浏览器打开的是wap网页,包括你用微信、支付宝扫码之后打开的页面(小程序除外)。总体来说WEB端的使用率其实比APP还高。WEB端的实现分为3部分:
第1部分:HTML页面。 大家可以这么理解,我们在网站上看到的是HTML页面,它是由各种HTML标签组成的,开头和结尾分别是和这样的标签。 我们看到的内容都被写在 中的标签里面。如下图:网站中的输入框,都是被写在标签里面的,如下图: 第2部分:CSS样式表。 它是用于控制和渲染HTML标签的样式。CSS就类似女生的化妆品,有的女生化妆就是仙女,不化妆就是路人甲,同样,如果一个HTML如果没有CSS控制样式,那页面就会丑的让人无法直视。但有所不同的是,有的女生天生丽质不需要化妆就很好看,但是HTML不化妆就惨不忍睹,你看到的就是参差不齐,乱七八糟的框架,毫无美感。所以HTML是网页的结构框架,而CSS用于包装美化网页,控制网页布局,字体,颜色、背景、模块间距以及其他效果等等 最后就是JavaScript。 它是最核心的一个部分。JavaScript的主要功能不仅可以控制页面逻辑,还负责连接前后端的交互。前端发起HTTP请求到后端请求数据,完成填写数据后发起HTTP请求到后端提交数据,这些都是由JavaScript来完成的。 这么说吧,朋友们,没有JavaScript,只有HTML+CSS样式,顶多就是画布上安静的美女。但是有了JavaScript,那就是在你面前活生生的女神。试想一下,你约女神去吃饭,结果来的只是她的一张自拍照,会是什么感觉..... 另外我们听到程序员讨论时会提到的angularJS(被封装过的JavaScript),VUE(被封装过的HTML+CSS样式),常常弄的我们一头雾水。作为PM,我们不用知道其具体实现原理,只需要把它们理解为:被封装过的更牛逼的语言!就类似模板一样,程序员可以直接拿来用。简单说,封装逻辑框架就是为了省代码,提高开发效率。 三、小程序 拿微信小程序来说,小程序是微信出的一款基于微信内的应用,但它不是一个应用程序,是微信基于网页端开发语言(CSS、JavaScript)拓展封装而来。把原来的CSS样式表、JavaScript进行封装,然后基于微信APP的功能提供一些可用的接口供开发人员开发,开发完成后提交给微信,微信进行打包处理呈现给最终用户,就是我们在微信中看到的小程序。 第二层:API网关和负载均衡 网关一词较早出现在网络设备里面,比如两个相互独立的局域网段之间通过路由器或者桥接设备进行通信, 这中间的路由或者桥接设备我们称之为网关。 而API网关则是将各系统对外暴露的服务聚合起来,所有要调用这些服务的系统都需要通过API网关进行访问,基于这种方式网关可以对API(接口)进行统一管控,例如:认证、鉴权、流量控制、协议转换、监控等等。 这里只说说我们常见的面向Web或者App的场景,在物理形态上类似前后端分离,前端应用通过 API(接口)调用后端服务,需要网关具有认证、鉴权、缓存、监控告警等功能。 关于负载均衡原理网上的专业词汇解释有很多,也很详细。但是不了解技术的人往往看完还是一头雾水。我们只需要这样理解:原本是一台服务器干活,然后工作量增加产生负载,就平均分摊给多个服务器,从而协同完成工作任务。 第三层:后端服务 前端服务是整个产品的表现层,后端服务就是整个产品底层逻辑最核心的地方,负责处理业务逻辑,数据存取,然后提供接口给前端服务进行调用。 这个时候有朋友就会问:你刚讲的,前端服务会处理各种逻辑,那为什么还要后端服务来处理呢?因为前端处理是不安全的,前端是直接暴露给用户的,前端程序中的JavaScript、HTML、CSS代码都会被加载到用户使用的浏览器中,你的数据就很容易被懂技术的不法分子篡改、利用。而后端服务对于用户来说是不可见的,它只会接受数据请求,返回结果,但是用户就无法得知它是如何处理数据的。 就拿最常见的登录功能来说,前端服务给用户展现一个登录的页面,用户输入账号密码,点击登录后,前端服务就会发起HTTP请求向后端提交你的账号密码,这时候只有你自己和后端服务器知道你输入了什么,后端服务器就会在数据库里的一大推账号密码中进行匹配,然后把结果返回给前端。如果匹配成功,说明你是已注册用户,就会让你登录成功,否则就登录失败。 我们常说“要调用后端的接口”,其中的接口就是由后端服务开发的,说简单点就是打开一个端口,接收各种数据、处理,再把处理结果返回给你。你可以理解为餐厅里面的服务员,你要点菜直接叫“服务员我要点菜...”。服务员负责记录你要点的菜,然后等后厨做好之后再把菜给你端上来,至于后厨的菜到底是怎么做出来的,用的色拉油还是地沟油你完全不知道,你只管吃就好了。
第四层:数据裤 什么是数据库?前端负责提交和拿数据,后端负责处理数据。那么,当数据被前端提交给后端,后端服务处理数据,数据再被存在库房里面,这个库房就叫数据库。数据库分很多种类型,根据不同的数据场景来存储不同的数据,至于存哪些数据是由后端服务决定的。 最后:打包和发布 “赶紧打包,打好包就提测了,测试人员在催了”“没有bug了吧,没有我就打正式包了,准备正式提交发版了哦” 当开发人员把PM设计的产品开发完成后,是不能直接发布到服务器上的,需要经过编译、打包,也就是把开发语言编译成机器可以识别的语言,然后把所有文件放在一个可运行的软件包里面才行。当然,一个产品在正式上线之前会放到开发环境、测试环境,当在这两个环境下测试都没有问题之后,才能发布到正式的生产环境。有时候到正式环境之后,为了保险起见,测试人员还会再测一轮,因为不同的环境可能引起不同的问题。 总结 以上就是针对开发流程的简单概述,真实情况当然要复杂的多。所以我们在平时的工作中应该多和程序员交流,在与他们的沟通中,我们自然也会增加对技术知识的理解。也许你还会惊喜的发现,他们也有可爱有趣的一面。 除此之外,在工作之余,产品经理也要多去看看技术相关方面的书籍和资料,通过这种方式多去了解一些技术方面的知识。当我们了解的更多,设计产品的时候,我们就会在产品设计初期就把一些目前无法实现的功能给换一种方式实现。 本文由作者@Zss_Zhou 在PMCAFF社区发布,转载请注明作者及出处。 推荐阅读:硬盘作用是什么 (正文已结束) (编辑:喜羊羊) 免责声明及提醒:此文内容为本网所转载企业宣传资讯,该相关信息仅为宣传及传递更多信息之目的,不代表本网站观点,文章真实性请浏览者慎重核实!任何投资加盟均有风险,提醒广大民众投资需谨慎! |