在互联网项目中,一个成功的产品,有众多人员的参与,产品经理需要再他们中间协调,分配资源,最终让产品上线
前端开发工程师
产品经理和技术人员的接触很多时候是从需求评审开始的,作为一个产品经理,首先你需要知道邀请哪些岗位的技术人员参加评审
用户A在浏览器上使用WebQQ发了一条匿名消息给正在电脑上使用QQ客户端的用户B。用户B收到了不知来自谁的匿名消息。
用户C座手机上也发了一条匿名消息给用户B,这样匿名消息在不同的设备上都能使用起来。
技术一般来说分为前端和后端。前后端的划分,可以简单地理解为凡是运行在用户设备上的技术都可以称为前端技术(比如HTML / CSS / JS,甚至移动设备的Obj-C / Swift);我们看到的浏览器技术,客户端技术,以及手机上用到技术,都是前端技术的范畴。
而后端的作用就是负责将这些东西封装在数据包中然后通过网络传送到前端。当然除了这些前端文件,后端还有一个更重要的职能,即保存和提供用户数据。后端技术一般是用户感知不到的。
前端开发工程师
前端开发其实有两种定义,一种是广义上的前端,只要和用户打交代的
都是前端,所以包括Web前端、PC客户端、手机终端等,都是广义上的前端开发人员。
另外一种就是狭隘上的前端,这种就是我们说Web前端开发。前端开发工程师在产品上的输出物,就是Web前端网页
我们打开浏览器,看到的网页基本都是前端开发工程师的作品。如淘宝网大家看到的界面,是阿里巴巴淘宝网前端开发工程师的工作成果。
岗位定义及职责
负责PC或者移动端网站网页的开发,以及配合后台开发人员进行页面功能整合,采用的开发语言为:HTML、CSS、 Javascript(js)
所以,当我们想要设计一个Web页面的时候,就应该知道首先要找到一个前端开发工程师,他可以帮助我们实现Web页面的开发
布局、交互、特效等。但是网页内容,如果是固定的,前端开发工程师可以写死在页面里面,但最好不要这样,因为无法确定将来不变。更多的时候应该考虑内容是可以变化的
前端开发工程师和H5前端开发工程师的区别:
❑ 前端开发工程师开发出来的网页主要是运行在PC浏览器上,H5开发工程师开发出来的网页运行在手机浏览器上以及手机App内(比如微信内的网页)。
❑ 前端开发工程师主要考虑PC各个浏览器之间的兼容(如微软的IE、Google的Chrome、火狐的Firefox、苹果的Safari等)。H5开发工程师不但考虑的是各大手机浏览器内核的适配,还要考虑与App之间的兼容。
❑ H5开发工程师还需要了解基本的App开发常识,以及如何与App进行通信(如H5网页在微信App里面如何调用微信支付)。
❑ H5开发工程师需要比前端开发工程师更了解移动的交互设计,如了解触摸操作、多点触摸操作。
❑ H5前端开发工程师可以说是前端开发工程师的一个分支,但是比前端开发工程师更了解移动设备的
无论pc端,移动端,小程序端,还是混合Hybrid开发,都属于前端范畴
客户端开发工程师
客户端产品主要是指在个人电脑上的应用程序,大部分个人电脑上用的操作系统都是Windows
所以开发出Windows客户端的开发人员,叫作Windows客户端开发工程师
目前不少人是用苹果电脑iMac,或者Mac笔记本。因为Mac电脑上运行的操作系统叫做OS X,所以这部分技术人员,可以叫做Mac客户端开发工程师,也可以叫做OS X开发工程师。
岗位定义及职责
负责Windows、Mac客户端界面以及逻辑开发,Windows客户端开发工程师一般采用的语言为C/C++,开发工具一般用微软的Visual Studio。
OS X客户端开发工程师采用的语言为Object-C,开发工具用的是Xcode。
大部分产品的形态都是Web形态,因为Web可以紧跟互联网快速变化趋势,能做到快速迭代,同时Web在不同环境不同
机器上的适配性要好于客户端产品。但Web也会遇到瓶颈,能力有所不足,所以有些产品推荐采用客户端形式,比如聊天软件QQ,杀毒软件360。
客户端开发语言
(1)Windows客户端开发语言
C/C++是一门基础的高级语言,不仅仅应用在客户端开发商,在操作系统,嵌入式系统,包括后台开发上都很普及,但在Windows上开发有一些区别。
微软为C/C++开发者提供了很多基于Windows的库,很方便为Windows客户端开发者提供界面封装以及系统能力的接口,所以我们很多时候看到Windows开发者招聘要求里面,
不仅仅要求熟悉C/C++,还得熟悉Windows下SDK类库如MFC、ATL等(MFC和ATL都是微软公司对Windows下对系统调用的封装)
(2)OS X客户端开发语言
C/C++同样用在Mac客户端开发底层部分。界面开发一般都是基于苹果公司推荐的开发语言
Object-C。苹果公司也为开发者提供了基于OS X客户端开发的类库
岗位定义及职责
负责Android或者iPhone客户端界面以及逻辑开发,Android开发工程师采用的语言为Java,开发工具一般用微软的Android Studio。
iOS开发工程师采用的语言为Object-C,开发工具用的是Xcode。
后台开发工程师
前端负责与用户交互,负责数据的录入和展出。后台与前端通信,交互数据,并对数据进行处理
后台面对巨量的用户群和大数据,所以在高并发以及可靠性、性能上都有较高的要求。
所以后台开发一般都要求有较好的算法基础,能快速处理数据,对操作系统能有较深的研究,有较好的挖掘系统能力。
前端工程师为用户开发精美的界面和友好的交互体验。
3)百度后台
百度是一家搜索公司,核心的搜索算法实现以及巨量数据处理对运行效率要求较高,因此这部分采用的是比较底层的语言,如C&C++,
但同时百度的产品形态大部分都是Web形式,因此采用了PHP开发语言。PHP的优势是可以被嵌入HTML语言,所以实用性强。
PHP取得成功的一个主要原因是它拥有大量的可用扩展,比如用C/C++扩展PHP。
因此我们在后台中经常看到PHP和C++的结合,用PHP来实现C++不擅长的Web部分,用C++实现核心功能替代PHP不擅长的领域
后台java,python,go,GoLang都是后端程序语言
全栈工程师
1.岗位定义及职责
掌握多种技能,并能利用多种技能独立完成产品的人。不但有前端开发
的能力,还有后台开发的经验,还能对服务器进行管理和维护。
2.必备核心技术
以一个网站为例,全栈=前端+后端,可以是前端开发工程师,前端开发所需的语言都会
同时还是一个后台开发工程师,后台所需的开发语言也会。
以一个App为例,全栈=终端+后端,此时,全栈工程师就是终端开发工程师与后台开发工程师的合体了
运维工程师
运维工程师负责部署后台程序以及后台服务的稳定性,确保后台服务可以7×24小时不间断地为用户提供服务。
运维工程师管理数据庞大的后台服务器以及监控这些服务器上的服务状态,如何同时保障服务的高可用是运维工程师面临的最大挑战。
运维工程师和后台开发工程师联系非常紧密。在大部分公司,后台开发工程师并不是直接将开发完成的软件部署到后台服务器
而是交给运维工程师进行部署,从而更关注于开发;在一些中小型企业,后台开发工程师则兼任了运维工程师的职责
2.必备核心技术:测试技术
2.必备核心技术:运维相关技术
(1)硬件设备
运维工程师必须深刻了解常见的服务器架构,了解各种服务器的性能指标,能对设备出现各种问题进行排查
(2)操作系统
熟悉操作系统(一般是Linux)的使用和常用命令,能解决操作系统出现的问题
(3)基础服务
能非常熟练地对操作系统常用的软件和服务进行安装和维护,如MySQL软件等。
(4)网络知识
熟悉网络状态,熟练将服务器进行组网,比较快速地解决各种网络异常。
(5)编程知识
有一定的脚本编程能力,对硬件设备、操作系统、基础服务、网络等进行自动化检查和监控。
测试工程师
测试工程师是产品团队里一个重要的角色,负责前端产品以及后台应用程序的质量把关。根据产品经理的需求文档,编写测试用例
通过自动化(编写程序)测试或者手工测试对需求进行覆盖验证,确保产品经理的需求得到完整实现,保证程序对外发布时,没有不可接受的问题存在
测试工程师在测试结束时,会发出测试报告,报告里描述目前的软件产品是通过或者不通过。
岗位定义及职责
根据需求文档编写测试计划、规划
详细的测试方案、编写测试用例。
执行测试工作(包括编写用于测试的自动测试脚本以及手工测试),提交测试报告。
对测试中发现的问题进行详细分析和准确定位,与开发人员讨论缺陷解决方案,提出对产品改进的建议,并评估改进方案是否合理。
对测试结果进行总结与统计分析,对测试进行跟踪,并提出反馈意见
2.必备核心技术:测试技术
(1)测试专业技能
测试专业技能涉及的范围很广:既包括黑盒测试、白盒测试、测试用例设计等基础测试技术,也包括单元测试、
功能测试、集成测试、系统测试、性能测试等测试方法,还包括基础的测试流程管理、缺陷管理、自动化测试技术等知识。
5种常见的软件类型
我们在使用软件(App)过程中,看过各式各样的软件产品类型,有客户端形式,有Web形式,还有客户端里面是Web形式的。
如何看待这些产品样式?如果你不是产品的第一任产品经理,如何知道这些软件产品有什么区别,怎么样在设计需求时不踩坑?
在PC上,软件产品类型有CS、BS两种类型。
C-S产品
C/S结构,即Client/Server(客户机/服务器)架构,其通过将任务合理分配到Client端和Server端,降低了系统的通信开销,如PC的QQ客户端。
在这种架构里面,客户端工程师以及后台工程师是软件产品的开发者
CS产品的优势
可以充分利用两端硬件环境的优势,本地响应速度快,在硬件和网络环境不好的情况下用CS能提高效率。
很多工作可以在客户端处理后再提交给服务器,还能最大程度使用操作系统以及硬件提供的能力
CS产品的劣势
开发周期较长;产品需要用户下载安装才能使用;维护性较差,增加新功能需要客户端升级,而且随着操作系统的淘汰、中间件的淘汰,CS需要跟随升级,增加维护成本。
PC QQ和Web QQ相比,PC体验较好,功能更多。更适合用户即时通讯的需要
BS产品
B/S结构,即Browser/Server(浏览器/服务器)架构,是随着互联网技术的兴起,对C/S结构的一种变化或者改进的结构
面完全通过浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。
这是轻客户端的架构,软件的能力是有限的,比如访问麦克、摄像头等能力都是不足的,更别说利用硬件来做加速展现,因此性能上是不如CS架构的客户端。
❑ BS产品的优势
前端开发工程师和后台开发工程师是这种产品的开发主力军。
不需要安装任何软件即可使用,维护以及升级简单,开发周期较短,成本低。
❑ BS产品的劣势
响应速度不如CS产品,所以体验弱于CS产品,部分能力受限,服务器压力较大。
对于经常开展各种运营活动的阿里淘宝,客户端产品显然没有优势,所以Web形式更合适。
在智能设备上(手机,iPad),软件产品类型有Native、Web、Hybrid App等三种类型
Native App产品
Native App(原生App)是一种基于智能设备本地操作系统如iOS、Android、WP并使用原生程式编写运行的第三方应用程序,也叫本地App。使用的开发语言一般为Java、C++、
Objective-C。
在这种架构里面,终端工程师以及后台工程师是软件产品的开发者。
❑ Native产品的优势
用户体验好,用户界面以及交互比较流畅。可控性较强,可以使用的API丰富,功能丰富,性能好。
❑ Native产品的劣势
需要下载安装,所需开发人员多,开发以及维护性成本高。
微信以及手机QQ都是原生产品,提供了丰富的功能,但是经常十天半月升级一次,仅仅终端开发团队就有数百人。
Web App产品
Web App实际上是一个针对移动设备优化后的Web站点,它使用的技术是HTML或HTML5、CSS3、JavaScript。
❑ Web App产品的优势
无须安装,跨平台使用,绕开了应用市场(如Apple Store)严格的提交和更新审查规则,维护、更新简单,开发成本较低。
❑ Web App产品的劣势
体验较差,调用移动设备的原生能力差,较多功能无法实现。
Hybrid App产品
Hybrid App(混合App)产品是指介于Native、Web App这两者之间的软件产品,它虽然看上去是一个客户端,但是有些内容展现的是一些Web网页,且Web网页同时又能和客户端进行交互。
在这种架构里面,终端工程师、HTML5前端工程师以及后台工程师都是软件产品的开发者。
❑ Hybrid App产品的优势
Hybrid同时继承了Native App和Web App的优点,既可以方便地调用到设备的本地功能,比如通讯录、摄像头、语音、本地文件操作等功能,同时又具有跨平台、多种设备兼容、升级快速和维护方便等优点。
❑ Hybrid App产品的劣势
需要下载安装,代码结构复杂,开发成本高,Web内容的性能不如Native。
在移动互联网时代,更多的产品选择这条路线,比如手机百度和手机淘宝客户端。很多功能是用
原生客户端
功能比如账号、支付等,但是内容信息页都是Web形式。
在互联网开发岗位里,主要是这八大类技术人员,彼此相互团队协作
共同完成产品项目的迭代,没有孰强孰弱,也不必有岗位鄙视,术业有专攻,自己喜欢做什么,那就从事什么
在众多岗位中,相对而言,前后端开发这种是比较让人看到实际工作产出的岗位,注重生产力的
其他一些辅助性岗位,不具备重生产力的,在公司优化人员时,一般都是从边缘化岗位开始动刀的,你懂的