对学习资源充满渴望的大学生可申请免费试读~
- 作者:哈哥撩编程(视频号、抖音、公众号同名)
- 新星计划·全栈领域优秀创作者
- 博客专家·全国博客之星第四名
- 超级个体·COC上海社区主理人
- 特约讲师·谷歌亚马逊演讲嘉宾
- 科技博主·极星会首批签约作者
- 🏆 推荐专栏:
相信很多小伙伴也确实都不知道互联网行业的技术侧的岗位具体都有哪些,了解一下每个岗位的大概工作内容和岗位职责,在后续的章节里,会针对每一个职业、岗位进行详细的介绍。
首先,我们来先了解一下软件开发的整体的一个生命周期,然后再根据这个周期内每一个阶段出现的不同角色再加以阐述或者补充。比较统一的一个项目开发流程,分别是 “设计阶段”、“开发阶段”、“测试阶段”、“上线阶段” 以及 “维护阶段”,除了 “维护阶段” 需要为非功能性的需求提供一定的技术支持之外,基本上技术岗的开发小伙伴不会再出现了,除非是增加了新的需求进行版本迭代。这些呢,基本上是一个标准化的产品开发流程。
设计阶段
- 项目经理
- 在需求开始沟通与项目立项的阶段,是由项目经理与乙方进行初步的接触与沟通,这里的乙方可以是内部的需求方,也可以是外部的需求方。
- 根据乙方提出的目标和功能,梳理出适合的、对应的开发模式,提供给客户一份《产品功能需求逻辑图》,并给出初步计算得出的时间、人力、物力成本。
- 这个阶段的主要产出就是确定产品的功能需求逻辑,以及初步的人物力成本。在确认了功能需求、时间、资源等方面没有问题之后,会针对细节与乙方进行进一步的沟通。如果乙方来自外部的话,还会签订合同,约定首付款、尾项,项目正式启动时间,以及后续的周期汇报等工作。
所以这里我们就可以看出,项目经理主要是负责规划、启动和执行IT项目的主要负责人。他是充当技术团队与需求方之间一个桥接作用的角色,帮助双方去互相的了解,解决项目中一些潜在的风险与障碍,也为如何完成好需求方的项目制定一个整体的项目计划,并对整体项目最后的时间期限和预算成本负责。
所以,项目经理一般需要比较强的技术支持、组织协调、规划的能力,还需要解决问题的沟通技巧,所以在项目管理这一领域发挥着比较重要且独特的一个作用。
- 产品经理
- 产品经理是互联网公司的一个非技术岗的职位,主要负责需求方案的提出以及产品运营策略建议,是产品的整个生命周期的负责人。
- 在项目的开发工作正式开始之前,是由产品经理负责设计原型图,采用Axure(Ack-sure)、Figma(国内俗称为肥姑妈)或者墨刀等设计工具设计,根据功能需求列表,绘制页面框架线稿图。
- 产品经理的工作包含有需求的收集与分析、竞品的分析、需求的落地、项目进度的跟踪、项目的上线、上线后的验收与数据跟踪,甚至还需要负责产品手册的撰写与业务人员的培训,后续还需要协助运营、销售、客服展开工作,继续收集来自运营、销售、客服人员的反馈,继续研究用户的需求与需求落地的可实施性,周而复始的进行迭代。
需要说明一点的是,产品经理这一角色的诞生已经将近一百年了,这个角色在各行各业都得到了应用和推广,并且也都取得了广泛的成功。如果仅仅是将 “产品经理” 当作是互联网行业特有的职业,这可就大错特错了,严格来说,是产品经理这个职业适应了互联网,而不是互联网造就了产品经理,这一点一定要清楚。
实际上,产品经理这个职位它是一个很笼统的概念,就像我们程序员可以分为前端、后端、移动端开发,然后根据开发语言再细分为java开发、前端开发、安卓开发、Python开发、爬虫开发等等,产品经理也可以细分为许多不同种类。比如说根据用户类型可以简单粗暴的分为ToB或者ToC,按照行业也可以分为金融支付产品经理、电商产品经理、社交产品经理、在线教育产品经理等等,根据工作内容全能型产品经理、技术型产品经理、运营型产品经理、数据型与业务型产品经理等等。
虽然职位分工不同,但是殊途同归,主要的技能要求可以从调研、设计、协调、周期管理几个方向概括,细分到不同类型的产品经理,他们的侧重点不一样,再延伸一些软性技能要求的话,比如数据分析、沟通技巧、团队管理等等,都属于必备的技能之一。
- UI/UE设计
- 通常情况下,当产品经理的原型图设计完成后,交由设计师绘制UI界面,会给出高保真的界面设计图。后续的开发工作所使用的一些前端素材,也是由产品经理给出之后,设计完成的。包括色系、字体、字号的一些设定,在大厂的一些比较严格的动作下,甚至标点符号都不能错。
- 与产品经理一样,设计这个岗位呢也是一个非技术岗的职位,但是严格意义上来说区别于程序员的技术岗位,所以这里我们简述一下,大家有所了解就好了。
- 架构/数据库设计
- 架构与数据库的设计工作一般情况下是与界面设计同步进行的,像是整体的系统分层架构、根据功能需求列表设计数据库模型,设计表的关联关系等工作,通常都是由架构师、技术经理来完成的。
- 考虑到后续的再次扩展功能的情况,这种设计在初期阶段也会留出比较大的操作空间,防止在后续开发过程中遇到改动较大、增加开发成本的情况出现。就好比是大家在工作以后经常听到的一句话,这个功能千万别写死了,后面肯能要改、或者进行扩展。
在设计阶段的产出主要是项目经理与甲方敲定的需求确认意向,以及研发的周期,如果这个乙方是来自外部的话,还需要签订合同。在收集到用户的需求之后,由产品经理交付原型设计文档,设计师完成设计图,架构/数据库设计完成数据库与产品功能逻辑的设计图。
开发阶段
- 前端开发、后端开发、全栈开发
- 在软件架构与程序设计的领域,通常会划分为前端与后端。
- 前端主要是与用户交互的部分,后端则针对信息进行处理,控制软件的输出,将输出的结果交付至前端展示给用户。
- 所以前后端的划分,是将软件系统不同功能的部分进行了一个分离。
现在一些WEB项目的开发,需要用到很多种技术,每一种技术都有自己各自擅长的领域。随着javascript、node.js、Serverless等等技术的兴起,前端与后端之间的界限也就越来越模糊,也就衍生出了 “全栈” 这样的一个概念。
全栈开发者在技术团队中承担的角色是既能够承担前端的任务,也能够承担后端的任务,拥有能有独立开发一个WEB产品的所有的技能,这种复合型人才的崛起,在最近几年也逐渐的被中小企业所青睐。
- 移动端开发
- 移动端的开发也催生了很多移动开发的技术,比如大家耳熟能详的安卓、IOS,包括现在的鸿蒙开发等技术,这些都是移动开发。
- 大数据开发、算法
- 在大数据还没有兴起的时候,前后端开发、移动开发基本上就是开发的代名词。但是随着技术的发展,在产品开发过程中,大数据与人工智能化的发展,对于数据开发、算法工程的应用也催生了大量的算法、数据岗位的需求。
- 大数据开发呢,主要是负责大数据平台的建设,包括但不限于数据的清洗、加工、处理等等;
- 算法工程师主要是训练应用算法、制作模型,然后应用到实际的业务中去。
这些呢就是开发阶段,主要有的几个工作分类。目前主流的开发方式是,前后端分离的开发模式,优点是效率高,也比较容易扩展。前端开发工程师负责根据原型设计图及UI设计图开始编写前端代码,用代码实现设计图中的功能界面,交互,动效等等内容;后端开发工程师负责根据原型设计图、UI设计图,数据库文档编写后端代码,用代码实现业务逻辑接口,如请求参数,请求方法,数据库持久化,数据返回等等内容。
因为是前后端分离的开发模式,前端和后端人员可以分别或者同时开发,互不影响,等到双方都写好功能以后,就可以进行联调了,根据后端开发编写的请求接口文档,前端开始进行代码功能对接,并在这个过程中不断修改和优化接口代码。在这一阶段比较重要的产出物就是 “API接口文档”。
测试阶段
- 软件测试
- 研发阶段结束之后就进入到了测试阶段,这个阶段测试工程师会利用功能测试、性能测试、自动化测试等手段来保障软件系统的质量,在整个软件研发周期扮演的是QA的角色。
- 所以测试工程师其实是贯穿了软硬件开发生命周期各个环节的,目的就是为了确保软件的正确、完整、安全和质量。
- 其实严格来说,测试工程师的工作并不是等待开发工程师任务结束之后才展开的。在产品经理整理、清洗需求的时候就可以介入的,针对需求设计出合格的测试用例,包括但不限于正例与反例,甚至与在初期阶段辅助产品经理针对不合理、有问题的需求作出调整。
测试工程师在这一阶段的主要工作与产出,就是验证软件功能的正确与完整,收集整理测试未通过的需求与功能反馈给开发人员进行调整,开发人员修改代码提交测试,测试通过会在测试结果报告中打钩确认,输出一份测试通过的软件测试报告,开始准备上线的工作。
上线阶段
上限阶段就是将系统部署到正式环境,开始正常运行,在这个阶段需要产品经理执行对应的验收动作。不仅是产品经理进行验收,开发人员与测试工程师也会对线上的业务进行验证,以确保正式环境与测试环境的验收结果是一致的。如果在这一阶段,又发现存在一些未发现、影响了用户使用,或者是之前已经发现修复,又重新出现的影响用户体验的问题,都需要紧急修复。但是同时,这种在线上出现的问题,也被称之为 “生产事故” ,一般稍微有些规模的公司,都会有对应的处罚机制,包括但不限于绩效评级降级,KPI考核减分,扣发奖金等等。
所以,有的时候,一些大公司的产品在上线之前会有一个试运营或者是灰度测试的阶段,就是新的功能只针对少部分用户开放,在这样的场景下去收集来自用户的第一手反馈,从而降低自己正式上线后的风险。
维护阶段
这个阶段基本上算是大功告成了,出了产品经理需要协助运营、销售、客服展开工作,继续收集反馈进行迭代之外。最大的工作量,其实都在了运维工程师这边。
- 运维工程师
- 运维的最基本工作职责,就是负责公司运行业务的稳定性,以确保正式上线的产品能够 7*24 不间断的为用户提供服务。
- 这些稳定性的工作包括但不限于仅仅是服务用户,也包括了为兄弟部门提供软硬件的技术支持,也包括了负责公司的网络安全,机房服务器等基础设施的管理和分配。
- 最能够体现运维工作的一句话就是 不是在机房,就是在去机房的路上 。
- 运营
- 除了运维之外,运营这个岗位也是维护阶段非常重要的一环,当然了,一般的企业也大都没有将 “运营” 归类为技术岗位,所以这里也就简单介绍一下就好。
- 运营的主要职责包括了 制定运营政策、管理日常的运营活动、对活动的物资和人力物资制定计划和管理,这是运营所需要做的核心的一些事情。
- 除此之外,运营的岗位其实也是有很多分工的。比如 “内容运营”、“社区运营”、“用户运营”、“渠道运营” 等等。
从广义的角度来看,所有人工对于产品的干预都可以叫做 “运营” 。有鉴于此,运营的工作也变得更加的 “多维” 与 “立体”。我个人比较主观的一个观点,当前也好、未来也罢,在我们已经接触到了一些非常新的技术之下,技术的未来是一个运营驱动的时代。
后续的内容里,会针对技术方面的一些岗位,做一些详细的介绍,以及每个岗位的定位与基本的职责。