关于技术探索与实践的一些经验:一个被裁成都程序员的自白

代码轻食主义
2026-05-22 00:00
阅读 1122

去年十月,我坐在高新区一家咖啡馆里,手里攥着刚签完字的离职协议,心里五味杂陈。HR临走前拍了拍我肩膀说:“公司调整,不是你能力问题。”
我点点头,没说话——但心里清楚:在成都这个“卷不动也躺不平”的二线城市,35岁、拿15k月薪、做着重复CRUD的全栈开发,被优化只是时间问题。

那天晚上回家,老婆看我脸色不对,小心翼翼问:“是不是……裁员了?”
我说:“嗯,N+1,到手不到4万。”
她沉默了几秒,然后说:“没事,房租才3500,咱们省点花,你接点外包吧?”

于是,我就这么一头扎进了自由职业的深水区。


项目从哪来?现实比想象骨感

刚开始接外包,天真地以为自己会HTML/CSS/JS + Vue + Node.js就能横着走。结果呢?客户张口就要“小程序+H5+后台管理三端打通”,预算2万,还要求“两周上线”。

第一个项目是个本地健身房的小程序。老板姓李,四十多岁,头发稀疏,操着一口川普:“小王啊,我看隔壁瑜伽馆那个系统就挺流畅,你要做个更好的!”
我说:“李哥,他们用的是成熟SaaS,我们从零开发,至少得6周。”
他摆摆手:“不用那么复杂,就是个预约+打卡+发券,你不是全栈吗?一周搞定嘛!”

我差点当场裂开。

但为了活下去,还是硬着头皮接了。技术栈选了最熟悉的组合:Vue3 + Vite + Pinia 做前端,Node.js + Express 写后端,MySQL 存数据。一切看起来稳如老狗,直到……部署那天。

服务器用的阿里云最低配(99元/年那款),上线第一天并发用户还没超过50,数据库连接池就爆了。用户一点击“预约”,页面转圈三分钟,最后报错“Network Error”。李老板电话打过来,语气都变了:“你这系统是不是写得太‘高级’了?”

那一刻我真想把代码仓库直接删了跑路。


Javascript 的“灵活”到底是福还是祸?

干了这么多年前端,我一直觉得 JavaScript 是门“包容性极强”的语言——变量不用声明类型、函数可以随便传参、异步还能靠 callback 嵌套十层。但在外包这种“快交付、低预算、高期望”的场景下,这种“灵活”简直是在给自己挖坟。

比如那个健身房项目,我用了原生 JS 写了一些工具函数,没加 TypeScript。结果中途要加一个“会员等级自动升级”逻辑,因为某个字段名前后不一致(userLevel vs level),线上直接算错了积分,导致三十多个用户被错误降级。李老板差点报警。

后来我痛定思痛:外包项目再小,也必须上类型系统。于是第二个项目,我直接上了 TypeScript + ESLint + Prettier 全家桶。虽然前期多花了半天配置,但后期改需求时,至少不会因为拼写错误让客户骂娘。

说到底,JavaScript 像是一把没开刃的菜刀——你用得好是大厨,用不好就是厨房杀手。尤其是在没人 Code Review、没人 QA 的单人作战模式下,自律比框架更重要


Windsurf?不,是我自己的“冲浪”翻车现场

说到技术选型,去年底我还踩过一个大坑——盲目追新

当时看到 Twitter 上一堆人在吹一个叫 Windsurf 的新框架(注:这里指代某类新兴前端框架,非真实产品名,仅为行文需要)。宣传语写得天花乱坠:“极致性能”、“零配置 SSR”、“AI 自动优化代码”……我一看,好家伙,这不就是为我这种单兵作战的外包仔量身定制的吗?

立马拉了个 demo 项目试水。文档写得贼漂亮,但实际跑起来 bug 多到离谱:热更新随机失效、build 后静态资源路径错乱、连 basic auth 都要自己 hack 实现。更离谱的是,社区几乎没人用,GitHub issues 下清一色是作者自问自答。

