我在创业公司当程序员的那些事
上周五晚上十点半,我坐在工位上,耳机里放着Lo-fi Beats,手指敲着键盘,盯着屏幕上一行行 Rust 代码发呆。这已经是本周第三次加班了——但奇怪的是,我居然不怎么烦躁。
两个月前刚入职这家不到20人的创业公司时,我还以为自己会天天被需求压得喘不过气,最后带着黑眼圈怒删 Git 分支跑路。结果呢?虽然确实忙,但这种“忙”里有种奇怪的踏实感。今天写这篇博客,不是为了灌鸡汤,而是想跟还在求职路上、或者刚进小公司的朋友们聊聊:在资源有限、人手不足的环境下,一个普通程序员是怎么慢慢找到节奏,甚至开始享受这种“混乱中成长”的感觉的。
从“简历石沉大海”到“收到offer那晚我睡不着”
先交代下背景:我是那种典型的“半吊子转码选手”。大学学的是电子信息,工作三年做过嵌入式、搞过一点数据分析,但一直对 Web 开发和系统编程有执念。去年秋招期间投了快100份简历,回复率不到10%。不是学历卡,就是经验不符——要不就要三年以上 React 经验,要不就要精通 Kubernetes。我看着招聘要求苦笑:“我就算把 GitHub 全部 star 都点一遍,也凑不出你们要的‘全栈’啊。”
直到某天刷脉脉,看到一家做 B2B 数据服务的创业公司在招“能写前端也能爬数据”的综合型后端。岗位描述里写着:“不要求精通所有技术,但要有快速学习和解决问题的能力。” 这句话直接戳中我——我不就是那个愿意边摸鱼边啃文档的人吗?
面试过程也很佛系:没有八股文轰炸,反而聊了两个小时项目思路。他们让我现场用 Python 写个简单的网页爬虫,再画个前端数据展示的草图。我一边写一边嘀咕:“这需求……不就是把我以前自学的东西串起来吗?” 结果当天下午 HR 就打电话说 offer 通过了。
入职第一天,CTO 老张(也是唯一的技术负责人)拍着我肩膀说:“咱这儿没人专门做前端,也没人专职写爬虫,你来就是干‘缝合怪’的——哪里缺人补哪里。” 当时我心里咯噔一下:完了,这是要让我一个人扛起整个技术栈?
第一个任务:用爬虫+前端搭个“数据看板原型”
果然,入职第三天就接到紧急需求:老板要给潜在客户演示一个行业数据监控平台,一周内出原型。功能很简单:抓取某垂直领域的公开数据(比如企业工商信息、新闻舆情),然后在前端展示成图表。
听起来是不是很基础?但问题在于:
- 没有现成的 API
- 没有设计稿
- 甚至没有明确的数据源
于是我开启了“摸鱼式开发”模式:上午听歌写代码,下午查文档踩坑,晚上回家继续肝(别问,问就是 deadline 在追杀我)。
爬虫部分:从 requests 到 reqwest 的跨越
一开始我本能地想用 Python + Scrapy,毕竟熟。但老张建议试试 Rust:“我们未来打算用 Rust 做高性能数据管道,你先熟悉下。” 我内心 OS:Rust?那玩意儿连 Hello World 都要 lifetimes 吧!
但架不住好奇心,我装了 rustup,新建了个项目,开始用 reqwest + tokio 写异步爬虫。第一次编译报错:
error[E0599]: no method named `text` found for struct `Response` in the current scope
哦,忘了 .await。加上之后又报:
error[E0716]: temporary value dropped while borrowed
……行吧,看来 lifetime 真不是吓唬人的。折腾两天后,终于跑通了一个能抓取 JSON 数据并存入 SQLite 的小模块。虽然代码丑得像被猫踩过的键盘,但至少能用。
小感悟:在创业公司,技术选型往往不是“最优解”,而是“最快能跑通的解”。你不需要一开始就写出完美架构,但你要能快速验证想法。
前端部分:React + Chart.js 的“缝合艺术”
爬虫搞定后,轮到前端。公司没 UI 设计师,只给了我一张手绘草图(真的,是纸上的!)。我用 Create React App 起了个项目,引入 Ant Design 做基础组件,再用 Chart.js 画折线图和柱状图。
过程中最崩溃的是跨域问题。本地开发时,前端请求爬虫服务返回 403。我试了各种 CORS 配置,最后发现是爬虫服务没加 Access-Control-Allow-Origin: *。改完重启,页面终于加载出来了——那一刻我差点哭出来。
更搞笑的是,产品经理临时加需求:“能不能加个‘数据更新时间’的提示?” 我默默在角落加了一行 <p>最后更新: {new Date().toLocaleString()}</p>,心想:这需求,比 Hello World 还简单。
“综合能力”不是万金油,而是解决问题的拼图
很多人觉得创业公司程序员就是“打杂的”:既要写后端,又要调前端,还得看日志、配 Nginx、回客户邮件。但我想说:这种“综合”恰恰是最锻炼人的。
举个例子:有一次线上爬虫突然大面积失败。运维同事不在(其实我们根本没有专职运维),我只能自己查。先是看日志:
[ERROR] Failed to parse HTML: unexpected EOF
怀疑是目标网站反爬升级了。于是打开浏览器 DevTools,发现页面多了一层 Cloudflare 验证。好家伙,直接封 IP。怎么办?
- 方案A:换代理池 → 成本高,维护麻烦
- 方案B:模拟浏览器 → 性能差,资源吃紧
- 方案C:找官方 API → 人家根本不开放
最后我灵机一动:既然只是演示用,能不能缓存历史数据 + 手动更新? 跟产品沟通后,他居然同意了!于是我在前端加了个“手动刷新”按钮,后端用 cron 每天凌晨跑一次增量抓取。虽然不够优雅,但解决了燃眉之急。
这件事让我明白:在资源有限的环境下,“技术理想主义”要向“业务现实主义”低头。你不需要每次都用最新最炫的技术,但你必须知道如何用最低成本达成目标。
摸鱼不是躺平,而是蓄力
很多人误解“佛系程序员”就是摆烂。其实不是。我的摸鱼是有讲究的:
- 上午精力好,写核心逻辑(比如爬虫解析)
- 下午犯困,就看文档、学新东西(最近在啃《Rust 权威指南》)
- 晚上安静,重构代码或写测试
而且我发现,在创业公司,“主动学习”比“被动加班”更有价值。比如我最近研究 Rust,不是因为领导逼我,而是意识到:如果未来公司要处理海量数据,Python 爬虫可能撑不住。提前学一点,以后就能少掉几根头发。
下面是我这两个月技术栈的对比:
| 技术方向 | 入职前 | 现在 |
|---|---|---|
| 爬虫 | Python + requests | Rust + reqwest / Python + Playwright |
| 前端 | 会用 Vue 写简单页面 | 能独立搭建 React 数据看板 |
| 综合能力 | 单点技能 | 能串联“数据获取→处理→展示”全流程 |
| 心态 | 害怕需求变更 | 学会和产品“协商式开发” |
你看,变化不大,但每一步都踩在实处。
给正在求职或初入职场的朋友几点真心话
别怕“综合型”岗位:大厂分工细,小厂要求杂。但后者反而让你快速建立全局视角。你知道数据从哪来、到哪去、怎么用,这种理解是纯后端或纯前端很难获得的。
爬虫不是“低端活”:很多人瞧不起爬虫,觉得“不就是解析 HTML 吗”。但真实场景中,反爬策略、数据清洗、增量更新、异常重试……每一环都能挖得很深。而且,能稳定获取数据的能力,在很多业务场景中就是核心竞争力。
前端别只当“切图仔”:现在前端早就不只是写样式了。状态管理、性能优化、与后端协作……尤其在小团队,你写的每个组件都直接影响用户体验和产品成败。
保持“可交付”心态:老板不关心你用了多少 design pattern,他只关心“这功能明天能演示吗”。所以,先跑起来,再优化。别一上来就想造轮子。
摸鱼要摸出生产力:我每天留1小时学 Rust,不是为了卷,而是为了下次遇到性能瓶颈时,能多一个选项。长期主义,藏在短期的“摸鱼”里。
最后:我为什么越来越喜欢这里?
上周双11,我们上线了第一个付费客户的数据看板。虽然只是一个 MVP,但客户反馈说:“比竞品快,数据也准。” 那天晚上,团队一起点了烧烤,老张举着啤酒说:“咱们这帮人,没一个是从大厂出来的,但干的事,一点都不比他们差。”
我笑着点头,心里却有点感慨。曾经我也焦虑过:没大厂背书、技术栈杂、项目不够“高大上”……但现在我觉得,在创业公司,你不是螺丝钉,而是拼图的一块。你的每行代码,都在直接推动产品前进。
当然,加班还是有的,需求还是会变,Bug 依然会半夜报警。但我不再像以前那样焦虑了。因为我清楚:只要保持学习,保持交付,保持一点点热爱,哪怕是在最“混乱”的环境里,也能长出自己的节奏。
对了,今天我又在摸鱼学 Rust。这次试着用 actix-web 写个轻量 API 服务,说不定下周就能替代现在的 Flask 后端。谁知道呢?反正耳机里的 Lo-fi 还在放,代码还能跑,日子就值得过下去。
PS:如果你也在小公司挣扎/成长,欢迎留言交流。我们可以一起吐槽产品、分享踩坑经验,或者……交换摸鱼歌单?🎧

评论 0