B端产品经理应了解的技术知识(上)

互联网行业发展这么多年,产品经理这个行业也发展了多年,现在很多人都已形成了共识:产品经理需要懂技术!那么,作为B端产品经理,究竟需要掌握哪些技术知识呢?掌握到什么程度才可以呢?接下来,我们为大家进行技术体系的梳理,聊一聊作为一个B端产品经理需要具备的技术知识。

B端产品经理应了解的技术知识(上)

理解编程语言。对于没有接触过的人来讲,编程,一直都是一件貌似高深莫测的事儿,看着整屏的代码,满脸的问号。要想学习,也是需要付出大量的时间和精力的,要想学好,更是得有所悟性。

有句话说得好:世上无难事,只要肯攀登!若是要编程,写出可运行的高效率代码,那确非易事,但理解程序设计基本逻辑,例如什么是函数、返回值、循环、调用、编译、部署、发布等基本原理,是可行的!

程序的世界神秘而复杂,程序语言更是种类繁多。其实,现在大学里,计算机相关专业的教学内容就挺有参考意义的。从主要的后端开发语言到前端开发语言,从数据结构到算法程式,从计算机网络到数据库系统等,这些都是引领新人入门,快速体系化的了解计算机程序世界的课程。

从编程语言说起吧

大学计算机相关专业的入门语言教学,一般选择C和java,因为C是高级程序语言之“母”,Java则是最近市场发展非常好的语言。作为入门学习,可以从这两门语言入手。编程语言都是相通的,学习了一门主要语言,了解了程序语言的设计逻辑、语法和思想之后,可以再了解一些轻量级的,工作中可能会接触的编程语言。如前端语言的Html,CSS,脚本语言Python、Java Script等。这些都能在工作中加深你对不同研发岗位设计语言的理解,有些也会帮助到你的工作,比如使用Python爬取网页内容进行数据分析。

数据库相关知识

谈到数据库,就得提到数据库的不同类型,数据系统的组成部分,以及类似主键、外键等的内容,这些内容不在此赘述,感兴趣的,可以网上查找相关资料或者翻阅数据库系统相关书籍了解。

这里,想重点谈一谈,作为非技术的产品人员,关于数据库,最应该掌握的知识,就是SQL语言。SQL语言是关系型数据库的处理语言(现在有NOSQL等非关系型数据库)。掌握SQL在实际工作中是非常有用的。例如,在做数据分析时,常常需要从数据库导出数据来分析,如果不会写SQL语句,就需要每次都求助开发人员,效率太低;其次对于复杂的数据处理逻辑,如果不会用SQL语句进行预处理,后续的数据处理将变得非常麻烦。学习使用SQL,首先需要理解数据库及表结构,这对于抽象建模思维的培养非常有帮助。

针对SQL的学习,推荐以下两个学习资源。

www.sqlteaching.com:该网站是目前我接触过的最好的SQL学习资源。网站通过一个个案例讲解了SQL中的每个概念和语法,并且提供了非常强大的在线练习功能,这对学习SQL至关重要。虽然是英文网站,但是讲解深入浅出,很容易理解。你只需要耐心学习几个小时,将网站的内容阅读并实践一遍,就可以掌握SQL的所有核心知识。

www.w3school.com.cn/sql:w3school是老牌的Web技术学习网站,其中对SQL的讲解也很通俗易懂,网站是中文的。w3school提供了丰富的Web技术知识学习素材,包括HTML、JavaScript、CSS等,内容均简明扼要,是非常好的入门学习资料,建议产品经理通读该网站内容。
数据结构相关知识

数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。

实际工作中,数据结构可以说是研发工程师能否写出优秀算法的基础,而能否写出优秀算法,则是区别一个研发工程师能否登堂入室的重要评判指标!数据结构基本知识大家可以自行去了解,比如时间复杂度,空间复杂度,顺序结构,链式结构,索引结构,哈希结构,线性表,栈,队列,串,数组,广义表,二叉树,图等知识。

了解数据结构有何好处,一个不懂数据结构的研发工程师,写出来的代码,或许能实现某个能力,但是运行效率太低,而且代码冗余度高,这不能是一份合格的代码。一份合格的代码,它的数据结构一定是足够精简的,运行效率普遍较高,空间复杂度和时间复杂度都很低(当然也有时间换空间,或空间换时间的做法)。

计算机网络相关知识

B端产品经理需要广泛学习计算机相关的基础知识,例如网络与通信原理、操作系统原理、微机原理等,至少要理解TCP/IP协议、UDP协议分别是什么,二进制、十六进制的运算法则,字节和字的长度概念,对称密钥密码体系和非对称密钥密码体系的区别,等等。

如果对这些概念没有基本认知,那么将很难理解为什么HTTPS比HTTP安全,为什么有时候需要通过二进制来控制标记位。这些常识都是软件设计随时会用到的基本知识,不仅在技术方案设计中会涉及,在产品方案设计时也会涉及。

计算机技术涉及的知识面非常宽泛,从编程语言到数据库设计,从通信协议到算法策略。对于产品经理来讲,技术知识的积累是一个厚积薄发的过程,不可能通过短时间的突击学习就掌握所有知识点,只能在实际工作中遇到新的词汇或概念时,认真查阅资料、理解揣摩,在长期积累中融会贯通。

