创业公司的前端日常:从面试题到凌晨三点的构建报错
去年夏天,我——一个中文系毕业、靠自学啃完《JavaScript高级程序设计》的“伪程序员”,居然真的在上海一家二十来人的创业公司拿到了前端offer。当时HR问我:“你非科班,能扛住节奏吗?”我嘴上说“没问题”,心里其实慌得一批。毕竟,我的简历里除了几个GitHub小项目,连个正经实习经历都没有。
入职第一天,我就被拉进了一个叫“闪电交付”的项目群。产品经理在群里@全体成员:“双周迭代,下周上线MVP,UI稿今晚发。”我默默打开VSCode,看着满屏的插件图标(Prettier、ESLint、Volar、Auto Rename Tag……装得比同事还多),心想:这哪是写代码,这是跑马拉松,还是没热身那种。
面试题挑战?不,是每日生产环境实战
很多人以为面试题只是用来刷LeetCode的,但在我们这种人手紧缺的创业公司,面试题就是日常bug的简化版。上周五晚上九点,线上用户反馈“提交订单后页面白屏”。我一查日志,好家伙,Cannot read property 'map' of undefined——典型的后端接口字段缺失,前端没做兜底。
这不就是面试常问的“如何处理异步数据边界情况”吗?可现实比题目狠多了。面试时你可以说“用optional chaining”,但生产环境里,你得同时考虑:
- 接口文档是否更新了?
- 测试有没有覆盖这个路径?
- 运维能不能快速回滚?
最后我加了个if (!data?.items) return <ErrorFallback />,顺手写了条单元测试。第二天晨会,后端小哥尴尬地挠头:“啊,我改了字段名忘了通知你们……”产品经理在旁边幽幽补一句:“所以,这就是为什么我们要搞接口契约。”
你看,在这里,每一个线上事故,都是一道带血的面试题。没人考你红黑树,但会考你“凌晨两点收到报警短信怎么稳住心态”。
工具不是装饰品,是续命丹
作为一个文科生,我深知自己算法弱、底层知识薄,所以特别迷信工具。我的VSCode堪称“前端瑞士军刀”,光是主题就换了三个——从One Dark Pro到GitHub Dark,最后定格在Catppuccin,因为“粉色让报错看起来没那么可怕”。
但工具的价值,不在炫技,而在把重复劳动自动化到极致。举个例子:我们项目用的是Vite + Vue3 + TypeScript,每次发布前都要手动检查:
- 环境变量是否正确?
- 静态资源是否压缩?
- 是否有console.log残留?
后来我搞了个pre-commit钩子,配合husky + lint-staged,提交代码时自动跑:
{
"lint-staged": {
"*.{js,ts,vue}": ["eslint --fix", "prettier --write"]
}
}
再配个自定义script:
# deploy.sh
npm run build && aws s3 sync dist/ s3://our-bucket --delete
结果上周三,新来的实习生不小心把console.log('老板今天又提了三个需求')提交了。CI流水线直接卡住,GitLab Pipeline标红,他吓得脸都白了。我拍拍他说:“没事,工具帮你拦住了社死现场。”——工具的意义,就是让人类少犯低级错误。
我还用VSCode的Remote - SSH插件直接连测试服务器改配置,用Live Server实时预览静态页,甚至用Draw.io插件画架构图(虽然最后都被UI设计师吐槽“像小学生手绘”)。这些看似花里胡哨的插件,在deadline压顶时,真能省下半小时救命时间。
创业公司的“自由”与“枷锁”
有人说创业公司自由,想用什么技术栈就用什么。确实,没人管你用React还是Vue,只要能按时交付。但自由背后是责任——你选的技术,出了问题你背锅。
上个月我提议引入Vitest替代Jest,理由是快、轻量、和Vite无缝集成。团队同意了,结果迁移过程中发现几个测试用例依赖Jest的mock机制,Vitest不兼容。那两天我天天加班到十点,一边查文档一边骂自己“为什么要折腾”。
但搞定之后,测试速度从42秒降到8秒。CI流水线绿得飞快,连运维大哥都夸:“你们前端终于不拖后腿了。”那一刻,所有的焦虑都值了。
创业公司没有“前端架构师”这种角色,你既是开发者,又是半个DevOps,偶尔还得客串UI评审。上周产品经理拿着Figma问我:“这个动效能不能像苹果官网那样丝滑?”我表面微笑,内心OS:“你当我是Jonathan Blow啊?”
但正是这种“啥都得会一点”的环境,逼着我快速成长。为了优化Lighthouse评分,我啃完了Web Vitals文档;为了排查内存泄漏,我学会了用Chrome DevTools的Performance面板;最近还在研究怎么用AI生成组件代码——毕竟,在人少活多的地方,偷懒是第一生产力。
给非科班同行的一点真心话
如果你也和我一样,半路出家、心里没底,我想说:别怕暴露短板,但要快速补位。
我刚入职时连Webpack配置都看不懂,现在能手写一个简易打包器(虽然只支持JS)。秘诀无他,就是“遇到问题—查资料—动手试—记笔记”四步循环。我把每次踩坑都整理成Notion文档,标题诸如《又双叒叕被CORS整崩溃了》《Promise.all和race的区别,这次我记住了》。
另外,别迷信“大厂标准”。创业公司资源有限,有时候“能跑就行”比“架构优雅”更重要。先把功能做出来,再迭代优化,这是生存法则。
最后,保持一点幽默感。上周我写了个函数叫handleProductManagerDemand(),注释是“此处应有禅宗公案”。同事看到了笑出声,紧张的氛围瞬间缓解。代码可以烂,心态不能崩。
写这篇文章的时候,窗外上海的雨下了一整天。我租的房子离公司步行十分钟,省下的通勤时间全用来debug了。有时候会想,如果当初继续做编辑,是不是能准时下班、周末爬山?但每当看到自己写的代码跑在成千上万人的手机上,那种成就感,又让我觉得——这条路,虽然歪歪扭扭,但走对了。
对了,明天又有新需求评审。据说要接入AI客服。看来我的“学习AI相关技术”计划,不再是兴趣,而是生存必需了。
| 工具/方法 | 创业公司适用度 | 我的使用频率 |
|---|---|---|
| VSCode插件全家桶 | ⭐⭐⭐⭐⭐ | 每天 |
| 自动化CI/CD | ⭐⭐⭐⭐ | 每次提交 |
| 单元测试 | ⭐⭐⭐ | 新功能必写 |
| 技术方案文档 | ⭐⭐ | 能省则省 |
| 深夜emo式自我怀疑 | ⭐⭐⭐⭐⭐ | 每周五晚 |
共勉。

评论 0