引言
如今的互联网行业已经沉淀出一套稳定的组织架构与开发流程,开发一款软件产品就如同生产车间的流水线一样程序化了,这也就是软件工程的含义。
那么一个互联网公司中都有哪些岗位呢,它们各自的职责又是什么?
岗位介绍
产品经理(PM)
开发任何一款产品的目的都是为了满足用户的需求,作为一名产品经理,首先具备需求分析的能力,才能对产品最终效果和开发进度进行整体把控。
对于商业化产品,往往还需要考虑商业模式、竞品调研等方面。
产品经理需要将需求整理成PRD (产品需求文档),常用的工具为XMind、Axure、Wiki。之后根据梳理出的产品需求,还进一步制定产品的功能,这时通常以思维导图、原型图、UML图等形式呈现。
原型图是对产品界面以及交互的粗设计,常用的原型图设计工具有:Axure、Sketch、墨刀等。此外,OmniGraffle、Visio可用于制作如UML图、流程图等各种图示图表。
UI / UE 设计
UI (User Interface) 设计负责在原型图的基础上,进行更精细化的界面设计,如色彩、图标、页面控件等。
UE (User Experience) 设计负责产品的交互设计,重点研究在交互方面如何增强用户的使用体验。
常用工具:Axure、Sketch、墨刀、Principle、Adobe XD
研发工程师
当产品的功能敲定后,就该进入编码实现的阶段啦。
不过在开发人员编码之前,一般会由开发组Leader进行顶层设计,如确定技术选型、划分模块、设计接口、搭建项目框架等。
一个互联网产品的软件架构可大致划分为:客户端 + 服务端。
客户端是指在用户终端设备上运行的软件,如浏览器中的网页、手机App、PC端应用等。
服务端(后端)是指运行在服务器上的软件程序,负责存储数据、承担主要业务逻辑、提供查询接口等。
客户端程序与服务端程序通过网络交换数据,从而实现完整的软件功能。
前端开发工程师
如上所述,客户端开发又可细分为 Web 开发、Android 开发、iOS 开发以及 PC 桌面端开发,但这些工程师使用的技术工具却不尽相同。
Web 开发常用技术栈有:HTML、CSS、JavaScript、React、Vue、Angular等;
Android 开发常用技术栈:Java、Kotlin;
iOS 开发常用:Objective-C、Swift;
PC 端主要使用 C++。
随着技术的发展,以及产品的快速迭代,一些跨平台开发技术如 Flutter、React Native、Weex、Electron等越来越受企业的欢迎。
服务端开发工程师
在服务端,由于不同的业务有不同的需求,各种语言和技术可谓是百家争鸣。
Java依靠完整的面向对象支持、健壮的语法、丰富的生态(如Spring、Apache、Quarkus等)独占鳌头。
Python也因为其简洁的语法和快速开发的特性,占得一席之地。
Node.js独特的线程模型,也给予了它出色的并发能力。
在云原生的今天,Go语言同样依靠原生 Goroutine 简洁、强大的并发支持以及编译特性,在基础设施开发与Serverless 应用中越来越受欢迎。
算法工程师
算法工程师着力于利用已有或自研算法,结合实际业务场景实现特定功能。
如推荐算法、计算机视觉、自然语言处理、决策算法、调度算法等业务方向;
经典机器学习、深度学习、强化学习、知识推理等技术方向。
常用语言为:Python、JavaScript、MATLAB
常用框架有:TensorFlow、Keras、Pytorch 等。
测试工程师
没有密不透风的墙,也没有 Bug Free 的代码
当开发人员写好代码后,为了验证功能性需求是否被正确地实现,非功能性需求是否被满足,就需要测试工程师的出场!
他们需要掌握的语言和工具有:Java、Python、Shell、Postman。
随着 DevOps 的发展,自动化测试逐渐成为主流,常用工具有:selenium、appium、HttpRunner、JMeter等。
运维工程师
当代码通过测试后,需要部署到线上的服务器,这时候就需要运维工程师来操作啦!
运维工程师需要熟练掌握 Linux以及Tomcat、Apache、Nginx等HTTP 服务器的相关知识。
当机器达到一定数量的时候,手动FTP部署已不现实。需要借助Docker等容器平台,将应用以镜像的方式传输、以容器的方式运行。这样的好处是极大的简化了部署流程,缩短了部署时间。
然而这么多容器,手动管理也不大现实,如何进行统一管理呢?
Kubernetes (k8s) 来了!它能够根据声明式配置文件,自动管理集群内的容器的生命周期。例如,假设一台机器上的容器挂了,k8s 会自动在集群内其他可用节点上重启一个相同的容器。
运营
“酒香不怕巷子深恐”在如今的快消时代怕是行不通咯,往往需要尽最大可能吸引用户、留存用户。
通常可根据职责分为:内容运营、活动运营、媒体运营、数据运营等,分别负责平台内容管理、活动策划、产品宣传、数据分析等。
由于运营的具体职责与企业经营模式和领域紧密关联,所以职责也是多种多样。可谓是一千个公司里面,有一千种运营。
通常需要掌握的工具有:Word、Excel、Photoshop 等;
数据运营需掌握:Python、Excel、SQL、Tableau 等数据处理及可视化工具。
其他
与传统企业相同的一些岗位如人力资源管理(HR)、财务、市场销售等就不再赘述,作者也认知有限。
感谢您阅读本文,您的关注与点赞是对我最大的支持!关注我的公众号 “语冰Yubing” 可接收最新推送。