从县城远程办公到搞定自动化部署:一个30岁转行程序员的“简历加分项”实战记
去年十月的一个晚上,我坐在老家河南小县城15平米的次卧里,窗外是熟悉的广场舞音乐和邻居家炒菜的香味。老婆在客厅刷短视频,我则对着屏幕上一串红得发亮的 ERROR: Connection timed out 干瞪眼。那一刻,我突然意识到:自己这个“转行程序员”的身份,可能真要翻车了。
事情还得从三个月前说起。
转行不易,但房租省了3500块
我今年30岁,之前干了七年传统制造业的供应链管理,每天和Excel、ERP系统打交道,偶尔写点VBA脚本糊弄糊弄报表。2023年初,在老婆一句“你不是总说想搞技术吗?不如试试?”的鼓励下,我咬牙辞职,报了个线上全栈开发训练营,开始啃JavaScript、Node.js、Docker这些以前只在知乎上见过的词。
为了省钱,我们决定回老家——一个小县城,三线城市都算不上。租的房子月租才800,对比之前在深圳城中村3500的单间,瞬间感觉人生轻松了一半。老婆也找了份本地文员工作,虽然工资不高,但生活成本低,压力小了不少。
四个月后,我投了快200份简历,终于拿到一份远程前端开发offer,月薪15k。HR在电话里说:“看你简历上写了‘熟悉CI/CD流程’,那应该能独立部署项目吧?”我当时心里咯噔一下——简历上那句话,是我照着网上模板抄的,实际连啥叫CI/CD都说不利索。
但为了抓住机会,我硬着头皮答:“嗯,没问题!”
第一次上线,手抖得像帕金森
入职第一周,我就被安排接手一个内部管理后台的维护。项目不大,Vue + Express + MongoDB,跑在阿里云ECS上。周五下午,组长在群里@我:“小李,这个需求测试过了,今天下班前上线吧,很简单,就改了个按钮样式。”
我表面淡定回了个“OK”,心里慌得一批。
打开服务器SSH,手心全是汗。先 git pull,再 npm install,然后 npm run build……结果构建失败。报错说某个依赖版本不对。我一边查文档,一边在Stack Overflow疯狂搜索,手指抖得差点把终端关了。
折腾到晚上九点多,终于把dist目录扔进了Nginx。刷新页面——白屏。F12一看,404。原来路径配错了。
那天晚上,我老婆端来一碗热汤面,看我脸色不对,问:“又卡住了?”
我苦笑着点头:“感觉自己就是个‘简历工程师’,纸上谈兵还行,真上手就露馅。”
她拍拍我肩膀:“慢慢来,你才刚开始嘛。要不明天问问同事?”
第二天一早,我厚着脸皮在群里问:“有没有现成的部署脚本可以参考?”
没想到,资深后端老张直接甩过来一个GitHub链接:“用这个,我们都在用。”
点开一看,是个叫 Deployer 的轻量级部署工具,配合Git Hooks和Shell脚本,能一键完成拉代码、装依赖、构建、重启服务。
从“手动部署难民”到“自动化部署土著”
我花了一整个周末研究这个脚本。它其实不复杂:核心就是一个 deploy.sh 文件,里面定义了几个步骤:
#!/bin/bash
cd /var/www/my-app
git pull origin main
npm install --production
npm run build
pm2 reload app
再加上一个简单的配置文件,指定服务器IP、用户、路径。部署时,本地运行 ./deploy.sh,脚本会自动通过SSH执行远程命令。
但问题来了:每次都要输密码,烦死了。于是我又学了SSH免密登录,把公钥加到服务器 ~/.ssh/authorized_keys 里。第一次成功免密登录的那一刻,我激动得差点从椅子上跳起来——这不比手动敲命令酷多了?
更关键的是,我把这套流程整理成文档,提交到了公司Wiki。组长看了后居然在周会上夸我:“小李这新人挺靠谱,不仅解决问题,还沉淀知识。”
那一刻,我忽然觉得,自己好像真的有点“程序员”的样子了。
简历上的“熟悉CI/CD”,终于不是吹牛了
后来,我不满足于只用Shell脚本。毕竟,万一构建失败了,总不能半夜爬起来修吧?于是开始研究真正的CI/CD工具。
第一个尝试的是 GitHub Actions。免费、集成好、YAML配置清晰。我给自己的个人博客项目加了一个workflow:每次push到main分支,就自动跑测试、构建、部署到Vercel。
配置文件长这样:
name: Deploy Blog
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm install
- run: npm run build
- uses: amondnet/vercel-action@v20
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-args: '--prod'
虽然只是几十行YAML,但每次看到绿色的 ✅ 和自动发布的通知,那种“掌控感”真的爽到飞起。
再后来,公司项目也开始用 Jenkins 做更复杂的流水线:代码扫描 → 单元测试 → 构建镜像 → 推送Docker Hub → 部署K8s。我主动申请参与搭建,从零配置Jenkinsfile,踩了无数坑(比如权限问题、插件冲突、节点离线),但也学到了大量实战经验。
现在我的简历上,“熟悉CI/CD流程”后面可以理直气壮地加上:
- 使用GitHub Actions实现个人项目自动化部署
- 参与搭建基于Jenkins的微服务CI/CD流水线
- 编写Shell/Python部署脚本提升团队发布效率
不再是空洞的套话,而是实打实的开发心得。
开发心得:工具不是魔法,但能让你少加班
说实话,作为一个半路出家的程序员,我一开始总觉得“部署”是运维的事,开发者只要写好代码就行。但现实狠狠打了我的脸——在小团队或远程协作中,开发往往就是部署者。
而部署工具的价值,远不止“省时间”这么简单。它们带来的是:
- 可重复性:再也不用担心“在我机器上能跑”;
- 可追溯性:每次部署都有日志,谁在什么时候发布了什么,一清二楚;
- 心理安全感:半夜收到告警,知道一键回滚就能救命;
- 职业竞争力:面试时聊起部署优化,HR眼睛都亮了。
上周五晚上,我又一次接到紧急修复任务。这次,我淡定地在本地改完代码,推送到GitHub,喝了一口茶的功夫,Action跑完,生产环境已经更新。老婆路过看了一眼,笑着说:“你现在部署比煮泡面还快。”
我嘿嘿一笑:“那可不,这可是我吃饭的家伙。”
写给和我一样的转行者:别怕从“土法炼钢”开始
如果你也像我一样,30岁左右从传统行业转码,住在小城市远程办公,担心自己技术底子薄、经验少——我想说,别怕从最土的办法开始。
我第一个部署脚本就是纯手写的Shell,没有Docker,没有K8s,甚至连日志轮转都没做。但它解决了当时最痛的问题:别再让我半夜手动部署了!
工具的学习曲线确实陡峭,但每攻克一个环节,你的简历就多一分真实分量。更重要的是,你在积累“可迁移的能力” ——无论下一份工作用Jenkins还是GitLab CI,底层逻辑是一样的。
而且,远程办公其实是个优势:没人盯着你看,你可以大胆试错。在老家的小房间里,我摔过无数次“部署锅”,但没人嘲笑我,只有老婆递来的热茶和一句“再试一次”。
结语:部署工具,是我送给自己的“转行成人礼”
回看这一年,从那个对着服务器手抖的新手,到现在能独立设计部署方案的开发者,最大的变化不是技术,而是心态。
我不再把“部署”当成负担,而是视为交付价值的最后一环。每一次成功的自动化,都是对用户、对团队、对自己的负责。
最近有猎头联系我,说有个远程岗位,月薪22k,要求“有CI/CD实践经验”。我看了看JD,笑了——这不就是我过去半年天天在干的事吗?
或许,这就是转行的意义:你带着过去的阅历,用新的工具,解决真实的问题。而那些深夜调试部署脚本的时光,终将成为你简历上最扎实的一行字。
所以,别小看一个部署脚本。它可能就是你从“简历工程师”走向“真实开发者”的第一步。
共勉。

评论 0