非科班程序员的二十年自学编年史:从记事本抄代码到 AI 时代的冷思考

非科班程序员的二十年自学编年史:从记事本抄代码到 AI 时代的冷思考

摘要:高考差 15 分错过计算机系,从记事本抄 Delphi 代码起步,到玩单片机顿悟指针,再到魔改 Node.js 底层实现协程。一位完全自学出身的程序员,用二十年时间绘制的“避坑地图”,以及对 AI 时代程序员价值的冷峻思考。


一、 缘起:差 15 分的计算机梦

我高考差了 15 分,没能进计算机系。
那个年代,互联网刚刚起步,学习资料匮乏,开源项目更是闻所未闻。但我心里的那团火没灭。从大学算起,我花了五六年时间,才真正算是“入门”了编程。

这是一条完全靠自己摸索出来的野路子。回头看,全是弯路,但也全是风景。

二、 迷途:在 IDE 和记事本里“假装编程”

自学最怕的不是笨,而是不知道自己在哪

1. 记事本里的 Delphi
最开始看书,照着书抄代码。那时候连“编译环境”是什么都不知道,我在机房用记事本一行行敲 Delphi 代码。老师凑过来看了一眼,说了一句让我记到现在的话:“你在记事本里输入,编译不了。”
那是我第一次意识到,代码不仅是文本,它需要工具链的支撑。

2. VC 里的“拖拉拽”幻觉
后来跟着学长学 C++,大家都在用 VC 集成环境。我也跟风,在 VC 里拖拉控件做计算器。那时候根本分不清"VC 环境”和"C++ 语言”的区别,更别提 Makefile 了。
我在控件堆里玩得很嗨,但一旦离开那个环境,我就什么都不会。
结论:在集成环境里打转,学不会编程。

三、 破壁:两个“开窍时刻”

真正的转折,发生在我不再“看书”,而是开始“玩”的时候。

1. 网页版传奇与 JS 启蒙

工作后流行 JavaScript,我业余时间模仿网页特效,甚至用 JS 写了个网页版的传奇 Demo 放在新浪上。
现在看那些代码很丑陋,但很多编程概念(循环、事件、状态)就是在那个时候,一边玩一边建立起来的。
JS 让我明白了什么是正反馈:代码写下去,立马就能看到东西在动。

2. 单片机与指针的“物理映射”

我真正入门 C 语言,是买了一块单片机回来玩。
当你在代码里写下 *p = 0x01,然后看到板子上的 LED 灯真的亮了时,指针就不再是课本上那个抽象的星号,而是你指挥物理世界的手。
学了 C 语言,就像打开了一扇门。理解了内存和指针,再学其他语言都很容易。

3. 魔改 Node.js:造轮子的快感

Node.js 火的时候,为了搞懂原理,我深入阅读了关键代码。那时候还没有 Promise 和 async/await,全是回调地狱。
为了弄明白异步原理,我用 Node.js 的 libuv 库绑定 Lua,实现了一个基于有栈协程的伪同步模型(思想类似后来的 Golang)。
虽然因为能力有限,项目最后只停留在验证原理阶段,现在还躺在 GitHub 上吃灰。但只有造过轮子的人,才知道坐车的人为什么不会翻车。

四、 转身:32 岁入行,回归务实

凭着手头这些硬核项目,我在 32 岁那年找到了一份编程工作。那家公司正好用 Lua 和 C 做网络,我的能力在小组里算是拔尖的。
我对自己的自学成果很满意。

但干了两年,频繁加班让身体吃不消,我辞职回老家,干回了本行。
现在的我,不再像年轻时那样热衷于死磕底层原理,而是变得更加务实
我主要用 Golang 写后端,TypeScript (Vue) 写前端。虽然代码编写效率不如年轻人,很多新东西也要现学现卖,但保留一份爱好,用代码解决行业里的具体问题,做点小工具,还是挺有意思的。

五、 给后来者的“避坑地图”

总结我这十几年的自学路,核心就两个字:实践

编程是一门实践性极强的技术,看书看不出来,在 IDE 里拖控件也拖不出来。基于我走过的弯路,给现在的自学者几条建议:

  1. 别一上来就啃 C++:除非有人带,否则一开始就在复杂的语法和 IDE 配置里打转,很容易放弃。
  2. 先找正反馈:从 JavaScript、Python、PHP 或 Lua 入门。结合一些算法和 OS 基础,先做出能看、能用的东西。人是短视的,需要立即看到成果才能坚持。
  3. 再补底层:有了兴趣和正反馈,再去学 C 语言、操作系统、编译原理,就不会觉得那么枯燥。
  4. 多读 GitHub 代码:有了方向,就去 GitHub 找相关的高星项目,阅读、模仿。看看别人是怎么组织文件、怎么命名的。

六、 AI 时代的冷思考:程序员会被替代吗?

去年 AI 编程刚出来时,很多人鼓吹程序员要失业了。
但我看得很冷静。

1. 程序员的本质是“解决复杂性”
很多老板说程序员可替代性强,那是外行话。他们只看到了代码产出,没看到过程中的艰辛。
编程工作的本质是管理复杂性。在模糊、矛盾的需求中,梳理出一个能跑、可扩展的逻辑结构,这才是核心能力。

2. AI 目前只是“高级搜索”与“辅助”
AI 确实能写代码,但它主要起辅助作用。
很多强行用 AI 生成的代码,一旦项目规模扩大,就会变得不可维护。AI 暂时还没有架构能力,它只能模仿人类已有的代码模式。
而人类程序员的价值在于:通过架构设计和重构,减缓代码腐败的速度。 这一点,AI 还做不到。

3. 向行业渗透
互联网的风口结束了,但编程技能向传统行业渗透才刚刚开始。
把编程和你的本行结合起来,做一个懂业务的开发者,这才是未来的护城河。


自学编程本来就很难,但困难是可以攻克的。
多动手,多实践,别怕写出丑陋的代码。
只要你还在写,你就已经在路上了。

雨轩于听雨轩 🌧️🏠