尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

自学IT三十二天复盘:从基础语法到项目实践的成长路线

自学IT三十二天复盘:从基础语法到项目实践的成长路线 1. 自学的第三十二天一个重要的节点今天是我正式开始自学IT的第三十二天。说实话这个数字在漫长的技术生涯里根本不值一提但我还是想认真记录一下——因为能坚持到第三十二天本身就说明我已经跨过了自学路上最危险的一个坎前两周的激情消退期。很多人自学IT是这么开始的第一周猛看视频恨不得一天学八个小时第二周开始觉得枯燥进度变慢第三周遇到一个卡住的知识点停下来刷了半天手机第四周发现前面学的东西忘了一半心态崩了然后就没有然后了。我能走到第三十二天靠的不是什么惊人的毅力而是把自学这件事本身当作一个系统来对待——有计划、有反馈、有节奏、有复盘。这篇文章我想完整地复盘我第三十二天到底做了什么也想把前三十天的路线、方法、工具和踩过的坑整理出来。如果你也正在自学IT、或者准备开始自学可以参考一下这条路是怎么走的。我不敢说我的方法最好但至少是一条被现实验证过、让人愿意继续走下去的路。2. 第三十二天到底学了什么2.1 当天的学习内容安排第三十二天我没有学新的大块知识主要做了三件事复现一个之前学过的Demo、补完JavaScript中“闭包”这个知识点的笔记、以及尝试用数组方法手写一个简易的数据处理工具。先说复现Demo。我前一阵子跟着教程做了一版极简的待办事项页面当时是看着视频一步步敲的敲完之后能跑但脑子里其实没留下多少东西。第三十二天我决定不看教程从零开始在空白的HTML文件里重新把它写出来。过程比我想象的慢很多细节都记不清了事件绑定的时机、数据渲染的入口、删除和添加后如何同步更新界面。磕磕绊绊写了两个小时最后跑起来了但代码结构不太好看全局变量散落得到处都是。这件事给我一个很深的体会看懂的假象太容易骗人了。看视频时老师敲一行我敲一行很容易觉得“我会了”。但真正合上教程、面对空白编辑器的时候你的真实水平立刻现形。自学这件事没有捷径复现、重写、从零构建是唯一能检验真会还是假会的手段。下午补闭包的笔记。这个知识点我第一遍学的时候完全没听懂——什么“函数有权访问其外部作用域中的变量”每个字都认识连起来就是不明白。第三十二天重新读了一遍相关的文章配合几个小的代码示例终于理解到了它能干什么“让函数记住自己出生的环境”。这个理解虽然还不是特别透彻但足够支撑我去阅读一些框架源码里的惯用法了。晚上写了一个数据处理的小工具核心逻辑是用数组的map、filter、reduce三个方法对一个包含订单数据的数组做统计。比如算总金额、筛出某个日期之后的订单、按商品类别分组。逻辑本身很简单但写的时候强迫自己不用for循环全部用高阶函数表达训练“用数据流思考”的习惯。2.2 为什么这个节点要做复盘与加固第三十二天恰好避开了“学新知识”的自然冲动。这个阶段的人最容易被课程进度绑架觉得“今天不推进新课就是落后了”。但我越来越相信知识和知识之间的消化速度是不一样的有些东西学了当时就会有些东西需要睡几觉、忘一忘、再捡起来才能真正长在自己身上。第三十二天本质上做的是一次刻意的回填把地基里松动的几块砖取出来重新砌牢。复现Demo是在检验“知识调用能力”补闭包笔记是在修复“理解断层”写数据处理工具是在刻意练习“API运用能力”。这三件事都属于典型的加固型学习它不像新知识那样有很强的“进度感”但对长期成长的价值可能比学新课更大。自学IT的人一定要建立这样的认知学习进度不是线性累积而是螺旋上升。你今天感觉忘了的东西其实没有真正忘掉它只是从“显性记忆”转入了“隐性记忆”。等你的认知水平再高一点点回头再看当初那个卡住你的概念往往会有一瞬间的“原来如此”的体验。第三十二天就是这种体验集中爆发的一天。3. 前三十天的完整自学路线复盘3.1 第一个月从零到能写一个页面我前三十天的路线大致是HTML和CSS基础用了六天JavaScript基础用了十三天然后花了十一天做一个综合性的落地页练习。算下来我每天的有效学习时间大约是三到四个小时。这个强度不算高但我用了一个很笨但很有效的方式来对抗遗忘每天晚上睡前把当天学的东西用一句话写在笔记本上第二天早上先看一眼昨天写的那句话再开始新内容。前六天学HTML和CSS时我把重点放在“盒子模型”和“Flex布局”上。很多新手喜欢纠结标签的零碎语法但我的体会是语法是查出来的布局思想才是学出来的。现代前端开发里你不太可能记住所有标签和属性但你一定要理解一个页面是怎么被一块块拼出来的。Flex布局是我前三十天收获最大的知识点之一它让“元素怎么排列”这件事变得可推理而不是靠瞎试。JavaScript的十三天跨度最长。我先学了变量、数据类型、操作符然后是条件判断和循环再是函数、数组、对象最后是DOM操作和事件。这个阶段的最大挑战是“编程思维”还没建立经常出现“知道每一个语法是什么但不知道该怎么组合成一个完整的程序”的迷茫。我当时的解决办法简单粗暴抄代码。找一个中等难度的、带交互效果的小项目一行一行地抄抄完再一句一句地注释用自己的话解释每一行的作用。3.2 路线设计背后的理由我没有直接去学框架比如React或Vue也没有先去学后端语言而是老老实实把原生三件套打了一遍。这个选择让我后面学任何工具都有底气因为我知道它们是建立在什么之上的。说实话我在第三十二天之前曾经也焦虑过“是不是进度太慢”尤其是看到社交平台上有人“一个月学会React做项目”的时候。但后来我观察到一个规律那些真正学得扎实的人没有一个不是先花时间打磨基础的。我把自学路线分成三个阶段来看第一个阶段是“看懂”第二个阶段是“会写”第三个阶段是“能用”。前三十天我基本处于从“看懂”向“会写”过渡的过程。到了第三十二天我可以肯定地说我已经能独立写一个简单的、包含交互的页面了。说起来很基础但这就是实打实的进步。3.3 第三十二天的“增量”在哪里第三十二天的增量不在于任何一个新API或者新框架而在于我开始建立模块化思考的意识。复现待办事项Demo时我意识到代码全部堆在一起很难维护于是尝试把数据、渲染、事件三个部分用注释和函数进行划分——即使只是一个极小的页面也开始考虑“结构”和“职责”。这种意识是自学的“二阶能力”第一阶能力是“会用”第二阶能力是“用得像个内行”。第三十二天我明显感觉到自己开始用内行的眼光审视自己写的代码了。比如会问“这个函数是不是太长了这段逻辑能不能抽出来”虽然还做不到很好的重构但能发现问题这本身就是进步。4. 核心学习工具与方法的选型心得4.1 工具链浏览器开发者工具是第一老师复盘这三十多天的工具使用经验我用来用去最重要的一项其实是浏览器内置的开发者工具。很多新手容易忽略它觉得那是“大佬才用的东西”。但其实它对自学者的价值极大你可以实时地修改元素的样式、在控制台里运行JavaScript代码、观察网络请求的细节。举个例子我学CSS Flex布局时最有效的方法不是看教程而是在开发者工具的Elements面板里给父容器加上display: flex然后不停地调整justify-content和align-items直观地看到子元素位置的变化。这个过程花了我大概四十分钟但效果比我看三小时的视频还要好。编辑器我用的VS Code原因很朴素免费、插件生态好、对新手友好。我用了一个叫做Prettier的格式化插件是的我不建议新手一开始就过度依赖自动格式化但它确实能帮你养成相对规范的代码风格。主题我选的深色这纯粹是个人偏好不关键。你能坚持用下去的编辑器就是好编辑器。4.2 学习方法费曼技巧与间隔重复自学最大的敌人是“伪学习”。什么叫伪学习就是看了很多、记了很多笔记但合上电脑什么都说不出来。为了对抗这种状态我用了两个核心方法。第一个是费曼技巧的简化版每学完一个小节用自己的话把内容讲一遍假装对面坐着一个人要把这个知识点给他讲明白。最好是讲出声来不要只在脑子里默念。你在讲的过程中会自然发现哪些地方是含糊的那些含糊之处就是你的知识盲区。讲不出来的回头再看一遍讲得出来的才会真正留在大脑里。第二个是间隔重复。我没有用什么复杂的记忆软件就是利用了每天的晨间回顾。早上开始学习之前花十分钟翻一下前一天以及三天前、一周前的笔记。这个习惯看起来很笨但对抗遗忘非常有效。我第三十二天复现待办事项Demo时很多代码细节能想起来很大程度上就是得益于这个习惯。4.3 资料获取怎么避免陷入“囤积资料”的陷阱自学圈里有一个很普遍的现象叫“资料松鼠病”收藏了上百G的教程、买了十几本书、存了几百个网站书签但从来不看。我前三十天也差点陷入这个陷阱后来给自己定了一个规矩每一份资料必须是为了解决一个具体的问题才去收集。如果只是一时觉得“以后可能有用”坚决不收藏。具体的判断标准有三个第一我现在能不能说出这份资料讲了什么主题第二我最近一周内有没有可能用到它第三我是否已经有一个正在进行的项目需要参考它三个问题只要有一个答案是“否”我就选择不收藏。这个方法帮我节省了大量注意力因为我发现真正好的参考资料几乎都是“用到的时候去查”的而不是“先存在那儿等以后看”的。我的参考资料以MDN文档为主辅助一些质量较高的视频教程和文章。用MDN的初期会觉得它写得干巴巴的不友好但坚持看下来你会发现它是所有资料里最准确、最不会误导你的。很多二手教程里的错误描述你只要你查一次MDN就能识破。5. 实操过程从零复现一个待办事项Demo5.1 准备工作与页面结构搭建第三十二天最核心的实操任务是复现待办事项Demo。我先建了一个空文件夹里面放了三个文件index.html、style.css、script.js。这个三分结构是前端最基础的项目组织形式HTML管结构、CSS管样式、JavaScript管行为。HTML部分我写了一个输入框、一个添加按钮、一个列表容器。结构非常朴素但我特意注意了语义化用input不用div contenteditable用ul和li来承载列表项因为语义化标签对后续维护和可访问性都有好处。很多新手在这个阶段习惯全部用div包一切我能理解这种心理——div看着简单不需要动脑。但长期来看语义化应该是从第一行代码就开始养成的习惯。样式部分我只写了最基础的布局和状态样式。布局用Flex让输入框和按钮排在一行列表项用padding和边框做出层次感。完成状态的样式我用了一个删除线加灰色文字这是待办事项类应用的经典交互范式。5.2 数据状态与渲染逻辑的实现要点JavaScript部分是我此次实操的难点。我踩过的最大的坑是把数据和DOM混在一起思考。一开始我没定义数据数组而是直接操作DOM——用户点击添加按钮时直接往列表里插入一个li。这种方式在小Demo里跑得通但代码稍一变复杂就乱了。因为你删掉一项时DOM里看不到它了但数据里它其实还在不该在的地方。第三十二天我尝试了状态驱动的写法用数组保存待办事项的文本每次添加或删除时重新渲染整个列表。渲染函数很简洁用一个循环把数组里的每一项拼成li。因为JS里业务是要生成多个重复的元素我用了数组的map方法把数据数组映射成HTML字符串然后一次性插入到页面上。这个小小的转变让我一下子理解了很多前端框架的设计动机为什么会有data和view的概念为什么数据变了视图要“自动更新”本质上就是不要让数据和DOM互相纠缠而是保持单向的数据流——数据变视图变视图变数据也要回写。第三天十二日后我对“双向绑定”这个以前听着很神秘的概念也有了直观的感知。5.3 事件绑定与交互细节的坑事件绑定部分我遇到了两个典型的坑。第一个是在循环里绑定事件时闭包捕获了错误的变量。代码大概长这样for循环里给每个按钮绑定点击事件事件处理函数里访问循环变量结果所有按钮访问到的都是循环结束后的同一个值。这个问题是JS的经典坑几乎每个自学者都会踩到我后来用了let声明循环变量轻松解决。第二个坑是回车键提交。我希望用户在输入框里按回车也能添加待办事项而不是必须用鼠标点按钮。做法是给输入框绑定keydown事件判断event.key Enter。这个功能本身不难但我在绑定事件时竟忘了阻止默认行为结果表单提交导致页面刷新刚添加的事项一下就没了。排查了十几分钟才发现是这个原因。这个经验也值得记住只要页面在绑定事件后莫名刷新首先检查表单的默认提交行为有没有被阻止。5.4 最终运行效果与代码组织的得与失最终这个Demo能够完成添加待办、点击切换完成状态、删除待办三个基本功能。不算什么惊艳的作品但它是独立从零到一实现的每一行代码我都能说出它为什么在那里。运行成功的那一刻说实话还是很有成就感的——尽管我知道在专业人士眼里这东西简单得不能再简单。复盘代码时我发现自己犯了两个组织上的问题一是数据变量是全局的这在Demo里无所谓但真正做项目时会引起命名冲突和状态混乱二是渲染逻辑和业务逻辑耦合在一起没有分开。下一步我打算用一个模块化的方式重写一遍把数据封装到对象里通过方法来改变数据、触发渲染。这个改进计划是我第三十二天最大的收获之一它意味着我开始思考代码的“组织”而不是仅仅满足于“能跑”。6. 自学IT的常见问题与排查技巧实录6.1 知识点学了就忘该怎么办这是我被问得最多的问题也是第三十二天我在自己身上验证过的问题。我的答案是忘了很正常但你要区分“真忘”和“假忘”。真忘是指你看到代码后完全不认识它假忘则是你看到代码后认出来但自己写不出来。这两种情况的学习策略完全不同。如果是“假忘”说明这个知识你已经有一定的积淀只是熟练度不够你应该做的是大量练习而不是回去重新看教程。如果是“真忘”才说明当初学的时候就没学懂需要重新学一遍。判断的方法很简单让你自己能不能用自己的话向别人解释这个知识点的基本含义。能解释但写不出来是假忘解释都解释不清楚才是真忘。我前三十天处理“学了就忘”的核心方法是项目驱动每学一个知识点就想办法把它塞进一个最小的项目场景里。比如学了数组的forEach就写一个把列表里的所有数字相加的小函数学了事件委托就做一个列表里动态添加的按钮都能被点击的场景。知识点要长在具体的应用场景上它才不容易掉。6.2 遇到报错信息看不懂怎么办报错信息是自学者每天都会遇到的东西很多新手一说报错就慌其实大可不必。报错不是你的敌人它是编译器在试图帮你。第三十二天复现Demo时我也遇到了一条报错TypeError: Cannot read properties of null。我当时看到的第一反应是什么东西是null然后去代码里找访问属性之前的值是什么。排查的思路其实很固定第一步读报错信息找出报错发生在哪一行第二步在那一行前输出相关变量的值看一下谁是null或undefined第三步回溯那个变量为什么是null是初始化时就没赋值还是在某个步骤被覆盖了。大多数情况下三步之内就能定位问题。我还有一个习惯把常见的报错信息整理到一个备忘录里。比如ReferenceError: xxx is not defined通常意味着变量没有声明SyntaxError: Unexpected token通常意味着语法错误比如少了括号或分号NaN通常意味着你对非数字类型进行了数学运算。整理一段时间后你会发现报错信息的“套路”也就那么多一点也不可怕。6.3 学习动力下降怎么调节第三十二天能坚持下来是因为我在前三十天里已经经历过好几次动力低谷慢慢摸清了自己什么时候会不想学。我的规律是连续学了五六天之后必然会出现一天不想打开编辑器。一开始我强迫自己学结果效率极低一个简单知识点看了半小时都看不进去。后来我调整了策略那天干脆不学新东西只做一件事——复盘旧笔记或者整理书签。这招意外地有效。复盘旧笔记不需要太多脑力但能让你保持与知识的接触不至于完全断线。而且复盘中经常会有意外收获比如当初不理解的一个概念某一天突然能看懂了这种“原来如此”的体验是极好的正向反馈。到了第二天我往往又会充满动力地打开编辑器。还有一个调节方法是降低目标。学不动的时候把目标从“学完一章”降到“学懂一个点”。三十分钟只搞懂一个函数的作用也算是成功。心态上放过自己行动上不放弃是我对抗学习倦怠最重要的心得。6.4 教程和项目哪个优先这个问题很多自学者都会纠结。我的体会是前期教程优先但有了一定基础后项目优先。前十天如果一上来就做项目你做不出来只会打击信心。那时候应该老老实实看教程把基本语法和概念混个脸熟。但过了大约二十天你一定要开始做项目哪怕是最简单的页面也比再看十个小时视频有用。项目是缝合知识的针线。只有在你亲手做一个项目时你才会发现“原来我不理解事件委托怎么用”“原来我对数组方法怎么拼接到一起全无概念”。这些从项目里暴露出来的问题比任何教程大纲都更精准地指向你的知识盲区。第三十二天的复现Demo就是一次项目优先的实践。它不需要新知识但它帮我打通了HTML、CSS、JavaScript之间的连贯协作让我真正开始像程序员一样思考。7. 第三十二天的精力管理与学习节奏设计7.1 我的时间分配与专注技巧过了三十二天我觉得自学的挑战已经从“学什么”变成了“如何管理精力和节奏”。我每天的时间大概是这样分的早上起来先花十分钟做代码复习然后进入三到四个小时的核心学习时段这期间用番茄钟来管理专注一般学习二十五分钟休息五分钟。晚上再花三十分钟左右整理笔记做一次当天的复盘。核心学习时段是一天里大脑状态最好的时候我常用它来处理最有心智负担的任务比如写代码、读文档。晚上的复盘时段不会碰特别烧脑的东西主要是回顾、记录、清理书签、把白天遇到的问题整理成文字。这样做的好处是一天的学习以“输出”收尾而不是以“接收”收尾信息更容易留存在记忆里。专注技巧上我用的是一个非常朴素但稳定的方法学习时把手机放在另一个房间。当年那些推荐各种限制软件的方案我也都试过但最终发现物理隔离是最靠谱的。手机不在手边想摸也摸不到大脑也就能慢慢安静下来。7.2 排除干扰社交平台与信息流的影响自学期间社交平台是最大的注意力黑洞。我特别提醒自己不要在“学累了”的时候刷视频平台休息因为一刷就根本停不下来。这种“休息”根本不是休息而是给大脑塞进更多无意义的信息反而让接下来的学习更加疲倦。我还注意到一个心理陷阱看别人的学习记录容易产生替代满足感。看到别人发“今天学到了XXX”自己也有一种“我也学到了”的错觉但事实上你什么都没做。第三十二天的复盘我提醒自己最忌讳的就是把“看别人的经验”当作“自己的学习”这两者之间差了十万八千里。我的处理原则是社交平台的信息流只在固定的休息时间处理比如中午吃饭时或晚上学习结束后。不是完全不看但绝不允许它在学习时段随时打扰。这个原则用了三十二天到目前为止效果还算不错。7.3 如何避免“过度学习”导致的疲惫与动力不足相反还有一种状态是“过度学习”学到状态已经很差了还是不想停下来觉得“再学一点就赚一点”。三十二天里我也经历过几次这样的情况第二天往往要付出双倍的时间才能缓过来反而得不偿失。调整的方法是给自己的学习设定最小和最大的时限最少像打卡铁律每天固定要学习拆解的两个小时比如刚起步时那确实是最难的最多建议也不要超过四小时要的是效率而不是时长。超过上限之后哪怕感觉还在状态也要强迫自己停下来留一部分“意犹未尽”给第二天。真正长远的自学节奏应该是像跑步一样匀速、稳定、可持续而不是短时间的猛冲猛打、然后连续几天不想碰键盘。第三十二天的我已经不再焦虑“学得不够快”反而更在意“这条跑道我能不能一直跑下去”。8. 给同样在自学IT的人的几个建议8.1 不要怕慢怕的是断我第三十二天最深的体会可以用四个字总结坚持比速度重要。你每天学两小时学三个月比一天学八小时、然后停两个月效果要好得多。因为编程知识是高度网络化的你停的时间越长前面学的那些知识点之间的联系就越松散重新捡起来的成本就越高。我给自己定了一个底线哪怕再忙再没有状态每天也至少要打开编辑器写一行代码或者改一个样式。这个底线动作虽然很小但它保证了学习的连续性。只要你不断知识的雪球就一直在变大。8.2 学以致用做一个自己的小项目哪怕你只学了两周的HTML和CSS我也建议你立刻开始做一个自己的小项目哪怕只是做一张自我介绍卡片或者一个个人主页。做项目的过程中你会用到搜索、查文档、调试报错等一堆“编程之外但编程之内”的技能而这些技能是教程不会教你的。项目不必大但必须是完整的从需求到设计、从编码到上线。把这个项目展示给你身边的人或者发布到任何一个平台上你会获得别人看不懂的成就感。这种成就感就是支撑你继续走下去的最好燃料。而且请尽量选一个“能用得上”的项目为自己服务的东西你才会真心愿意去打磨。8.3 建立属于自己的知识检索体系笔记一定要做但不要做成知识的搬运工。我看到很多人的笔记本质上是教程的摘抄笔记做完之后自己再也不会翻看。这种笔记是无效资产。我的笔记原则是只记那些“让我第一次觉得不理解后来终于理解了”的内容用自己的话重新表述并配上自己的代码示例。这样的笔记才有复看价值。我还建立了一个“错误集”专门记录自己犯过的错、踩过的坑。每当我写代码卡住时先查这个错误集很多问题都能在其中找到答案。这个错误集越积累越有价值因为它记录的是我独一无二的学习轨迹。第三十二天之后我依然不知道这条路最终会通向哪里但我知道我比一天前的自己多了一点理解、多了一点熟练、多了一点坚定。IT自学是一场长跑第三十二天只是其中一个普通的坐标但它让我确信只要还在跑就比站在原地更接近终点。
返回列表