技术探索与实践入门指南:一个从测试转开发的成都程序员自白
去年十月的一个周五晚上,我瘫在成都东郊记忆附近出租屋的沙发上,手机屏幕亮着,老婆在厨房切菜的声音“哒哒”作响。那天刚和领导开完季度复盘会——又被说了“代码质量一般”“业务理解不够深”。我盯着天花板,心里一阵发空。
三年前,我还是个手动点点点的测试工程师,月薪15k,在成都这座生活成本不高但工资也不高的城市里,勉强够用。房租3500,吃饭2000,老婆做设计,我们俩加起来月入不到28k,连个像样的车都不敢买。那时候天天被开发同事调侃:“你们测试不就是点按钮的嘛?”我嘴上笑笑,心里却憋着一股劲儿——我不想只是点按钮的人,我想成为写按钮的人。
于是,我开始了自己的“转型之路”。
一、起点:从测试到开发,不是换岗,是重生
决定转开发那会儿,其实挺狼狈的。白天上班测需求,晚上回家啃JavaScript。记得第一次尝试写一个简单的表单校验,if-else写了三层嵌套,结果还是漏了边界条件。第二天提PR(Pull Request)时,后端大哥直接在评论区甩了一句:“兄弟,你这逻辑比我奶奶织毛衣还绕。”
我当时脸都红了,但没敢反驳,默默改了五遍才过审。
那段时间,我几乎把所有业余时间都泡在了技术社区和文档里。最开始连Node.js和npm都分不清,看到Webpack配置文件就头大。但我有个执念:既然选择了这条路,就得走到能独当一面为止。
转折点出现在今年年初。公司内部有个小项目缺人手,领导随口问:“有没有人愿意试试前端?”我几乎是抢答:“我来!”
结果三天后,我就在工位上熬通宵调接口,眼睛干得像撒了盐。但当那个页面终于跑起来,数据正常渲染,交互丝滑流畅时,我居然有点想哭——不是因为累,而是因为我真的做到了。
从那以后,我的角色慢慢从“辅助测试”变成了“全栈打杂”,虽然title还没变,但活儿已经和开发无异。今年六月,我正式转岗为前端开发工程师,薪资涨到了22k。虽然在一线城可能不算什么,但在成都,这意味着我们可以考虑换个离地铁近一点的房子了。
二、工具进化:Kimi、通义千问和我的“AI外挂”
说实话,转型路上最大的帮手,除了我老婆每天给我煮的姜茶,就是这些AI工具了。
最早我用的是某国外大模型,但网络不稳定,响应慢,还经常抽风。直到今年三月,朋友推荐我试试Kimi。第一次用它解释Promise链式调用的原理,它不仅画了流程图(虽然是文字描述),还举了个外卖订单的例子:“就像你点了奶茶,等骑手取餐、配送、送达,每一步都得按顺序来。”
那一刻我突然就懂了。
后来我又试了通义千问(Qwen)。它的优势在于对中文技术文档的理解特别强。有一次我在看Vue 3的Composition API文档,遇到ref和reactive的区别搞不清,直接把那段英文文档丢给通义千问,它秒回:“简单说,ref适合基础类型,reactive适合对象。就像你存钱,零钱放钱包(ref),大额放银行卡(reactive)。”
笑死,但真记住了。
现在我的工作流基本是这样的:
- 遇到陌生概念 → 问Kimi要通俗解释
- 看不懂官方文档 → 扔给通义千问翻译+简化
- 写代码卡壳 → 让它们生成示例片段(但绝不直接复制!)
重点来了:AI是拐杖,不是腿。 我见过太多人直接Copilot一把梭,结果线上出Bug都不知道错在哪。我自己吃过亏——有次让AI生成一个防抖函数,结果它用了arguments.callee,在严格模式下直接报错。那次事故让我明白:你可以用AI加速学习,但不能用它代替思考。
三、JavaScript:我的“初恋语言”,也是最大痛点
作为前端入门语言,JavaScript简直是又爱又恨。
爱它,是因为生态繁荣、上手快、社区活跃。恨它,是因为隐式转换、this指向、异步回调这些坑,踩一个就能让你怀疑人生。
记得有次写一个购物车功能,用户点击“+”号增加数量。逻辑很简单:count++。但测试发现,有时候点一次变成“11”而不是“2”。排查半天,才发现后端返回的是字符串"1",而我没做类型转换。JS默默把数字1和字符串"1"拼成了"11"。
那一刻我真想对着浏览器喊:“你礼貌吗?”
后来我给自己定了几条铁律:
- 所有外部数据进来先
Number()或JSON.parse() - 函数参数必须做类型校验(哪怕用console.log也行)
- 异步操作一律用async/await,别碰回调地狱
我还专门建了个“JS踩坑笔记”Markdown文件,现在已经有87条记录了。比如:
[] + []输出空字符串{} + []输出0(但在浏览器控制台可能输出"[object Object]",因为{}被解析为代码块)NaN === NaN是false(所以要用Number.isNaN())
这些看似“奇技淫巧”,其实是JavaScript这门语言历史包袱的体现。学JS,不仅要学语法,更要学它的“性格”。
四、真实场景:上周五晚上的“救火”时刻
回到开头那个周五晚上。
其实那天下午,线上环境突然报错:用户登录后首页白屏。运维群里炸锅了,产品经理急得直@我。我赶紧打开控制台,发现是某个第三方SDK升级后,破坏了我们的模块加载逻辑。
时间紧迫,我一边安抚PM“别慌,半小时搞定”,一边打开本地开发环境。但问题在于,这个SDK文档写得跟天书一样,示例代码全是TypeScript,而我们项目还是纯JS。
这时候,我打开了通义千问,输入:“如何在纯JavaScript项目中动态加载UMD格式的第三方库,并处理其导出的default对象?”
它秒回了一段代码,并附带解释:“UMD库在非模块环境下会挂载到window对象上,你可以这样取:const lib = window.MyLibrary.default || window.MyLibrary;”
我试了一下,果然行!十分钟后修复上线,群里一片“大佬牛逼”。其实哪有什么牛逼,不过是站在AI肩膀上,少走了点弯路罢了。
但事后复盘,我还是写了篇内部文档,把这次问题的根本原因、临时方案、长期优化建议都列清楚了。因为我知道,真正的开发者,不只是解决问题的人,更是防止问题再发生的人。
五、给同行者的建议:慢就是快,稳才能赢
如果你也像曾经的我一样,处在转型的焦虑中,我想分享几点真心话:
1. 别追求“全栈”,先做“一专”
很多人一上来就想React+Vue+Node+Python全学,结果样样稀松。我的建议是:先吃透一门语言(比如JavaScript),再横向扩展。 JS学明白了,TS、Node、甚至部分后端思维都会水到渠成。
2. 动手比看书重要一百倍
看十篇教程不如自己写一个TodoList。而且一定要部署上线!哪怕只是用Vercel免费托管。只有让用户真正用起来,你才会发现那些“理论上没问题”的代码,在现实世界有多脆弱。
3. 善用AI,但保持警惕
把Kimi、通义千问当“高级搜索引擎”用,别当“代码生成器”用。每次AI给的代码,都要问自己三个问题:
- 它为什么这么写?
- 有没有边界情况没覆盖?
- 如果换成我的项目结构,需要怎么改?
4. 接受自己的“慢”
我在成都,没有大厂光环,也没有高薪诱惑。但我有自己的节奏。别人三个月学完React,我花了半年。但半年后,我能自己搭脚手架、写工具函数、优化性能。慢一点没关系,只要方向对,每一步都算数。
六、写在最后:在低工资的城市,做高价值的事
很多人问我:“成都工资这么低,为什么不跳槽去北上广?”
我也想过。但算了一笔账:北京月薪40k,房租6000+,通勤3小时,压力大到失眠;成都22k,房租3500,骑共享单车15分钟上班,晚上还能陪老婆散步。生活的性价比,不只是数字游戏。
更重要的是,我发现:技术的价值,不取决于你在哪座城市,而取决于你解决了什么问题。
上周,我用JavaScript写了个自动化脚本,帮测试同事把重复的手动回归时间从3小时压缩到8分钟。他们请我喝了杯瑞幸,说“你真是我们的神”。那一刻,我觉得比涨薪还爽。
未来,我还想深入研究工程化、性能优化,甚至试着贡献开源项目。也许某天,我的名字会出现在某个npm包的contributors列表里——那将是对我这个“半路出家”的测试转开发者,最好的认可。
技术探索这条路,没有终点。但每一步,都值得认真走。
共勉。

评论 0