上个月有个读者私信我,说他报了个888块的Python训练营,三个月了,还在第147集"Hello World进阶"里打转。同期另一个朋友零基础上手Claude Code,两周做了个能收款的小工具挂在Gumroad上,第一个月赚了37美元。
37美元不多,但人家已经"跑通"了。那个学Python的兄弟,连"跑通"是什么感觉都还不知道。
我也曾经信"基础论",结果浪费了一年
我做了10年开发,刚转出海赛道那两年,脑子里有个根深蒂固的观念:基础不牢,地动山摇。所以新接触一个技术栈,第一反应永远是先去翻官方文档、刷教程、补语法。
后来复盘我自己的项目历史,发现一个特别打脸的事实:我花了将近一年"系统学习"的内容,真正在项目里用到的不超过20%。而那80%没用到的部分,本可以在需要的时候,问一句AI就解决。
我不是说基础不重要,是说学习的优先级排错了。普通人想搞钱,目标是"做出一个能上线、能赚钱的东西",不是"成为一个能手写排序算法的程序员"。这两个目标对应的学习路径,完全是两条路。
很多人卡住的地方,不是学不会语法,是把"学语法"当成了"做项目"的前置条件,结果在前置条件上耗光了所有热情和时间。
一个决策框架:你到底该不该先啃语法?
我给所有问我"要不要先学完Python再用AI写代码"的人,都甩这套框架。三个问题,挨个问自己。
第一问:你的终点是"懂编程"还是"上线一个东西"
如果你的目标是转行做程序员、面试要写算法题,那基础确实绕不开,去刷题、去啃《CS基础》没问题,这是另一套打法。
但如果你的目标是"做一个出海小工具/网站,能跑起来、能收到钱",那你的终点根本不是"懂Python",是产品上线。语言只是手段,手段不应该反过来变成目的。
第二问:卡住你的到底是"不会写"还是"不知道写什么"
我观察过身边十几个想做出海项目的朋友,发现真正卡住他们的,95%不是"这个语法怎么写",是:
这三件事,恰恰是Claude Code最擅长干的。传统教程把90%的精力放在语法记忆上,但语法从来不是普通人的瓶颈——这是大多数教程不会告诉你的事。瓶颈是"思路"和"调试",而AI在这两件事上比任何视频教程都直接。
第三问:哪些能力必须自己有,哪些可以外包
这是最关键的一条线,画错了你就会变成"AI生成什么我就信什么"的甩手党。
必须自己有的能力:
- 把需求拆解成一个个可执行的小任务(比如"用户注册"拆成"前端表单→后端接口→数据库写入→邮箱验证")
- 看懂AI给的代码大致在干什么,能判断它是不是"答非所问"
可以放心外包的部分:
- 具体语法怎么写(Python还是Node,循环还是递归)
简单说:需求拆解和验证的能力你自己练,语法和样板代码交给AI。前者是"思维的核心",后者是"思维的体力活",AI是放大器,但你得先有"思维"让它放大。
实战:从0到上线一个出海小工具,我是怎么用Claude Code做的
光说理论太空,我拿一个真实的小项目举例:一个"汇率换算+多语言提示"的小工具网页,目标是挂在独立站上做SEO引流,顺便接Stripe做一次性付费解锁高级功能。
第一步:先让AI帮你拆需求,而不是直接要代码
很多人一上来就丢一句"帮我做个汇率换算网站",AI给你的东西大而泛,你也不知道从哪改。我会先这样问:
我想做一个面向海外用户的汇率换算小工具网页,目标用户主要是英语和西班牙语用户,免费版只能查3种货币,付费解锁全部货币和历史汇率图表。请帮我把这个项目拆成5个以内的开发阶段,每个阶段写清楚要做什么、用到什么技术。
这一步的目的不是要代码,是要一张"地图"。AI给你的阶段划分,就是你接下来每一步该问什么的依据。
第二步:每个阶段单独开口,不要贪多
拿到地图后,第一阶段我通常会问基础框架搭建:
基于上面第1阶段,用Next.js 14创建一个支持中英西三语切换的页面框架,使用next-intl做国际化,目录结构请用App Router规范,给出完整的文件结构和关键代码。
这里有个细节要注意:一次只推进一个阶段。如果你把5个阶段的需求一股脑塞进一个prompt,AI给的代码量会很大,你根本来不及验证,出了问题都不知道是哪一步炸的。
第三步:Stripe这种"出海命脉"功能,一定要看懂再用
付款功能我直接上代码,这是Claude Code帮我生成、我又手动验证过的Webhook签名校验逻辑:
// /app/api/webhook/route.jsimport Stripe from'stripe';const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);const webhookSecret = process.env.STRIPE_WEBHOOK_SECRET;exportasyncfunctionPOST(request) {const body = await request.text();const signature = request.headers.get('stripe-signature');let event;try { event = stripe.webhooks.constructEvent(body, signature, webhookSecret); } catch (err) {console.error('Webhook签名验证失败:', err.message);returnnew Response('Webhook Error', { status: 400 }); }if (event.type === 'checkout.session.completed') {const session = event.data.object;const customerEmail = session.customer_details?.email;// 这里写入你的数据库,标记该用户为付费用户console.log(`付费成功,用户邮箱: ${customerEmail}`); }returnnew Response('ok', { status: 200 });}
说人话就是:Stripe会把支付结果通过Webhook推给你的服务器,但任何人都可以伪造一个POST请求假装是Stripe发来的。constructEvent这一步就是验证这个请求"真的来自Stripe",不是黑客随便造的假数据。
这里有个细节要注意:webhookSecret必须是Stripe后台给你的那个Webhook专属密钥,不是API Key,这两个东西很多人会搞混,混了之后签名永远验证失败,但报错信息完全看不出原因。
我踩过的两个坑,都不是"小白坑"
坑一:盲目复制AI生成的Stripe代码,没看懂签名校验逻辑
我第一次接Stripe的时候,直接把AI给的Webhook代码复制粘贴上线了,没有细看constructEvent这一步在干什么。结果上线第二天,日志里疯狂报错,全是签名验证失败。
我以为是代码有bug,排查了整整两个小时,最后发现是我把STRIPE_SECRET_KEY和STRIPE_WEBHOOK_SECRET两个环境变量值填反了——这两个值长得几乎一样,都是sk_或whsec_开头的一长串字符。
如果当时我多花两分钟看懂这段代码"为什么需要这两个不同的密钥",根本不会犯这个错。这就是我前面说的"必须自己有的能力"——不是不能用AI写的代码,是写完之后你得能看懂它在校验什么。
坑二:用国内时间测试时区逻辑,上线后海外用户数据全错
这个工具有一个"汇率每日更新时间"的展示功能,我在本地用北京时间测试,一切正常。上线之后,有个美国用户反馈,页面显示的"今日汇率"日期,跟他本地日期差了一天。
我一开始以为是API数据源的问题,查了半天数据源没问题,最后发现是我代码里直接用了new Date(),这个值会根据服务器所在地区返回时间,而不是用户本地时间。
这个坑我后来用一句Prompt解决的:
这个项目所有展示给用户的日期时间,都需要基于用户浏览器的本地时区来计算,而不是服务器时区。请检查代码里所有用到Date的地方,改成基于用户时区的处理方式,并说明你改动的具体位置和原因。
出海项目里,时区和多语言这两个坑,是我见过最容易被忽略、也最容易在上线后才暴露的问题。
写在最后
语言是工具,Claude Code是放大镜,但你的判断力才是那只拿放大镜的手。放大镜再强,手不会用,照样什么都看不清。
普通人想搞钱,别再把时间砸在"我Python基础还没学完"这种焦虑上了——先去拆一个真实需求,跑通一个能上线的东西,语法不够用的地方,问就是了。
最后留个问题给你:你现在卡在"学语言"还是"做项目"的哪一步?具体说说你卡在哪个环节,我挑几个有代表性的,下一期专门拆给你看。