一个软件从【有人想要】到【有人验收】,要经过五种职业的手——决定做什么的、画图纸的、砌墙的、管进度的、找茬的,工地上谁干什么,本节一张表说清。
上一节讲了【哪几类公司】,本节把镜头推进到公司内部:【一群人怎么分工做软件】。这也是你以后看招聘信息、进项目组的地图——五种职业,你迟早要对号入座。
一、五种职业一张表
| 职业 | 核心职责 | 工地比喻 | 产出 |
|---|---|---|---|
| 系统工程师(SE) | 把需求变成设计方案:架构、数据库表、接口 | 画图纸的工程师 | 设计文档、系统架构图 |
| 程序员(PG) | 按设计图把代码写出来、调试 | 砌墙的施工队 | 能跑的代码 |
| 项目经理(PM) | 管进度、预算、人力、风险 | 项目经理(同一词) | 进度表、风险清单 |
| 产品经理 | 决定【做什么、为谁做、做成什么样】 | 甲方代表+策划 | 需求文档、原型图 |
| 测试员(QA) | 专门找茬:设计用例把程序往坏里试 | 监理验收 | 测试报告、缺陷单 |
流程对位(正好对应 1-7 的开发工程):产品经理给出【做什么】→ SE 给出【怎么做】→ 程序员做出来 → 测试员挑毛病 → PM 保证按时交付。
二、最容易混的两组
SE vs 程序员:日本的 SE 特指【做上游设计的人】,写代码少;中国语境里【系统工程师】用法更宽,很多岗位是【设计+写码一肩挑】。差别不在头衔在活儿:拿需求文档画架构图的是 SE 的活,把类和函数落成代码的是程序员的活。
项目经理 vs 产品经理:PM(Project)管把项目按时按预算做完,产品经理管做出来的东西对不对(用户要不要、值不值得做)。一个对内管交付,一个对外管价值——小公司常是一人分饰两角,大公司必须分开(要的东西和能给的资源得互相牵制)。
三、测试不是【点点鼠标看看好不好】
入门者最常见的误解是【测试最简单】。正解相反:
- 测试员要设计用例:正常路径、边界值(0 个、1 个、最多几个)、异常路径(断网、乱输入、连点十次);
- 测试有方法论:黑盒(只看输入输出)、白盒(看着代码挑路径)、回归测试(改了一处,把相关的全重跑一遍);
- 树莓派课说过【测试停车比测试开车重要】——测试员的职业尊严就在这里:他是全公司里专门假设产品会坏的人。
四、动手 Demo:给一个真实项目排分工
拿【给学校做一套教室照明管理系统】当题目,把五种职业的任务各写一条:
看到什么算成功: 1. 产品经理:和校方谈需求——要定时开关、场景模式、能耗报表,排出优先级; 2. SE:设计系统结构——控制器协议、数据库表、Web 界面,写出设计文档; 3. 程序员:实现服务端与界面代码; 4. 测试员:构造【停电恢复后灯会不会乱亮】【时间表跨零点】这类刁钻用例; 5. PM:定里程碑,协调校方验收时间,管控延期风险。
读结果:注意 4 和 5 的工作其实从第一天就开始了,不是等代码写完才上场——五种职业在时间轴上是重叠的,不是接力棒的五段。
30 秒实验
打开招聘网站,分别搜【系统工程师】【产品经理】【测试工程师】各一个岗位,只看【岗位职责】栏。
看到什么算成功:三个岗位的关键词明显不同——SE 出现【架构】【设计文档】,产品经理出现【需求】【用户】【原型】,测试出现【用例】【自动化】【质量】。
读结果:把关键词对回本节的表格——招聘市场实际在用这套分工。以后看 JD 判断岗位本质,就用这五类去套。
常见误区
- 【程序员是行业鄙视链底层】——分工不同不是高低不同;没有程序员的施工,再好的图纸也是废纸。反过来说,只会写码不看图纸,天花板也确实低——两头都懂才是竞争力。
- 【产品经理不用懂技术】——不懂技术的产品经理容易提出【不可能实现】的需求;懂一点技术的 PM 提的需求才落得了地。
- 【测试是开发做完之后的环节】——测试用例在设计阶段就该写;【边开发边测】(1-8 的敏捷开发)更是主流做法。
- 【PM 就是催进度的】——催进度只是表面;PM 的核心是【在范围、时间、成本三样里做取舍】——要快就砍范围,要全就要加人加钱。
自测三问(点开对答案)
1. **项目经理和产品经理,一个对内一个对外,分别管什么?** PM 管【按时按预算交付】(对内);产品经理管【做什么、做出来是否有人要】(对外)。 2. **日本语境的 SE 和程序员,分工怎么划?** SE 做上游设计(架构、表结构、接口),程序员按图施工写代码;中国很多岗位两者合一,但两件事本身仍然存在。 3. **为什么测试用例要在开发之前设计?** 先定【怎么算对】再动手,开发完再想容易照着实现凑数;而且异常用例(断网、边界值)从设计期就要想,不是事后补。- ☐ 下一节(1-6 程序员的雇佣形式)
相关笔记
- 编程相关行业的区别 —— 公司地图(本节是公司内部的岗位地图)
- 数据库 5-2 · 角色划分 —— 引入数据库时的三种角色,同一套分工思想
- ⌨️ 编程原理 · 索引 —— 全课路线图