自学编程为什么容易放弃?六个典型坑与闭环反馈破解法

发布时间:2026/9/30 10:48:52
自学编程为什么容易放弃?六个典型坑与闭环反馈破解法 先讲一个我真实见过的案例。有位读者网盘里攒了差不多200个G的编程教程文件夹分门别类标注得清清楚楚Python入门、C基础、数据结构、MapReduce编程实例、VBA教程。半年后我问他学到哪儿了他说还在看教程代码基本没写过。这不是段子这就是自学编程最典型的日常。我在几个编程社群里潜水多年观察到的现象是自学编程的人里真正能坚持到独立做项目、找到工作或者做出作品集的人可能连10%都不到。剩下那90%以上的人不是不努力而是几乎一个不落地掉进了同一批坑里——只不过有人先掉这个有人先掉那个。这些年我见过太多自学者自己也踩过几次所以我把这些坑一条条拆开讲清楚顺带给出我认为比较靠谱的绕坑方法。这篇东西不打算讲具体语法也不打算怂恿你30天精通某某语言只聊一个核心问题为什么90%的自学编程者会在中途放弃以及怎么让自己成为那少数的10%。1. 自学编程的困境问题从来不在智商在于没有反馈回路很多人自学编程失败以后第一反应是我是不是没有编程天赋又或者我脑子不够用学不会逻辑。但以我观察的大量案例来说这种归因是错的。编程这个技能门槛真没那么高——毕竟现在连小学生都在学少儿编程课甚至成了很多培训机构的引流产品。一个成年人如果连初中数学都还能应付学编程的智商门槛肯定不是卡住你的主因。那主因是什么我给你的答案是自学编程缺的不是资源而是反馈回路。学校教育和培训班为什么显得有效因为它提供了一个你绕不开的强制闭环上课 - 作业 - 批改 - 考试 - 排名。每走一步你都会得到一个外部反馈告诉你你哪里不对、你什么水平、你下一步该干嘛。这个闭环你不用自己建跟着走就行哪怕效率低它也是在运转的。自学完全是另一回事。没有老师布置作业没有人在你写出一个布满低级错误的小程序时告诉你你变量命名有问题没有人在你把一整周时间花在装环境上时提醒你先换个轻量的方式跑起来。你获得的唯一反馈就是代码运行起来的那一刻——它到底报不报错。但问题是编程学习中的反馈远不止运行通过这么简单。于是自学者就陷入了一个怪圈遇到问题 - 没有人给自己反馈 - 自己乱试 - 试错成本越来越高 - 热情被消磨 - 最终放弃。后面我要讲的六个坑本质上是这个反馈回路缺失问题在不同环节的具体表现形式。搞不清这一点你就算收藏再多的教程、报再贵的网课大概率也走不远。1.1 一个典型的自学失败样本三个月里我看着他重复踩坑我给你还原一个我真实接触过的自学样本。一位想转行做大数据开发的朋友上来先买了一套Java编程官方手册又下载了Python编程从入门到实践的电子版还关注了一堆技术公众号。第一个月他看完Java基础语法跟着教程写了几个排序算法觉得还行第二个月他想做点真东西决定学MapReduce结果刚装Hadoop集群就卡了三周——环境变量、版本冲突、伪分布式配置每一个报错都够他查半天的第三个月他又回头去学Python数据分析但学了没几天发现还是要补Linux基础和SQL心态直接崩了。这个案例有代表性吗太有代表性了。他犯的每一个错误单独看都算不上大错——想学新东西有错吗装环境遇到问题是正常的吧基础不够就补基础也没问题吧但把这一切串起来问题就出来了他一直在一堆没有关联的任务之间跳来跳去每一个任务都没有完成到能拿出一个可展示成果的程度。学习的反馈回路一次都没闭合过。1.2 自学的本质没有外部约束时你要学会给自己设计闭环既然自学缺反馈那自学者最应该掌握的技能就不是语法而是给自己设计反馈回路。什么意思就是你在开始学任何一块内容之前先问自己三个问题我学这个要做出一个什么东西我怎么知道我做成功了做成功之后谁来看、谁来给我意见想清楚这三个问题你的学习路径就会清晰很多。比方说你学Python不是学Python而是用Python写一个能处理Excel表格并自动生成折线图的小工具。你学VBA不是为了学VBA而是用VBA让Excel里的报表实现一键汇总。当学习有了一个明确的产出物反馈就来了工具跑得动跑不动、结果对不对、用起来顺不顺都是反馈。这个思路是下面所有避坑方案的地基。2. 坑一教程囤积症——网盘存了200G教程代码还在Hello World我敢打赌任何一个自学编程的人家里电脑里都躺着少说几十个G的教程资源。电子书、PDF、全套视频课、GitHub上的开源仓库、各大平台的专栏合集……应有尽有。搜索引擎里搜编程出来的热词永远是xxx从入门到精通xxx编程100例xxx编程基础这本身就说明了一大堆人永远停留在找资源的阶段。2.1 囤积的快感是一种伪学习为什么人控制不住地囤积教程因为收集资料的瞬间大脑会产生一种我已经掌握了的奖赏感。你在网盘里塞入一本Python编程从入门到实践哪怕你一页都没翻开那种我拥有了一本好书的感觉也是实实在在的。这种奖赏来得太快了快到不需要付出任何努力你就能获得一次自我满足。相比之下打开编辑器写第一行代码、理解第一个报错这种成就感来得又慢又磨人。所以你囤的越多越容易陷入伪学习的泥潭。你每天花大量时间筛选教程、下载资源、归类整理表面上很勤奋实际上所有精力都花在了准备学习而不是学习上。三个月后问自己学会了什么几乎没有产出。2.2 破解囤积症的三个实操动作这一条是我自己用了很多年验证过的你照着做就行总量限制同一时间只允许自己保留两套学习资料一套主教材一套备选参考。学完之前不允许下载任何新的教程。这个规则很霸道但它能逼着你吃完碗里的再去锅里盛菜。先看目录再做决定任何教程拿到的第一件事不是存起来而是读目录。你能说出它前五章在讲什么才值得留下说不出来直接删掉。一个连目录都懒得读的人是不可能坚持看完整个课程的。设置资源断粮期给自己安排一个周期——比如一个月——这个月内完全不允许找新教程。你唯一能做的事情就是把已有的内容学完。资源匮乏感会逼着你真正开始动手而不是永远在选择看什么中消磨时间。你可能会觉得这样有点反人性。是的囤积确实是人性但自学编程这件事本来就是在跟人性对抗。写代码这件事本质上是把抽象变成具体的工作你每天花在获取而不是产出上的时间越多离目标就越远。3. 坑二语法焦虑——把编程语言当外语课文背是最大的时间黑洞我见过太多自学者学编程的方式和当年背英语单词一模一样拿着语法书从第一章开始一行一行地啃试图把每一个语法点都背得滚瓜烂熟才肯往下走。结果呢背到第三章循环语句的时候前面的内容已经忘了一半。这种学法学三个月跟学三天没什么区别。3.1 编程语言不是知识是工具一个反直觉的事实是编程语言的语法真的是用进废退的。你不需要记住所有语法细节因为真正的开发中任何一个项目里用到的语法特性可能只占这门语言的30%。一个写了五年Java的开发遇到不常用的API也要打开官方文档查一下一个整天写Python的人也经常停下来去搜某个库的用法。这不叫没学会这恰恰是正常的工作状态。把编程当外语课文背的人普遍有一种完美主义心态觉得必须把所有语法都搞明白了才能开始写程序。但真相是你哪怕把C Primer翻烂了如果没亲手写过几十个小程序你依然不会写C。反过来你哪怕语法记得不全只要动手写出了几个能运行的程序你会发现自己对这门语言的理解远超那些背书的人。3.2 以任务为线索去学语法而不是以语法知识点为线索语法焦虑怎么破我给你一个非常具体的方法不要按课本目录的顺序去学而要按任务去学。以Python为例。你想做一个把文件夹里的所有图片统一改尺寸的小工具。那你需要学什么你需要学如何定义变量、如何写for循环遍历文件、如何导入第三方库、如何调用函数、如何在命令行里带参数运行脚本。你就围绕这个任务去查、去试今天搞不定明天再搞搞定了再做下一个任务。下一个任务来了你想爬一个静态网页的数据存到Excel。这次你可能要学如何用requests库发请求、如何解析HTML、如何处理编码问题、如何用pandas写Excel。你看每个任务都会逼着你接触新的语法知识点但你是用到了才学学习效率和成就感完全不一样。这个思路放在任何编程语言方向里都成立学PLC编程就直接上手在软件里拖几个梯形图跑一遍而不是先把整个指令手册背完。学C做嵌入式就找一块开发板哪怕只点亮一个LED也先把编译环境、烧录流程跑通。学VBA就直接录一个宏看看它自动生成什么代码再改一改改到能实现你要的功能为止。学Shell脚本就数一下你平时在Linux下重复敲过哪些命令把它们写成一个一键执行的脚本。任务会反过来告诉你该学什么语法书只是遇到不会的时候参考的工具书它的角色应该是一本词典而不是一篇要求你从头读到尾的文章。这个观念的转变能帮你省下至少一半的学习时间。3.3 关于看不懂某段报错的焦虑很多自学者还有一个致命习惯遇到一个报错明明搜索引擎就有答案却非要把整个报错信息完完整整地读懂读不懂就觉得是自己基础不牢然后陷入深深的自我怀疑。这不是学习态度好这是浪费生命。报错信息的作用是给你线索不是给你考试。先把报错信息里的关键词复制去搜找到解决方案能解决就行了至于背后的原理等你有时间了再弄懂也不迟。学习的顺序先会用再懂原理这个顺序对自学的人来说至关重要。4. 坑三项目选择两极化——要么跟着抄一遍例题要么一上来就挑战造火箭几乎所有自学编程的人在练手项目这个环节都会走向两个极端。第一个极端永远在抄例题。网上下载一个Python编程100例或者Shell脚本编程100例每天跟打一遍代码以为看懂了就叫做会了。第二个极端第一周就瞄准了一个远远超出自己能力范围的大项目——比如刚学完Java基础就想写一个电商系统或者刚会用MapReduce就想处理几T的日志数据——结果败下阵来从此对做项目产生了心理阴影。4.1 为什么跟着抄一遍不算练习先说第一个极端。很多人觉得我把代码照着敲一遍总没错吧大错特错。照着敲一遍你学到的只是打字速度不是编程能力。那些看起来很简单的例题因为所有代码都已经给你排好了你根本体会不到真实编程中最核心的环节——从零开始设计逻辑、处理边界条件、定位问题。你只是坐在副驾驶上看人开车下车后你依然不会开车。更麻烦的是这种抄例题式的学习很容易给你一种我会了的错觉。你越学越觉得自己技能来得轻松等到真要独立解决一个问题的时候脑子一片空白写不出第一行代码这时候你才会发现一切都要从头再来。4.2 为什么直接上大项目又是另一种自杀再看第二个极端。一个零基础的人学了半个月Java就想写一个带用户登录、商品管理、订单支付、后台管理的前后端项目——这个目标本身没有错但作为第一个项目它错得很离谱。你一开始就会陷入无穷无尽的细节里数据库怎么设计用户密码怎么加密前后端怎么交互部署到哪里服务器你可能花了一个月连个登录功能都调通不了。因为你碰到的问题每一个都是新的知识而且这些知识在教程里找不到现成答案。当你每写一行代码都要去搜这个怎么实现的时候你的学习节奏就已经彻底崩了。我曾经在社区里看到过一个非常典型的帖子一个自学者用了三个月时间试图自己一个人从零开发一个商城项目。最后他做到什么程度呢他把所有精力都花在了要不要用某个开源框架上翻遍了各种框架文档最终一个页面都没写出来。这就是典型的造火箭式开局带来的后果。4.3 正确的项目梯度每次只比自己当前水平高一档那正确的做法是什么我把它叫做**脚手架式进阶**。核心原则很简单每个新项目难度只比自己当前的能力高一点点。什么叫高一点点高到你需要查三五个资料才能完成但又不至于让你连从哪儿开始都摸不着头脑。我给你画一条从零基础到独立开发的项目路线拿前端来举例入门第一档写一个静态的个人主页只有三个页面全部用HTML加CSS不需要任何交互。——这一档只练布局和定位。入门第二档给个人主页加上一个登录弹窗点按钮弹出点关闭收起。——这一档开始接触JavaScript的基本交互逻辑。进阶第一档做一个待办事项列表支持新增、勾选完成、删除页面一刷新数据就清空。——这一档开始处理数据状态和数组操作。进阶第二档给待办列表换成从本地缓存读取数据刷新后数据还在。——这一档开始接触数据持久化的概念。提升第一档做一个稍微完整的记账工具支持按月份筛选、分类统计、导出报表。——这一档开始涉及稍微复杂的数据处理和UI联动。看到没有每个项目都解决一个问题而且每个项目都会引入一个新的核心知识点。这样一路走下来你始终处于跳一跳够得到的舒适区边缘成就感持续积累知识框架也在一层层地往上搭。这个i1式的思路略微超出当前能力一档虽然来自语言学习理论但在编程自学里同样适用。5. 坑四环境配置泥潭——三天装环境两天调版本一行业务代码没写过你随便找一个编程自学群的聊天记录输入环境变量JDK版本这几个关键词拉出来看一圈能听到一片哀嚎。环境配置是自学者第一大劝退项这绝对不是在开玩笑。5.1 环境配置的劝退率被严重低估我来说个真实的场景。一个完全没接触过编程的人想学Java。第一天打开教程发现要先装JDK装完JDK又要配环境变量配完环境变量开始装IDE装了IntelliJ IDEA发现内存占用高电脑卡得不行换成Eclipse又遇到启动报错好不容易启动起来了新建项目又发现Maven配不上、依赖下载不下来。一周过去了这个新手压根还没见过一行Java代码长什么样就陷入了装环境-失败-查资料-再装环境的死循环。这个坑在单片机开发、PLC编程、大数据开发这些方向里尤其严重。我见过学单片机的人卡在驱动装不上也见过学MapReduce的人卡在Hadoop集群搭建上还有学VBA的人卡在Excel的宏安全设置里。环境配置本身的技术含量并不高但它对新手极其不友好因为它涉及大量的背景知识——版本兼容性、系统变量、插件机制——这些知识你不遇到问题根本用不到但你就是被它们卡住了。5.2 用免配置的方式起步环境问题以后再补我的建议很简单第一阶段尽量别跟本地环境死磕。现在的在线编程环境、云开发IDE已经相当成熟了很多平台打开浏览器注册个账号就能写代码、跑程序根本不需要装任何东西。具体来说学Python数据分析先用在线的Notebook工具比如Kaggle里直接开一个Notebook或者Google ColabPandas、Matplotlib这些库全部预装好你只管写代码。学Java、C用一些支持代码编译的在线OJ平台比如各类ACM练习网站写代码、编译、跑测试用例一步到位。学前端开发用CodePen、JSFiddle这类工具浏览器里直接写HTML、CSS、JavaScript效果实时预览零安装。学Linux命令和Shell脚本直接用浏览器版的Linux终端模拟器省去装虚拟机这一步。学Hadoop生态可以先在一台云服务器上通过云厂商的镜像一键部署或者用Docker镜像拉一个现成的容器跑起来而不是从零手工搭集群。等到你对这门语言已经有了基本的掌握也写过不少代码理解了编译运行依赖是怎么回事这时候再回头去配本地环境你会发现自己能读懂报错信息了也知道该查什么资料了环境配置会顺利得多。5.3 如果你已经卡在环境里了怎么办如果你现在已经卡在装环境的泥潭里我给你一个止损方案给自己设一个明确的时限比如这是我的环境配置最后一次尝试再解决不了就立刻换路线。在任何技术问题排查上都适用一个原则——一个问题十五分钟超过十五分钟还没有一点头绪要么换搜索关键词要么换解决方案要么换一条完全不依赖该技术的路。死磕环境是最不值得投入的时间黑洞。6. 坑五无反馈孤岛——代码写得好不好只能靠自己猜刚才我在开头已经说了反馈回路缺失是自学编程最根本的问题。这里我要把这个坑单独拎出来讲透因为你就算前面几个坑都避开了教程不囤了语法不死磕了项目梯度也对了只要这个坑没绕开你依然很难走到最后。6.1 为什么缺少反馈的自学会越学越迷茫想一想那些在培训班里学过编程的人他们会告诉你光靠听课远远不够真正让他们成长的是每天的项目评审环节——老师会看你的代码指出问题告诉你哪里不符合规范哪里性能可以优化哪些逻辑有漏洞。这些反馈不一定全对但它的存在让学习者始终知道自己站在哪里知道下一步该往哪儿走。而自学者呢写完一个程序自己跑通了然后就没了。没有人告诉你你这个代码命名很烂你的函数写得太长了拆分成两个会更清晰你这里用正则表达式会简单得多你这段代码在数据量大的时候性能很危险。你可能就这么一直用能跑就行的标准对付着直到某一天你拿着自己写的代码去找一份工作面试官只看一眼就被劝退你甚至都不知道你的代码有什么问题。这就是无反馈孤岛的致命性你连自己差在哪里都不知道。6.2 低成本获取反馈的实操渠道没有系统环境给你安排反馈那你就自己去找反馈。以下渠道是我个人实测过、觉得最有用的加入一个高质量的技术社群别去那种死气沉沉、全是广告的群要找那种真的有人在讨论问题的群。你不用每天都发言但别人讨论的报错、方案你在旁边看也能学到很多。更重要的是当你遇到问题的时候你敢不敢把你的代码完整地贴出去让大家伙儿给你挑毛病。找一个比你强的人做技术教练这个不一定要花钱请人。现在很多开源项目都有好的first issue标签你在GitHub上找一个感兴趣的开源项目提第一个issue的时候会得到维护者的反馈你提交第一个PR的时候维护者会告诉你代码哪里不合规范。这些反馈比任何教程都值钱。写技术博客、在社区发帖很多人觉得我写的东西那么low怎么好意思发出去。但这恰恰是反馈的好途径。你把你在自学过程中做的一个小笔记、踩过的一个坑、解决问题的思路写出来发到社区会有人评论、纠错、补充这就是免费的外部反馈而且你帮助到的每一个读者都会形成正向激励。参加线下的编程聚会或者黑客马拉松编程不是一个人的事情至少在成长阶段不是。线下的交流里你能直观地看到别人是怎么组织代码的别人的思路跟你差多远这种信息密度远超你一个人闷头写三个月。6.3 如何正确地提问让反馈更高效很多自学者在社区提问得到的回复很少然后就说这些论坛看不起新手。但以我的经验看大部分问题出在提问的人自己身上。你问我的Python代码报错了怎么办没人愿意理你但你要问用pandas读取csv文件时报UnicodeDecodeError完整报错信息如下文件是从某银行系统导出的编码可能是gbk大概率会有人给你指点。问问题的时候把以下信息给全报错信息、你的代码、你的环境版本、你尝试过哪些方法这样别人才可能给出有效的反馈。记住一点反馈的前提是有信息量。别人能给你的反馈质量取决于你解决问题的过程中展现出来的思考深度。7. 坑六裸奔进框架——App照教程跑起来了报错还是一句看不懂还有一个很隐蔽的坑是我观察近几年自学群体时发现越来越严重的就是跳级式学习。很多人是在完全没有计算机基础的情况下直接开始学应用框架和高级主题——一上来就学Spring Boot、React、Vue、PyTorch或者搜索引擎热词里那些一看就很高深的东西比如CUDA编程AI编程提示词多型态大模型。7.1 框架给了你速成的幻觉但也会在你背后捅一刀为什么现在这么多人跳级学框架因为教程的宣传话术太有吸引力了x天让你做出一个xx网站零基础入门AI。但你跟着做的时候会发现什么你确实能跟着教程把代码敲出来项目确实也能跑起来。可一旦项目出点小问题、或者你想加一个教程里没有的新功能你就完全抓瞎了。因为教程教你的只是照搬而不是理解。你不懂HTTP协议就没法调通接口不懂数据库事务就写不好数据处理逻辑不懂异步编程一遇到并发场景就卡死。全都是因为你在根基没有打牢的情况下直接爬上了框架这层楼。这个道理跟你学外语一样会背几句日常对话跟在真实场景里进行有深度的交流完全是两码事。框架就是那几句日常对话计算机基础才是语法和词汇量。只背对话的人遇到没准备过的场景就傻了。7.2 哪些基础是非补不可的我承认不是每个人都有耐心花半年时间系统学完《深入理解计算机系统》再开始写代码。所以我给你画一个最低限度的基础清单。这些基础不一定要在开始阶段学但你在学习过程中必须逐步补上否则等到某个节点你一定会被卡住数据结构数组、链表、栈、队列、哈希表、树。这些是程序的骨架。你不需要一上来就能手写红黑树但至少要知道它们的存在和适用场景。操作系统和网络基础进程和线程是怎么回事、内存大致怎么管理的、TCP和HTTP是什么关系这些概念在任何一个后端开发或者客户端开发中都避不开。算法思维至少会分析自己的代码复杂度和时间复杂度知道这段代码在数据量大的时候可能会挂。数据库基础哪怕只是SQL的增删改查外加一个联合查询也要知道表结构设计的基本规范。调试能力会用日志输出定位问题会在合适的工具里断点调试能看懂堆栈信息。这一项是被绝大多数自学者严重低估的一项核心技能。这里我给你一个思路不要把这些理解为一门课程要理解为一套随取随用的工具。你写一个项目的时候遇到并发问题了就去查线程安全遇到数据查得慢了就去查索引。每一次遇到问题的时刻都是补齐基础的最佳时机。基础不是靠学补上的是靠遇到问题、再回头补补上的。8. 可复制的自学循环小目标、小教程、小项目、小反馈前面讲了这么多坑如果你已经对号入座了好几个别慌我来给你一套我自己验证过、也推荐过给很多自学者用的最小循环式自学法。这套方法不保证你成为顶尖程序员但一定能帮你稳定地学下去并且始终保持产出。8.1 采坑与避坑的核心是建立最小闭环在具体操作上我建议你按下面这个单次学习循环来设计自己的学习节奏第一步定一个小目标。这个目标必须满足三个条件有明确产出物、一周内能完成、可被验证。比如用Python写一个能自动重命名文件夹内所有图片的脚本比我要学Python好得多用VBA写一个一键汇总多个Excel表格的工具比我要学VBA好得多用C写一个能统计文本文件单词出现次数的程序比我要学C好得多。第二步找最小教程。现在的学习资源严重过剩你不缺资料缺的是一个精挑细选的起点。别买全集只看围绕你这个目标的那一章、那一节、那一个视频。你目标定得越小要消化吸收的内容就越少就越不容易被其他知识点带跑。第三步动手写代码或者动手做模型、搭硬件、调PLC程序——做什么不重要重要的是你的产出物必须具体。代码不是一次性写完就算完拆开一点点地写、每写一小段就运行一次看效果这个习惯能让问题快速暴露不至于最后堆了一大堆错误找不到原因。第四步获取外部反馈。把你做出来的东西发给一个愿意看的朋友、贴到论坛、或者提交到GitHub仓库请求别人提供改进建议。记住能跑只是底线能不能让别人看懂和逻辑是否健壮才是真正拉开差距的地方。你在乎的反馈质量越高你的学习质量就越高。第五步复盘并循环。花15分钟复盘一下这一次循环里你遇到的最大难点是什么你是靠什么思路解决的有没有更简单的做法把这些写到一个学习笔记里。然后在原有项目的基础上升级一点点难度进入下一个循环。8.2 一些让我效率翻倍的外挂细节除了上面这个大框架我再分享几个我用下来特别管用的小习惯属于那种知道的人很多但坚持做的没几个的细节每天写代码的时间至少要大于看教程时间的2倍。你可以把这个当作一个硬性纪律。看教程满足的是我在学习的感觉写代码才是真正在输入知识。我见过太多人看了一晚上视频觉得自己努力得不得了一打开编辑器手指是僵的。用输出倒逼输入。不要等你觉得准备好了再去写总结、写博客。现在就写把你今天踩过的坑、解决问题的过程哪怕只写三段话发到笔记里也有用。输出会逼你想清楚而想清楚了才真的算学到了。善用AI辅助但别被AI带偏。现在AI编程提示词成了一个热门关键词很多自学者直接拿AI生成代码然后跑通了事。这可行但你至少要能看懂AI生成的代码每一行在干什么并且能给AI指出它哪里写得不对。如果看不懂那就退回到上一个环节先把基础补上再让AI给你当瞬时数字老师。固定一个专门的编程时间带。自学最大的杀手是三天打鱼两天晒网。你不用每天学六个小时但最好能固定一个时间段比如每天晚上21:00到22:00只干这一件事。习惯的力量远大于意志力。8.3 你遇到的报错百分百有人踩过最后说一个心态层面的建议。自学者最容易在深夜陷入自我怀疑对着一个报错信息发呆觉得自己是最菜的那一个。但我想告诉你的是任何一个报错信息你在搜索引擎里几乎都能找到一模一样的答案。你遇到的所有问题绝大多数都不是新问题而是成千上万的初学者反复踩过的旧坑。你之所以觉得它难只是因为你还没养成把问题拆小和把问题搜索清楚的习惯。我自己到现在也保持着这样的习惯遇到搞不定的问题先冷静分析再精准搜索搜索词里带上编程语言名、报错关键词、以及你使用的框架名基本上一击即中。搜索能力在自学阶段的重要性可能比你想象的还要高——你要是能搜到人就加上对方的公众号或者邮箱偶尔礼貌地请教一个问题一般都会得到回复。根据我个人的体会自学编程其实一点都不神秘它跟自学做饭、自学健身、自学任何一门手艺本质上没有任何差别核心就一条建立高频、有效的反馈闭环并且骗过那个总想偷懒的大脑让它心甘情愿地每天投入一点时间。那些能坚持到最后的10%的人不是多有天赋只是更早地想明白了这一点。你如果能把上面的坑全部绕开哪怕只坚持做三个月我很有信心你会超过身边绝大多数正在准备学编程的朋友——毕竟他们中的大多数人现在还在为今天该看哪个教程而纠结。