⌨️ 第一章 编程的基础知识
📄 一句话概括

一个软件从【有人想要】到【有人验收】,要经过五种职业的手——决定做什么的、画图纸的、砌墙的、管进度的、找茬的,工地上谁干什么,本节一张表说清。

📝 本节和前面几节的关系

上一节讲了【哪几类公司】,本节把镜头推进到公司内部:【一群人怎么分工做软件】。这也是你以后看招聘信息、进项目组的地图——五种职业,你迟早要对号入座。

一、五种职业一张表

职业 核心职责 工地比喻 产出
系统工程师(SE) 把需求变成设计方案:架构、数据库表、接口 画图纸的工程师 设计文档、系统架构图
程序员(PG) 按设计图把代码写出来、调试 砌墙的施工队 能跑的代码
项目经理(PM) 管进度、预算、人力、风险 项目经理(同一词) 进度表、风险清单
产品经理 决定【做什么、为谁做、做成什么样】 甲方代表+策划 需求文档、原型图
测试员(QA) 专门找茬:设计用例把程序往坏里试 监理验收 测试报告、缺陷单

流程对位(正好对应 1-7 的开发工程):产品经理给出【做什么】→ SE 给出【怎么做】→ 程序员做出来 → 测试员挑毛病 → PM 保证按时交付。

二、最容易混的两组

SE vs 程序员:日本的 SE 特指【做上游设计的人】,写代码少;中国语境里【系统工程师】用法更宽,很多岗位是【设计+写码一肩挑】。差别不在头衔在活儿:拿需求文档画架构图的是 SE 的活,把类和函数落成代码的是程序员的活。

项目经理 vs 产品经理:PM(Project)管把项目按时按预算做完,产品经理管做出来的东西对不对(用户要不要、值不值得做)。一个对内管交付,一个对外管价值——小公司常是一人分饰两角,大公司必须分开(要的东西和能给的资源得互相牵制)。

三、测试不是【点点鼠标看看好不好】

入门者最常见的误解是【测试最简单】。正解相反:

四、动手 Demo:给一个真实项目排分工

拿【给学校做一套教室照明管理系统】当题目,把五种职业的任务各写一条:

看到什么算成功: 1. 产品经理:和校方谈需求——要定时开关、场景模式、能耗报表,排出优先级; 2. SE:设计系统结构——控制器协议、数据库表、Web 界面,写出设计文档; 3. 程序员:实现服务端与界面代码; 4. 测试员:构造【停电恢复后灯会不会乱亮】【时间表跨零点】这类刁钻用例; 5. PM:定里程碑,协调校方验收时间,管控延期风险。

读结果:注意 4 和 5 的工作其实从第一天就开始了,不是等代码写完才上场——五种职业在时间轴上是重叠的,不是接力棒的五段。

30 秒实验

打开招聘网站,分别搜【系统工程师】【产品经理】【测试工程师】各一个岗位,只看【岗位职责】栏。

看到什么算成功:三个岗位的关键词明显不同——SE 出现【架构】【设计文档】,产品经理出现【需求】【用户】【原型】,测试出现【用例】【自动化】【质量】。

读结果:把关键词对回本节的表格——招聘市场实际在用这套分工。以后看 JD 判断岗位本质,就用这五类去套。

常见误区

  1. 【程序员是行业鄙视链底层】——分工不同不是高低不同;没有程序员的施工,再好的图纸也是废纸。反过来说,只会写码不看图纸,天花板也确实低——两头都懂才是竞争力。
  2. 【产品经理不用懂技术】——不懂技术的产品经理容易提出【不可能实现】的需求;懂一点技术的 PM 提的需求才落得了地。
  3. 【测试是开发做完之后的环节】——测试用例在设计阶段就该写;【边开发边测】(1-8 的敏捷开发)更是主流做法。
  4. 【PM 就是催进度的】——催进度只是表面;PM 的核心是【在范围、时间、成本三样里做取舍】——要快就砍范围,要全就要加人加钱。
自测三问(点开对答案) 1. **项目经理和产品经理,一个对内一个对外,分别管什么?** PM 管【按时按预算交付】(对内);产品经理管【做什么、做出来是否有人要】(对外)。 2. **日本语境的 SE 和程序员,分工怎么划?** SE 做上游设计(架构、表结构、接口),程序员按图施工写代码;中国很多岗位两者合一,但两件事本身仍然存在。 3. **为什么测试用例要在开发之前设计?** 先定【怎么算对】再动手,开发完再想容易照着实现凑数;而且异常用例(断网、边界值)从设计期就要想,不是事后补。

相关笔记