

# 如何把職位描述變成技能學習計劃

用一小組完整職位描述找出重複出現的職責。然後用一個專案證明這些職責。

這份計劃給必須選擇學習內容的人。你會得到一份技能矩陣和一份已排序的學習計劃。技能矩陣是一張表，列出技能、職責、類別和證明。

Actor 是一個託管的資料收集程式。Task 是一個已儲存的輸入預設。[LinkedIn Jobs Actor](https://apify.com/chronometrica/linkedin-jobs-scraper) 收集職位列。你閱讀這些列，並寫出計劃。Actor 不會標示技能。它不會量度你的能力。它不會撰寫計劃。

欄位是一個有名稱的輸入，或一個有名稱的輸出。一列是一筆收集到的職位紀錄。Build 0.2.19 已於 2026年10月13日檢查。它接受 `searchTerm`、`location`、`maxItems`、`maxPagesPerSearch`、`postedWithin`、`saveOnlyUniqueItems` 和 `fetchJobDetails`。

公開的 [技能需求 Task](https://apify.com/chronometrica/linkedin-jobs-scraper/examples/linkedin-skills-demand) 只是起步輸入。它不表示分析會代你完成。

一位 [應屆畢業生詢問應學習哪些技能](https://www.reddit.com/r/FresherTechJobsIndia/comments/1ncge8k/recent_data_science_graduate_seeking_advice/)。這個問題顯示需要作出學習選擇。它不能證明這份計劃會帶來面試。它也不量度任何職位市場的規模。

## 1. 寫明學習決定

收集職位廣告之前，先寫下四項選擇。一則 listing 就是一則職位廣告。

寫下一個職位族。職位族是一種職位，例如數據分析師。寫下一個級別。入門級是該職位的第一份工作。寫下一個市場。市場是你想工作的國家或城市。寫下你閱讀這些職位廣告的日期。

這是針對該選擇的學習計劃。它不是全國技能短缺的證明。它不是面試的承諾。

不要把高級職位和第一份工作的分析師職位混在一起。如果兩組都需要，分開研究每一組。不要在同一張表混合兩個市場。

本文稍後的課是原創虛構內容。它使用入門級數據分析師工作。它使用一個虛構市場，稱為市場一。閱讀日期是 2026年10月13日。同一個曆日也是 Actor 的檢查日期。日期相同不表示已收集這些職位。

## 2. 收集完整描述

標示技能之前，先檢查每一列。確認職位身份。確認全文存在。確認列數上限或失敗的執行是否停止了收集。兩者都可能沒有停止收集。

列數上限是你要求收集的最多列數。失敗的執行結果不明。不要把失敗的執行當成零個職位。

只把已儲存的 Task 輸入當作起點：

```json
{"searchTerm": "data engineer\nsoftware engineer\nproduct manager", "startUrls": [], "saveOnlyUniqueItems": true}
```

2. 收集完整描述

該輸入混合了數據工程師、軟件工程師和產品經理。用一個職位和一個市場取代這個組合。空白的 `startUrls` 清單是已儲存輸入的一部分。這個方法使用上文命名的七個欄位。

作第一次小檢查時，輸入這些值：

| 欄位 | 值 |
| --- | --- |
| searchTerm | data analyst |
| location | 你的一個市場 |
| postedWithin | any |
| maxItems | 3 |
| maxPagesPerSearch | 1 |
| saveOnlyUniqueItems | true |
| fetchJobDetails | true |

這次檢查是文字樣本。它不是每一個空缺職位。它不是對僱主的完整調查。

你覆核的每一列都保留這些輸出欄位：

| 欄位 | 它保存的內容 |
| --- | --- |
| jobId | 來源職位身份 |
| title | 職稱 |
| companyName | 僱主名稱 |
| locationRaw | 職位上的地點文字 |
| descriptionText | 職位描述 |
| descriptionStatus | 全文是否可用 |
| jobUrl | 來源職位的連結 |
| query | 該列的搜尋字詞 |
| searchLocation | 你搜尋的市場 |
| scrapedAt | 收集該列的時間 |

`descriptionStatus` 有兩個有用的值。`full` 表示描述足夠完整，可以標示。`missing` 表示全文不可用。如果狀態是 missing，不要標示技能。把該列計為缺口。

單靠職稱可能漏掉職責。短摘錄可能藏起一項必須職責。它也可能使一項優先技能看起來像必須技能。請閱讀 `descriptionText`。

部分可選欄位可能不存在。不存在不等於零。如果 `companyName` 不存在，僱主不明。不要編造名稱。如果 `jobUrl` 不存在，只有在 `jobId` 仍能識別該列時才保留該列。

用 `jobId` 去掉同一則職位廣告的重複副本。保留一份。不要只因為同一僱主刊登了兩則，就去掉兩則不同的職位廣告。每則職位廣告都保留僱主。一個僱主有多則職位廣告時，可使某項技能看起來比實際更常見。

檢查 `query` 和 `searchLocation`。如果它們不符合你的職位和市場，不要把該列放入這一組。如果 `locationRaw` 寫的是另一個市場，排除該職位廣告。不要把它混入市場一，或混入你的真實市場。

對 build 0.2.19 的對照檢查收集了三個來源職位 ID。它也收集了來源 URL、收集時間和完整的 `descriptionText`。該對照使用不同的職位和不同的市場。它達到三列上限。那三列不是該市場的全部職位。對照顯示可以收集全文。它不為數據分析師工作選擇技能。它不支持下面的虛構計數。

## 3. 每個技能保存一列證據

一次閱讀一份完整描述。每項技能或職責，保存一列證據。

保存職位、僱主和來源原句。有真實 `jobUrl` 時，保存來源連結。保存簡短技能名稱、要求類別、職責和一則備註。

要求類別是你讀完句子後給予的標籤。只用四個標籤。

- 必須：文字說你一定要有該技能。
- 優先：文字要求該技能，但沒有說它是必須的。
- 背景：文字提到一項工具，但不是用來考核你。
- 未能判斷：你不能從字句判斷類別。

「We use Python」這句不足夠。不要只憑這句把 Python 標為必須。標為背景或未能判斷。

保留原來的字句。在標示類別之前，不要把它們換成更順的句子。

[原始詞數](/zh-Hant/articles/%E8%81%B7%E4%BD%8D%E6%8F%8F%E8%BF%B0%E6%8A%80%E8%83%BD%E7%94%A8%E8%AA%9E%E9%BB%9E%E7%AE%97/) 把每次提及都當作相等。類別可阻止這個錯誤。優先技能不是必須技能。背景提及不是你必須最先學習的技能。

## 4. 保持一份小技能清單

為每項技能選一個簡短技能名稱。把原來的字句留在該名稱旁邊。

SQL 是用來向表格提問的語言。只有當文字指的是同一種語言時，才對 SQL 和 Structured Query Language 使用同一個技能名稱。

不要合併 Java 和 JavaScript。它們是不同的語言。不要把圖表工作和一個產品名稱合併。不要把每項雲端服務合併成一項技能。雲端服務是經互聯網使用的軟件。不同服務可以是不同技能。

同義詞是同一技能的不同字詞。你親手決定同義詞。如果兩個標籤互相衝突，兩則備註都保留。不要聲稱自動技能工具做了這項工作。這個 Actor 不會標示技能。

## 5. 分開計算職位廣告和僱主

職位廣告數目是有多少則不同的職位廣告在該類別寫出該技能。僱主數目是有多少個不同僱主寫出它。同一僱主的三則職位廣告是三次職位廣告提及。它們仍然是一個僱主。

報告類別時同時給出兩個數目。只用有全文的職位廣告作為職位廣告總數。不要把結果稱為客戶需求。不要稱為全國比率。不要稱為招聘增長。這種搜尋不是所有職位的隨機樣本。

### 虛構樣本

下面的表是原創虛構內容。它們用來教會計數。它們不是 Actor 輸出。它們不是那三列對照。

虛構內容有六則你可以標示的職位廣告。五個僱主刊登了它們。僱主 A 刊登 J1 和 J2。僱主 B 刊登 J3。僱主 C 刊登 J4。僱主 D 刊登 J5。僱主 E 刊登 J6。標籤 J1 至 J7 是課文名稱。它們不是來源 ID。這份虛構內容沒有來源 URL。在真實的表中，保存 `jobId` 和 `jobUrl`。

已收集的第七列 J7 沒有 `descriptionText`。它的虛構狀態是 missing。它的技能未知。未知不是零。不要把 J7 計入技能數目。寫明這個缺口。七列已收集列之中，有一列不能標示。技能所用的職位廣告總數是六，不是七。

| 職位 | 僱主 | 全文 | SQL | 試算表 | Python | 儀表板產品 |
| --- | --- | --- | --- | --- | --- | --- |
| J1 | A | 有 | 必須 | 必須 | 未說明 | 未說明 |
| J2 | A | 有 | 必須 | 未說明 | 優先 | 未說明 |
| J3 | B | 有 | 必須 | 必須 | 未說明 | 未說明 |
| J4 | C | 有 | 必須 | 未說明 | 優先 | 未說明 |
| J5 | D | 有 | 未說明 | 必須 | 未說明 | 未說明 |
| J6 | E | 有 | 未說明 | 未說明 | 優先 | 背景 |
| J7 | 未知 | 沒有 | 未知 | 未知 | 未知 | 未知 |

「未說明」表示這段虛構文字沒有寫。它不表示該技能不存在於僱主的真實工作中。

| 職位 | 僱主 | 虛構原句 | 技能名稱 | 類別 | 職責 | 備註 |
| --- | --- | --- | --- | --- | --- | --- |
| J1 | A | 你必須使用 SQL 篩選及聯結銷售表格。 | SQL | 必須 | 篩選及聯結表格 | 「必須」表示類別是必須。 |
| J1 | A | 你必須使用試算表為每月結果繪圖。 | 試算表 | 必須 | 為每月結果繪圖 | 同一則職位廣告中的第二項職責。 |
| J2 | A | 報告工作必須使用 SQL。 | SQL | 必須 | 撰寫報告查詢 | 文字寫明必須。 |
| J2 | A | 額外檢查優先使用 Python。 | Python | 優先 | 額外檢查 | 優先不是必須。 |
| J3 | B | 你必須使用 SQL 和試算表核對訂單總數。 | SQL | 必須 | 核對總數 | 一句可以包含兩項技能。 |
| J3 | B | 你必須使用 SQL 和試算表核對訂單總數。 | 試算表 | 必須 | 核對總數 | 不要去掉第二項技能。 |
| J4 | C | 必須使用 SQL。 | SQL | 必須 | 查詢數據 | 必須可以單獨成立。 |
| J4 | C | Python 屬優先，而且不是必須。 | Python | 優先 | 沒有必須職責 | 文字拒絕必須這個標籤。 |
| J5 | D | 你必須在試算表清理一張表，並為它繪圖。 | 試算表 | 必須 | 清理並繪圖 | 文字沒有 SQL。不要加上它。 |
| J6 | E | 優先使用 Python。 | Python | 優先 | 沒有必須職責 | 只是優先。 |
| J6 | E | 團隊使用一項儀表板產品做內部圖表。 | 儀表板產品 | 背景 | 不是對申請人的考核 | 不要把這項標為必須技能。 |
| J7 | 未知 | 沒有描述文字。 | 無 | 未知 | 未知 | 缺口。不要記入零項技能。 |

| 技能 | 類別 | 職位廣告 | 職位廣告數目（6 則之中） | 僱主 | 僱主數目（5 個之中） |
| --- | --- | --- | --- | --- | --- |
| SQL | 必須 | J1, J2, J3, J4 | 4 | A, B, C | 3 |
| 試算表 | 必須 | J1, J3, J5 | 3 | A, B, D | 3 |
| Python | 優先 | J2, J4, J6 | 3 | A, C, E | 3 |
| 儀表板產品 | 背景 | J6 | 1 | E | 1 |

必須的 SQL 出現在六則職位廣告中的四則。這些職位廣告屬於五個僱主中的三個：A、B 和 C。J1 和 J2 都來自僱主 A。第四則 SQL 職位廣告增加一則職位廣告。它不增加一個僱主。

必須的試算表工作出現在六則職位廣告中的三則。這些職位廣告屬於五個僱主中的三個：A、B 和 D。僱主 D 要求試算表，而且沒有提及 SQL。

優先的 Python 出現在六則職位廣告中的三則。這些職位廣告屬於五個僱主中的三個：A、C 和 E。在這張表中，Python 不是必須。

儀表板產品只在 J6 是背景。六則職位廣告都沒有把它標為必須。這個「沒有」是這六段文字的標籤計數。它不是一個國家的結果。J7 仍然未知，所以它不屬於那個「沒有」。

關鍵詞排名會把 SQL 放在第一，因為四多於三。然後它會使試算表和 Python 並列。它也可能保留儀表板產品。那個排名是錯誤的學習次序。

僱主數目使 SQL、試算表和 Python 相同，各有三個僱主。要求類別然後把 Python 放到兩項必須技能之後。它也把儀表板產品移出學習清單。多出的 SQL 職位廣告是僱主 A 計算了兩次。不應因此把 SQL 單獨排在試算表工作之前。

不要把六則中的四則變成一個國家所有職位的比率。六則中的四則只描述這組虛構內容。

## 6. 標明你已有的證明

履歷上的技能名稱不是證明。證明是另一個人可以檢視的完成工作。一條查詢可以是證明。一張已清理的表格可以是證明。一張附有書面決定的圖表可以是證明。

把每項重複職責標為已有、部分或不存在。已有表示經檢視的證明存在。部分表示職責有一部分已展示，有一部分缺少。不存在表示沒有展示證明。不要編造錄用分數。不要預測面試。

在這份虛構內容中，學習者可以寫出基本的 SQL 篩選。篩選保留部分列，並去掉其他列。該證明是已有。學習者沒有完成的聯結。聯結用共用鍵連結兩個表格。該證明不存在。學習者沒有總數已核對的報告。核對是指輸出總數與輸入總數相符。該證明不存在。試算表圖表也不存在。Python 不是第一個缺口，因為它的類別是優先。

| 職責 | 為何它在樣本中 | 這份虛構內容中的證明 | 標記 |
| --- | --- | --- | --- |
| SQL 篩選 | 在 SQL 職位廣告中屬必須 | 可以寫出基本篩選 | 已有 |
| SQL 聯結 | J1 寫了篩選和聯結。僱主是 A。 | 沒有完成的聯結 | 不存在 |
| 核對總數 | J3 要求這項職責。僱主是 B。 | 沒有已核對的報告 | 不存在 |
| 試算表圖表 | 圖表職責出現在 J1 和 J5。僱主是 A 和 D。 | 沒有完成的圖表 | 不存在 |
| Python | 只屬優先 | 不選為第一個缺口 | 稍後 |
| 儀表板產品 | 只屬背景 | 不是必須職責 | 不列入 |

技能廣度不是具體職責廣度。SQL 技能涵蓋 3 個僱主。試算表技能涵蓋 3 個僱主。聯結職責出現在僱主 A 的 J1。核對職責出現在僱主 B 的 J3。圖表職責出現在僱主 A 和 D 的 J1 和 J5。合起來，這項明確的職責證據涵蓋僱主 A、B 和 D。它不涵蓋僱主 C。這些職責並非每一項都涵蓋 3 個僱主。

再做篩選練習會重複已經存在的證明。缺少的必須證明是聯結、已核對的總數和圖表。第一個專案必須涵蓋這些缺口。不要讓 J2 單獨把 Python 變成整份計劃。

## 7. 選擇一個專案

在這份虛構內容中，使用 SQL 聯結、核對和試算表圖表。這組是刻意的組合。三項職責適合一份工作。三項都連繫到必須文字。聯結職責出現在僱主 A 的 J1。核對職責出現在僱主 B 的 J3。圖表職責出現在僱主 A 和 D 的 J1 和 J5。合起來，明確的職責證據涵蓋僱主 A、B 和 D。它不涵蓋僱主 C。SQL 技能涵蓋 3 個僱主。試算表技能涵蓋 3 個僱主。技能廣度不是具體職責廣度。這些職責並非每一項都涵蓋 3 個僱主。

有用的專案證明該工作。一長串工具不會使它有用。寫下你必須先練習的技能。先練習基本聯結和試算表求和。在你能解釋 SQL 和試算表結果之前，不要加入 Python。

驗收檢查是一項測試，用來說明專案已完成。下面的檢查是計劃。它們不是已量度的學習者結果。本文沒有執行查詢。下面的總數是對測試樣本的人手檢查。

測試樣本是一小組虛構列，用於這項測試。保持輸入列不變。

客戶列：4 個客戶 ID。

| customer_id | customer_name |
| --- | --- |
| C1 | 北店 |
| C2 | 東店 |
| C3 | 西店 |
| C4 | 南店 |

訂單列：10 張訂單。

| order_id | customer_id | order_month | amount |
| --- | --- | --- | --- |
| O1 | C1 | 一月 | 10 |
| O2 | C1 | 一月 | 20 |
| O3 | C2 | 一月 | 15 |
| O4 | C2 | 二月 | 25 |
| O5 | C3 | 二月 | 30 |
| O6 | C3 | 二月 | 5 |
| O7 | C1 | 二月 | 40 |
| O8 | CX | 一月 | 12 |
| O9 | C2 | 一月 | 8 |
| O10 | CX | 二月 | 18 |

把這些讀成兩個不同的數目。客戶表有 4 個 ID：C1、C2、C3 和 C4。訂單使用 4 個不同的客戶鍵：C1、C2、C3 和 CX。其中三個訂單鍵是已知客戶 ID。一個訂單鍵未能對上。未能對上的鍵是 CX。C4 沒有訂單。CX 和 C4 不是同一事實。

憑目視，每個客戶 ID 出現一次。預期的重複客戶 ID 數目是 0。每個訂單 ID 也出現一次。這是對測試樣本的人手閱讀。它不是查詢結果。

人手總數，如果每張訂單都留在月份表：

- 一月的金額是 10、20、15、12 和 8。它們的和是 65。
- 二月的金額是 25、30、5、40 和 18。它們的和是 118。
- 兩個月的和是 65 和 118。它們的和是 183。
- 十張訂單的金額加總也是 183。
- CX 的金額是 12 和 18。它們的和是 30。
- 已對上的金額是 183 減 30，即 153。

一張包含每張訂單的正確月份表應顯示一月 65、二月 118，總數 183。圖表應顯示這兩個月份金額。本文沒有附上完成的圖表。你在試算表中建立圖表。

未能對上的訂單是 O8 和 O10。兩者都使用 CX。正確的未能對上鍵測試應指向這兩列。

這份虛構內容的專案簡述：

- 輸入：上面的 10 列訂單和 4 列客戶。
- 輸出：一張月份銷售表、一張試算表圖表，以及兩項書面發現。
- 方法：把訂單連結到客戶，標出 CX，並按月加總 amount。
- 品質檢查：用人手加總輸入，並使 183 與月份表相符。
- 展示：查詢文字、圖表、未能對上的鍵，以及一項限制。

從測試樣本應可以得出兩項發現。第一，CX 不在客戶表中，其金額是 30。第二，C4 沒有訂單。這些發現是預期解釋。它們不是某次執行的結果。

月份表的計劃查詢文字。本文沒有執行它。

```sql
SELECT o.order_month, SUM(o.amount) AS month_amount
FROM orders AS o
GROUP BY o.order_month
```

7. 選擇一個專案

未能對上訂單鍵的計劃查詢文字。本文沒有執行它。

```sql
SELECT o.order_id, o.customer_id, o.amount
FROM orders AS o
LEFT JOIN customers AS c
  ON c.customer_id = o.customer_id
WHERE c.customer_id IS NULL
```

7. 選擇一個專案

使用這些驗收檢查：

1. 原來的 10 列訂單和 4 列客戶保持不變。
2. 專案輸出報告 10 張訂單。
3. 專案輸出報告 4 個客戶 ID。
4. 專案輸出報告訂單上有 4 個不同的客戶鍵。
5. 這 4 個鍵被寫明為 3 個已知 ID，加上未能對上的鍵 CX。
6. 備註解釋 CX，而且不把它和 C4 混淆。
7. 人手檢查顯示訂單金額加總為 183，月份表加總也是 183。
8. 查詢文字和圖表都有展示。
9. 學習者解釋一項限制。

一項清楚的限制就足夠。例如，月份總數包含未能對上的 30，而已對上的總數是 153。另一項真實限制是，這個專案不能證明 Python。第三項是，六則虛構職位廣告不是全國結果。這些限制中的任何一項都可以通過最後一項檢查。

## 8. 排列計劃

把工作分成四部分。不要從優先技能開始。

第一部分是你先做的練習。在這個測試樣本上練習一次聯結。練習一次試算表求和。

第二部分是合併的專案。建立月份表。建立圖表。寫下兩項發現。

第三部分是覆核。另一位讀者使用驗收檢查。讀者不必信任一個分數。讀者可以數 10 張訂單、數 4 個客戶 ID、找出 CX，並加總金額。

第四部分是解釋。解釋未能對上的鍵。解釋一項限制。

這份虛構內容的排序很短。首先做聯結、核對和圖表。這些職責是必須的，而且證明缺少。這個專案是刻意的組合。明確的職責證據涵蓋僱主 A、B 和 D。它不涵蓋僱主 C。這些職責並非每一項都涵蓋 3 個僱主。SQL 技能涵蓋 3 個僱主。試算表技能涵蓋 3 個僱主。技能廣度不是具體職責廣度。接着，用這些檢查覆核該專案。只有在你能解釋該工作之後，才練習 Python。不要把儀表板產品列入技能計劃。

時段由你設定。時段是你選擇花的時間。它不是你會掌握該技能的承諾。在這份虛構計劃中，用一次不中斷的練習時段做練習。用一次不中斷的專案時段做專案。用同一次不中斷的時段做覆核和解釋。

如果你改變職位、級別或市場，收集一個新樣本。使用相同規則。不要把這個虛構排序用於不同職位。

## 下一步

在你自己的全文樣本中，選擇一項在不同僱主之間重複出現的必須職責。為一個能證明該職責的專案寫一項驗收檢查，並寫下第二個人可以測試的輸入數目。用 [LinkedIn Jobs Actor](https://apify.com/chronometrica/linkedin-jobs-scraper) 收集職位文字。從已儲存的 [技能需求 Task](https://apify.com/chronometrica/linkedin-jobs-scraper/examples/linkedin-skills-demand) 開始。用一個職位和一個地點取代三個混合職位，並保持較小的列數上限。

## 來源與延伸閱讀

- [LinkedIn Jobs Actor](https://apify.com/chronometrica/linkedin-jobs-scraper)
- [LinkedIn 職位描述技能需求數據集](https://apify.com/chronometrica/linkedin-jobs-scraper/examples/linkedin-skills-demand)
- [應屆數據科學畢業生尋求建議](https://www.reddit.com/r/FresherTechJobsIndia/comments/1ncge8k/recent_data_science_graduate_seeking_advice/)