程序设计的MVC和MVVM

MVC是Modeling、View、Controller的缩写,代表软件设计的分层理念。Modeling指数据模型,View指前端交互视图,Controller指业务逻辑。任何一套软件系统运作的本质都是相同的:用户在前端交互层操作后,系统通过业务逻辑层处理数据层的数据。不论是BS架构的系统(例如通过浏览器访问的管理后台),还是CS架构的系统(例如App应用),都会遵循MVC模式搭建程序结构。将一套软件系统分为数据、业务逻辑处理、前端交互三层来设计、开发,可以非常有效地保证程序结构合理、逻辑清晰。

前端交互层

前端交互层负责绘制程序界面,完成前端程序和用户的交互互动,并实现一些简单的业务逻辑,例如数据校验。常见的负责绘制界面的编程语言有JavaScript、HTML5(即H5,严格来讲不能算编程语言,只是一种记号语言)、PHP等。前端方向是升级迭代非常快的技术方向,例如针对移动端,有JavaScript、Flex、Objective-C、Kotlin等前端语言;针对PC端,前端语言也从曾经的HTML+JS+CSS,到流行一时的富客户端RIC(Rich Internet Client),再到ExtJS、Node.js等。前端工程师需要不断地刷新自己的技能树,来适应快速变化的前端需求。

业务逻辑层

业务逻辑层负责处理业务逻辑,例如在分销运营管理后台的门店列表页,点击“关联账号”按钮,前端交互层把指令发送给业务逻辑层,业务逻辑层要判断门店状态是否能够关联账号、是否有空闲账号可以进行关联等。

开发人员应该尽量将复杂的校验、判断、业务规则都封装在业务逻辑层,这样可以让前端交互层的负担更轻,更容易扩展,因此业务逻辑层是MVC结构中最复杂的部分。例如,假设分销运营管理后台除了PC版本,还打算做一套H5移动版本,以方便审核人员操作。如果业务逻辑层代码和接口设计良好,则只需要前端工程师实现H5代码即可;但如果之前的前端交互层和业务逻辑层耦合紧密,那么实现H5版本就需要前后端工程师一起调整代码,非常麻烦。

业务逻辑层常用的编程语言有Java、C++、C#、PHP等。

数据层

数据层代表底层的数据存储。数据包括结构化数据和非结构化数据,既可以存储在数据库中,也可以存储在文本文件中。数据存储操作一般由程序来完成,例如通过程序对关系型数据库的数据进行增删改查处理。

在早期的软件开发工作中,工程师既要开发前端,也要开发后端,还要设计并管理数据库,可以说是真正的全栈工程师。除此以外,工程师还要承担产品经理的工作,与业务方聊需求、掌控项目进度……

现如今,互联网公司对工作内容的划分非常细致,会将前后端的开发分离。不论是CS架构还是BS架构,前端部分统称为客户端,业务逻辑层和数据层统称为服务端。前端工程师负责客户端开发,后端工程师负责服务端开发,客户端和服务端之间完全通过接口交互。

MVVM

MVC中,M、V、C都不应该处理数据解析,那么由谁来呢?这个问题实际上在面向对象的时候相当好回答:既然目前没有类能够处理这个问题,那么就创建一个新的类出来解决不就好了?所以我们聪明的开发者们就专门为数据解析创建出了一个新的类:ViewModel。这就是MVVM的诞生。

技术性描述:

MVVM 本身就是从MVC的设计模式上优化而来的,从代码的角度来解析,通常MVC的是先获取视图V,然后给这个视图赋予数据M, 这个赋予的过程方法就是C。MVVM呢,就不需要这样了,在vue中直接可以先将数据放在view中V,然后去this.setData (react :this.setState)M等方法去改变数据,视图随之改变 (VM控制)。

生活化描述:

在MVVM中,Controller不再像MVC那样直接持有Model了。想象Controller是一个Boss,数据是一堆文件(Model),如果现在是MVC,那么数据解析(比如整理文件)需要由Boss亲自完成,然而实际上Boss需要的仅仅是整理好的文件而不是那一堆乱七八糟的整理前的文件。所以Boss招聘了一个秘书,现在Boss就不再需要管理原始数据(整理之前的文件)了,他只需要去找秘书:你帮我把文件整理好后给我。那么这个秘书就首先去拿到文件(原始数据),然后进行整理(数据解析),接下来把整理的结果给Boss。所以秘书就是VM了,并且Controller(Boss)现在只需要直接持有VM而不需要再持有M了。如果再进一步理解C、VM、M之间的关系:因为Controller只需要数据解析的结果而不关心过程,所以就相当于VM把“如何解析Model”给封装起来了,C甚至根本就不需要知道M的存在就能把工作做好,前提它需要持有一个VM。那么我们MVVM中的持有关系就是:C持有VM,VM持有M。

总结

以上就是笔者关于——“B端产品经理应了解的技术知识(上)”的分享内容,希望对大家有所帮助,敬请期待下篇。

业界动态

为什么双11规则那么复杂了?短视频机会在哪?

2020-11-12 9:08:15

业界动态

流量焦虑,在线教育公司和身在其中的人都无法摆脱

2020-11-12 9:16:10

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索