我熬了三个通宵,最后发现连个简单的表单提交都搞不定。客户那边催进度,我只好连夜回滚到 Vue + Nuxt 组合。那一周,我每天睡不到五小时,咖啡当水喝,体重掉了八斤。

老婆看不下去了,说:“你图啥?又不是在大厂搞技术预研,客户要的是能用的系统,不是你的技术简历。”

这句话点醒了我。

外包的本质是交付价值,不是炫技。客户不在乎你用的是 React 还是 Svelte,是 Webpack 还是 Vite,他们只关心:能不能按时上线?会不会崩?要不要额外花钱修 bug?

从此以后,我的技术选型原则就一条:成熟、稳定、社区活跃、文档齐全。哪怕它“不够酷”,但能让我晚上睡得着觉。


从“被动接单”到“主动筛选”:我的转折点

真正让我走出泥潭的,是一个偶然的机会。

今年三月,一个前同事介绍了个私活:帮一家做跨境电商的小公司重构后台管理系统。预算不高,8万,周期两个月。但他们有个特殊要求:必须支持多语言、多时区、实时库存同步

我一开始犹豫——这种需求通常意味着复杂状态管理和高频数据更新,搞不好又是坑。但转念一想:如果我能搞定,以后就能接更高单价的项目。

这次我没急着开工,而是花了三天和客户深度对齐需求,画了完整的流程图,甚至模拟了用户操作路径。技术栈我做了严格对比:

方案 前端 状态管理 后端 实时通信
A React + Next.js Zustand NestJS Socket.IO
B Vue3 + Nuxt Pinia Express SSE
C SvelteKit —— Hono WebSockets

最终选了 B 方案。原因很简单:我对 Vue 生态最熟,Pinia 足够轻量,Express 虽然“老”,但写 CRUD 快如闪电,SSE(Server-Sent Events)比 WebSocket 更适合这种“服务端推库存变更”的场景,且不用处理复杂连接管理。

项目做完,客户非常满意,还主动介绍了两个朋友给我。更重要的是,这次我收了 22k/月 的外包费(按阶段付款),远超之前坐班的15k。

关键不是技术多牛,而是你能不能用最稳妥的方式解决客户的真实痛点


给同样在挣扎的同行几点建议

如果你也在成都,或者任何二线城市的外包路上摸爬滚打,听我一句劝:

  1. 别迷信“新技术”:Windsurf 很酷,但客户要的是系统能跑起来。优先选你熟练、社区有答案的技术栈。
  2. 合同一定要写清楚范围:口头承诺等于零。需求变更必须加钱,不然你会被榨干。
  3. TypeScript 是底线:哪怕项目再小,也要上 TS。它不能帮你赚钱,但能防止你亏钱。
  4. 学会说“不”:客户说“这个功能很简单”,你得反问“您能具体描述一下交互吗?” 模糊需求是项目的癌症。
  5. 留出 buffer 时间:承诺两周交付?实际按三周排期。外包没有 PM 帮你挡枪,你自己就是防火墙。

结语:在低工资的城市,靠技术尊严活着

现在我在成都租了个小两居,月租3800,老婆找了份线上客服的工作,收入勉强覆盖生活开销。我不再焦虑明天有没有单子,因为我学会了用专业换尊重,用交付换信任

技术探索当然重要——我依然会在周末研究 Bun、Qwik、Astro 这些新玩意儿,也会在本地跑个 demo 玩玩。但工作项目?对不起,我只用经过验证的“老家伙”。

上周五晚上,我又在那家高新区的咖啡馆写代码。邻座两个年轻人在讨论“如何用 AI 自动生成全栈应用”。我笑了笑,低头继续调试我的 Pinia store。

他们或许代表着未来,但我得先活过今天。

在这个时代,真正的技术自由,不是你能驾驭多少新框架,而是你有能力选择不被烂项目绑架

共勉。

评论 0

最热最新
暂无评论
代码轻食主义Lv.1
0
影响力
0
文章
0
粉丝