用一张看板管住 12 周学习
数据建设的 12 周计划,之前散在两个文档、一张日历和我的记忆里:今天学一点,下周就找不到。后来我把计划收进一个 JSON,写了个小脚本,生成一张能打勾、能看进度、能把里程碑导进日历的看板。
一、问题:学一点,散一桌
2026 年 10 月 10 日,我给自己立了 12 周的数据建设计划,要补五块能力:采集、存储、建模、BI、治理。计划本身不复杂,问题是它没有固定形态——学习路线在一个文档,每天的时间块在另一个文档,里程碑只在我脑子里。学一点、散在桌面上,下周就找不到。
所以我要的不是一张好看的图,而是一个开工前能回答三个问题的地方:现在在哪个环节?落在第几周?下一个硬日期是什么时候?
二、只留一份数据:看板数据.json
看板里所有内容都来自同一个 JSON:12 个周次的起止日期、4 个阶段、5 个环节、每日 4 段时间、10 条里程碑。
环节是主角,每条写清定位、现状、要补、工具、验收和周次。比如存储:现状是「只会写 SQL 查询,从没装过数据库」;要补的是装 PostgreSQL,掌握表规范里的主键、索引、字段注释;验收是能完整口述「数据从哪来 → 存哪 → 怎么查」。
阶段把周次和环节绑在一起:阶段 0 用第 1–2 周打通存储和 BI,验收是「导入 → 查询 → 一张图」;阶段 1 第 3–4 周补采集;阶段 2 第 5–8 周做建模分层,要三层结构加 3 张指标表;阶段 3 第 9–12 周做 BI 与治理。
看板数据.json 里写着它的来源:派生自职业发展规划和学习路线两个文档,结论以上游为准。看板只负责把计划变成能看的形态,不负责发明计划。
三、构建脚本:把 JSON 塞进模板
生成器是 构建看板.mjs,做的事很少:读 看板数据.json,读 模板.html,把 /*__DATA__*/ 占位符替换成序列化后的 JSON,写出 职业工程看板.html;顺带把里程碑写成 职业工程里程碑.ics。
node 构建看板.mjs
脚本不大,但该拦的都拦了:JSON 解析失败、缺少 环节 或 周次 数组、模板里找不到占位符,都会打印 [构建失败] 并以退出码 1 结束——宁可不生成,也不生成一张缺数据的页面。写进 HTML 前,JSON 会先缩进,再把尖括号转义成 \u003c,免得字符串被当成标签解析。
四、三张视图,加一张
看板打开后有四块,用标签切换:
- 建设链路:采集 → 存储 → 建模 → BI → 治理,五个节点横排。点开任一环节看现状、要补与验收;勾掉「验收已通过」,进度从 0 / 5 验收开始动。
- 12 周排期:四个阶段按周排成甘特条,点环节会高亮它所在的阶段,能一眼看出哪几周并行。
- 日历:按月铺开,阶段用颜色区分,里程碑打点,悬停能看到标题和说明。
- 每日分配:08:00–22:00 的竖直时间轴,四段安排按真实起止时间落块。
前三个视图是建档时定的;每日分配是后来补的。README 的变更记录写着:最初是「三视图 + 进度打勾 + 日历导出」,同一天又追加了「每日分配」小时–分钟视图。进度存在浏览器本地(localStorage):不用后端,勾完刷新不丢;但换设备、换浏览器就是另一份进度,不同步也不备份。
五、每日分配:把一天拆到小时–分钟
这张视图回答另一个问题:计划落到每天到底怎么过。
| 时间 | 安排 |
|---|---|
| 09:00–10:30 | 投递与跟进:确认回复 → 跟进 3 家有回音 → 补台账 / 投 1–2 家 |
| 10:30–11:30 | 行测 · 图形 + 资料:图形 8 题 + 资料 2–3 篇,限时 60 秒/题 |
| 14:00–17:00 | 数据建设:前 30 分钟手写 SQL 5 题,之后推阶段 0 最小闭环 |
| 19:30–21:00 | 行测 · 银行 EPI:言语 + 数量 + 判断,限时成套 |
JSON 里还有一条每日说明:每天 7 小时、周一至周六、周日休息,睡前 5 分钟查邮箱,笔试前 5 天暂停数据建设。时间轴按 08:00–22:00 铺开,每小时 48 px,块的位置由起止时间换算——改 JSON 里的时间,块会自己挪。
六、里程碑导出 .ics
日历视图里提供 职业工程里程碑.ics 下载。构建脚本把每条带日期的里程碑写成全天日程:UID 用日期加序号生成,DTSTART/DTEND 是日期值,标题与说明转义后放进 SUMMARY 和 DESCRIPTION。我真正盯的是五个节点:
| 日期 | 里程碑 |
|---|---|
| 2026-10-18 | 阶段 0 完成 |
| 2026-11-01 | 阶段 1 完成 |
| 2026-11-15 | 洞察平台 MVP 上线 |
| 2026-12-06 | 阶段 2 完成 |
| 2027-01-03 | 阶段 3 完成 |
导入手机日历后,这些日期会以全天日程出现,不用再靠记;日期变了就重新生成、重新导入一次。
七、维护约定:改 JSON,重跑
为了让它一直能用,我定了同步约定:任何时间或日期安排变更都走三步——改 看板数据.json,跑 node 构建看板.mjs,双击 职业工程看板.html 看结果。投递节奏、行测安排、数据建设排期、笔试/面试日期都算在内。
几个边界必须记住:产物 HTML 和 .ics 不要手改,会被覆盖;双击打开是 file://,页面读不了外部 JSON,所以必须重跑构建;如果起一个本地服务(python -m http.server 8000),页面会自动拉取 JSON,改完刷新就行。
要改看板内容,只动 看板数据.json,然后跑 node 构建看板.mjs;不要手改产物。
八、反思
看板做完之后,计划第一次有了形状:开工前看一眼就知道今天该推哪个环节,里程碑进了手机日历,勾选数就是进度。它没有让我变得更自律,但至少拖了多久一眼能看见。
两处不足:进度只存在本地浏览器里,换设备就断;JSON 仍要手动跟着上游文档改,上游一变,看板不会自己知道。要做到长期可用,得把进度挪到能同步的地方——那是另一个项目了。
现在这张看板已经完成了它的任务:把「12 周要做什么」从脑子里拿出来,变成能看、能打勾、能进日历的东西。