<audio id="audio" title="07 | P5提升攻略：怎么快速从学生转变为“打工人”？" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/22/cc/22f06f863a0625a6cf7b88f004f050cc.mp3"></audio>

你好，我是华仔。

从这一讲开始，我们进入到课程的第二部分，职级详解。

## 职级详解导学

在这个部分，我会基于COMD能力模型，从技术、业务、管理三个维度和规模、时间、环境、创新四种复杂度出发，为你详细解读P5～P9每一个级别的能力要求。同时，我也会结合过往带团队、指导他人和担任评委的经验，给出每个级别的提升建议。

我想强调的是，这里的职级解读和提升技巧绝对不是只针对阿里的职级，而是通用的。不管你是在BAT，还是在TMD，不管你是在互联网大厂，还是在其他公司，都可以参考。你只要把自己当前的职级对标到这门课程定义的级别（P5～P9），然后学习相应的内容就行了。

具体怎么对标呢？你可以参考[第6讲](https://time.geekbang.org/column/article/317813)和[《晋升等级：不同的职级体系如何对标》](https://time.geekbang.org/column/article/318457)这篇加餐。

另外，我还想提醒一点：你的学习重点肯定是自己当前级别和下一级别的内容（比如P5的同学需要重点学习介绍P5和P6的内容），但并不意味着其它级别的内容你就可以直接跳过。

比如你现在是P7，虽然已经顺利越过了P5和P6，但你对这两个级别的理解不一定完全准确，也不一定全面。而你很可能要指导这两个级别的同事、面试这两个级别的应聘者，或者作为Team Leader带这两个级别的下属。所以，认真学习P5和P6的内容，对你同样会有很大的帮助。

换一个角度想，如果你现在是P6，看起来P8和P9好像离你还很遥远，这两个级别的内容你还要不要学呢？我还是建议你了解一下比较好，因为这样可以让你对自己的长远目标有一个大概的认知，有助于你做职业发展规划和晋升路线规划。

<img src="https://static001.geekbang.org/resource/image/01/1e/01c4ba43b2cccef760fd53d80049b41e.jpg" alt="">

## P5：从学生到“打工人”

我们先来看看P5级别。P5对应的工作年限大概是0～3年，本科毕业生的定级一般就是P5，优秀的毕业生会定到P5+，目前进BAT的应届生绝大部分都是P5+。

大部分P5工作2年以后可以晋升P6（无论是内部晋升还是跳槽定级）。如果你工作3年了还没法晋升P6，可能需要考虑一下是否适合当前岗位了，或者反思一下自己有哪些地方做得不好。

P5的核心能力是**在别人的指导下完成任务**，这句话有两个重点：

- **在别人的指导下**：通常是P6或者P7来带P5。
- **任务**：项目各个阶段的各项活动。以开发为例，任务包括需求评审、方案设计、编码、修改Bug和上线等。

听起来好像要求不高，但这并不意味着你一毕业就自动具备了P5的能力。因为在学校读书跟在公司工作还是有很大区别的，主要体现在以下三个方面：

1. **技术差异**

大学学的技术偏重理论，而工作岗位对深度和实践的要求更高。而且就算你是研究生，你的研究方向和公司岗位的要求也很难完全匹配，更不用说前端、Android、iOS、测试、运维、DBA等各种不同岗位的技能差异了。

1. **业务差异**

大学教育不会针对某个公司的具体业务进行教学，而互联网行业的业务领域多、发展快，近几年比较火的领域有电商、支付、社交、本地生活和出行等。这些业务知识是完成工作的基础，但你在刚毕业的时候，往往没有这方面的积累。

1. **管理差异**

大学学习的管理课程比较理论化，但公司的规章制度和项目流程有很多细化和具体的要求。怎么熟悉和适应工作岗位的管理要求，怎么跟别人协作，怎么推动事情落地，这些也都是完成工作的基础，但刚毕业的大学生往往处理得还不够好。

正是因为校园和职场环境差别这么大，所以P5级别的主要目标就是完成“学生”向“打工人”的角色转换。怎么实现这一层蜕变，是P5首先要考虑的事情。

接下来，我就分技术、业务和管理三个维度一一展开。

## 技术：重点积累基础技术

首先是技术维度。P5是你职业生涯的起步阶段，也是打基础的关键时期。虽然你的技术水平还不高，但是这时候的学习效果最好，技术提升也是最快的。

因为跟学校的单向学习不同，你能把刚学到的东西马上实践应用在具体工作中，能够达到“知行合一”的效果；同时，P5承担的责任不大，等你晋升到更高级别之后，就没有这么多精力和时间用来学习了。

P5的技术要求，我总结在了这张表格里：<br>
<img src="https://static001.geekbang.org/resource/image/74/b6/74973a0c2ce984e578a757528f49d1b6.jpg" alt="">

P5阶段要怎么提升技术呢？最重要的就是**基础技术的积累**。

这里的基础技术不是指大学课程中的基础知识，而是指工作岗位中实际用到的技术，不同的岗位要求不同。

比如，Java业务开发的基础技术包括Java编程语言、MySQL数据库、计算机网络、HTTP协议和Linux操作系统基础知识等，而iOS业务开发的基础知识，就包括Swift/Objective-C编程语言、iOS操作系统基础知识、Xcode、SQLite、计算机网络和HTTP协议等。

虽然它们有一部分相同，但总体来看差异还是比较大的，所以你也要根据自己的岗位有针对性地学习。

### 两个误区：错误理解“基础”与碎片化学习

在P5阶段提升技术时，很容易陷入2个误区。

第1个常见的误区是**错误地理解了“基础”的意思**。

我在[第3讲](https://time.geekbang.org/column/article/314649)介绍价值原则的时候提到过，很多人为了提升自己的基础能力，跑去学编译原理和Linux内核源码分析，或者去背一些算法源码。结果他们到头来发现，投入了大量的时间和精力，却没什么收获。

所以你一定要记住，基础是和工作任务相关的基础，而不是整个计算机行业的基础。关于怎么学习基础技术，我会专门用一期加餐来系统地介绍。

第2个常见的误区是**只通过搜索来进行碎片化学习**。

工作中遇到一个问题或者一个技术点，就上网搜索几篇文章学习一下，很多人都是这么做的。

碎片化学习虽然投入时间少，但是效果难以保证。首先，你不可能在工作中遇到某个技术相关的所有问题；其次，通过这种方式，你只知道一个个零散的技术点，而不知道这些技术点之间的关系。

以HTTP缓存为例，如果只是单纯去搜索“HTTP Cache-Control”，你确实可以知道no-cache和no-store等名词的含义。但是整个HTTP Cache协议、浏览器的处理逻辑和服务器的处理机制这些技术点你就学不到了，而它们在分析HTTP性能相关的问题或者优化Web页面的时候都是必须掌握的。

可能你会觉得碎片化学习是没有办法的事情，因为工作以后就不像在学校那样，有整段的学习时间。

虽然客观条件是这样，但碎片化时间并不意味着只能碎片化学习，正确的做法是**“碎片化时间，系统化学习”。**也就是说，每天都抽出一小段时间有计划地学习某项技术，哪怕每天10分钟都可以，但总体的学习内容是系统化的。

想让学习系统化，最简单的办法就是**对照一本经典的书籍循序渐进地学习**。

虽然你不能把所有的内容都一次性学懂，但至少在学完一遍后，可以对一项技术的完整体系建立整体印象。这样，你后续再深入学习这项技术的时候，效率也会更高。

除了书籍之外，**学习技术类线上课程**也是一种很不错的方式。

线上课程的作者都是在某个领域积累了丰富经验的专家，而且讲解的内容跟实际工作关系紧密，再加上这些作者往往会有自己独到的理解，你学习起来会更有趣，也更有效率。

同时，线上课程往往还配有音频，比书籍更适合上下班通勤的时候学习，让你更高效地利用碎片时间。

## 业务：熟悉业务的处理逻辑

第二个维度是业务。P5对业务的要求主要是熟悉**各项业务的处理逻辑**。

### 广义的业务：提供的功能和服务

什么是业务呢？我需要在这里专门说明一下。

一般情况下，我们听到“业务”这个词的时候，都会理解为“某个行业的相关服务”，比如电商业务、支付业务、社交业务、游戏业务，其实这些都是“狭义”上的业务。

我在这门课程中，按照COMD能力模型拆解级别要求的时候，对“业务”的定义要更宽泛一些，是“广义”上的业务。你可以把它理解为“**你负责的系统或产品为目标对象提供的功能和服务**”。

具体到不同岗位，是这样的：

1. 如果你负责2C或2B的业务系统开发测试，那么业务范围就是**我们通常理解的业务**。
1. 如果你负责内部IT系统的开发测试，那么业务范围就是**公司内部的各种规章制度和工作流程**。
1. 如果你负责中间件或平台的开发测试，那么业务范围主要是**中间件或平台的相关功能和服务**。换句话说，你不需要深入理解每个使用你的系统的2C/2B业务（可以适当了解），而要把精力放在熟悉中间件和平台本身提供的功能和服务上。
1. 如果你是运维或DBA之类的岗位，那么业务范围就是**运维体系相关功能和服务**。换句话说，你不需要深入理解每个你负责维护的业务（可以适当了解），而要把精力放在熟悉运维体系提供的功能和服务上。

### 处理逻辑：实现功能和服务的步骤

那么，什么是业务的处理逻辑呢？它是指实现这项业务提供的功能和服务所需要的步骤。直白点说，就是第一步要做什么，第二步要做什么，依此类推，一直到最后一步做什么。

以微信朋友圈为例，发图片动态的处理逻辑如下：

```
进入“朋友圈”
点击右上角的照相机图标，App弹出选择框
选择“从相册选择”，App展示图片列表
点击需要发布的图片，最多选择9张
选择完成后，点击右上角“完成”按钮，App进入“发表”界面
输入“这一刻的想法”
点击“所在位置”选择具体的位置
点击“提醒谁看”选择需要提醒的人员
点击“谁可以看”选择可见人群
点击“发布”按钮发布图片动态，App返回朋友圈
朋友圈展示刚才发的图片动态

```

当然，这只是一个简化后的例子，用来说明这个概念而已。所以，我只描述了整体步骤，你可以自行对照微信朋友圈的功能进行细化。

在实际工作中，处理逻辑越细化越好。比如这个例子中的第9步，点击“谁可以看”，它就具体包括公开、私密、部分可见和不给谁看4个选项，每个选项的含义你都需要详细了解。

P5的业务要求，我总结在了这张表格里：<br>
<img src="https://static001.geekbang.org/resource/image/0b/7d/0b651ace29dcd68c52a56d11699a447d.jpg" alt="">

怎么才能更有效地快速熟悉自己负责的业务功能呢？

对于2C的业务来说，熟悉业务最有效的方法就是**让自己成为产品的深度用户**。

有些技术人员连自己负责的产品都不用，只是机械地按照项目的要求完成任务（例如开发、测试、部署这些任务）。功能上线后，他们既不亲自体验，也不关心用户的反馈。这样做的后果是，连基本的业务现状都很难清晰地了解，更别谈提升业务水平了。

所以，如果你对现在做的业务真的一点兴趣都没有的话，我建议你尽早换一个自己感兴趣的业务，这样更有利于职业发展和晋升。

对于2B的业务来说，熟悉业务最有效的方法可能就是**多跟客户交流**。

你不妨多去跑去客户那里，看看客户实际的使用环境和使用流程，听听客户的真实的需求、痛点和想法。

说到这，你可能担心P5级别不一定有这样的机会。其实，很多公司都鼓励技术人员出去跟客户交流。P5虽然不能独立承担这个任务，但是一般情况下，跟着P6和P7一起去是没有问题的。如果有可能，尽量每个季度都出去见一次客户，这能够大大提升你对业务的理解。

比如我在菊花厂的时候，负责核心网的网管系统设计和开发。公司每年都会给我们安排几次机会去移动、电信和联通的机房里面看看设备，观察他们的维护人员使用我们系统的情况，以及听听他们对我们系统的评价和吐槽。

## 管理：了解公司的管理制度和项目流程

最后是管理维度。P5对管理的要求主要是了解公司的管理制度和项目流程，知道自己在项目流程中的职责和任务，熟悉上下游的依赖以及如何推进项目。

P5的管理要求，我总结在了这张表格里：<br>
<img src="https://static001.geekbang.org/resource/image/a6/8f/a6996737cbce098020f97b739053f08f.jpg" alt="">

如果你是计算机科班出身，应该学过《软件工程》这门课。其实这门课已经涵盖了软件项目管理的内容，比如现在常见的“瀑布开发流程”和“敏捷开发流程”。

但是不同的公司和团队，还会有很多详细规章制度，可能是公司统一规定，也可能是团队历史经验教训的积累。其中有些规则还是“红线规则”，一旦违反就会受到通报处分之类的惩罚。

对于刚入职场的P5来说，虽然承担的职责并不重，但很容易因为不熟悉这些规章制度而犯错。所以你还需要特别注意团队规章制度的学习，不要一不小心就踩了坑。

## 小结

这一讲我基于COMD能力模型，给你详细解读了P5级别的具体要求。现在，我们回顾一下重点内容：

1. P5的核心能力要求是在别人的指导下完成任务，主要提升目标是从学生转变为“打工人”。
1. 技术方面，P5需要打好基础，学习岗位要求的基础技术。采用“碎片化时间，系统化学习”的方法提高你的技术学习效率。
1. 业务方面，P5需要熟悉各项业务功能的实现逻辑。对于2C业务，你要成为产品的深度用户；对于2B业务，你就要多跟客户交流。
<li>管理方面，P5的重点是熟悉项目流程，避免踩坑。你需要注意学习公司的管理制度。<br>
<img src="https://static001.geekbang.org/resource/image/23/cb/23c0be2ed081295c4025e9a02bba15cb.jpg" alt=""></li>

## 思考题

这就是今天的全部内容，留一道课后思考题给你吧。

你在P5这个级别上停留过或者已经停留了多长时间？如果时间很短，你的技巧是什么；如果时间比较长，你觉得问题在哪里？

欢迎你把答案写到留言区，和我一起讨论。相信经过深度思考的回答，也会让你对知识的理解更加深刻。<br>
<img src="https://static001.geekbang.org/resource/image/a6/96/a6005bf0095fc325e4acbed7d22bec96.jpeg" alt="">
