> For AI agents: the site index is available at https://www.juniortree.com/llms.txt; this page is available as Markdown at https://www.juniortree.com/blog/coding-with-me.md.
> 一些关于非科班参与Coding的想法与经历

## Page metadata

- **Published:** 2025-11-28
- **Updated:** 2025-11-28
- **Tags:** 特殊
- **Source URL:** https://www.juniortree.com/blog/coding-with-me

# Start Coding

一直以来有很多朋友对我的Coding技术感到十分好奇，一方面我并非计算机或者信息工程相关的专业出身；另一方面又能和群里面的各路大神侃侃而谈，我并没有感到自己的技术很不错，或者受过专门的训练，我的算法学得很烂，相反，我一直自嘲自己是一个“野路子”，因此我想把我自己做开发的一些经历和想法写下来，也希望对同样想了解计算机的你一些启发

## 需求是最好的老师（The Necessity）

科班教育往往是自下而上的，我在物理系光电信息专业读过一年的时间，大一的时候刚好上了C语言程序设计的课，老师教你写代码，但是除了作业里面的各种循环和判断，我们几乎不知道我们写出来的代码到底有何作用，也不知道能不能做出一个真正有意义的产品

我觉得我的需求是自上而下的，我刚开始接触 Coding 是因为我有一个很急切的需求，当时我想下载一个网页我全部照片，如果仅仅是用鼠标右键的方式，效率太慢，为了解决这个问题，我尝试去学习了「爬虫」，这时候，技术不是目的，而是手段，这种为了达成目的而不得不学的紧迫感，是学校里给不了的

你需要感知到自己生活中存在哪些需求，比如说我想把我写的东西展示给大家看，你可能需要自己建一个博客；你可能想使用摄像头快速地去数显微镜里面的线虫，你可能需要用YOLO做识别；你可能觉得校园网每次都要登陆有点麻烦，你可能要自己去抓包，然后写脚本…

这些都是日常中可能存在的需求，技术的本质是让生活变得更加便捷，出于这一点进行考量，我们其实有很多文章可以做

## 从模仿到复用的进阶 (The Pattern Recognition)

刚开始做Coding的朋友经常会有一个误解，觉得代码都必须一行一行自己写的才算是真正懂了，但其实，直接拿别人做好的东西也是一件很常见的事情，这绝对不是贬义词

我写的第一份爬虫代码也并不是自己从头开始写的，我是找了个B站的视频，然后一行一行敲下来的，虽然当时我也不知道这代码有啥用，但是最终跑通了，我很开心

另外一个就是我尝试建立了一个自己的博客，我当时用的是可视化面板，我也是第一次接触Linux，对命令行很不习惯，然后用一种叫做「容器化」的很傻瓜式的技术，基本上就是复制粘贴，完全不知道什么意思

但是在这个过程中，在“不知道为啥”的情况下，我成功把服务跑起来了，给我积累了很强的“手感”，我知道咋分辨这个教程是精品教程还是垃圾教程，知道如何排查信息，如何查看日志

自己亲自动手去做实验，这个过程的经验积累是迅速的，哪怕你服务没跑起来，但是你至少知道这样不行

## 正向反馈循环 (The Feedback Loop)

生物学学里面有一个词叫叫做「正反馈调节」，写代码的魅力之处在于「即时反馈」，你敲下一行代码，就能马上看到效果，甚至是部署一个可以服务于你自己和朋友的网站，这种成就感会让你想：“既然能跑个博客，我是不是也能跑个私有云盘？是不是能跑个自动化脚本？”

## 建设性的不满 (Constructive Discontent)

一个非常重要的分水岭在于，你想把它“做完”，还是“做好”

在这个圈子里，很多停留在“脚本小子”阶段的人，他们的心态通常是：“这教程能跑通吗？能跑通就行，不能跑通我就换一个教程”一旦跑通了，他们的探索就结束了

技术的进步，往往在于对于现状的不满，比如我用WordPress建了一个自己的博客，我请朋友来访问，朋友和我抱怨说加载页面转了有半分钟才访问进去；又或者你自己觉得你这个博客的主题不太好看，你想要个猛男粉，结果原作者给你个青青草原色

因为上述原因，所以你开始研究系统的底层逻辑，为什么慢，我要怎么改代码

- 是因为 VPS 的线路不好？（开始研究 CN2/GIA，TCP 拥塞控制，BBR 算法）
- 是因为静态资源太大？（开始研究 CDN，对象存储，Gzip 压缩）
- 是因为数据库查询太久？（开始研究 MySQL 索引，Redis 缓存）
- 这个主题是什么东西写的？（是 Vue 还是 React，是 Jinja2 还是 EJS）

所以我真的很推荐你去找一个实际存在的问题去解决，最好的方式就是你自己去建一个博客，然后写文章，然后把网址发给你的朋友看

一旦你开始不满足于“照抄作业”，你就会发现现成的 Docker 镜像可能不满足你的需求，于是你开始写自己的 `Dockerfile`；你发现别人的脚本逻辑有 Bug，于是你 Fork 下来自己修

这就是从“消费技术”到“创造技术”的跨越，优化优化再优化，折腾折腾再折腾

本质上就是一个对现状不满足，要一直折腾的情况

## 氛围编程 (Vibe Coding)

最近有一个非常流行的概念叫做Vibe Coding，中文翻译过来叫做「氛围编程」，将程序员从繁琐的语法（Syntax）中解放出来，专注于逻辑和设计（Semantics）

有不少朋友问我，说让我推荐学一门语言

如果你是首师大的理科生，你要不是物理系的，大概率是会上一门程序设计的课，然后会让你学Python，就我个人感觉而言，我觉得这门课有点水，像在背字典，学会了 `for` 循环的 10 种写法，但不知道拿它来干嘛

其实现在掌握哪门语言其实已经不那么重要了，重要的是想法，你得多接触一些好玩的项目，你得会用AI，你得知道我应该用什么技术去解决什么样的问题，比如说我想做一个博客，那我可能会考虑使用Next.js+TailCSS+Vercel（我相信如果你一点基础也没有，我说的这段话是啥你都不懂），如果你连这些解决问题的基本方法都不知道，那我觉得你就算学了很多门编程语言其实也没太大意义，等到你当前语言的生态不能满足你的项目需求了，你自然而然会去尝试别的语言，尝试另外一种生态

在 AI 时代，“知道有什么”（Knowledge Breadth）比“知道怎么写”（Implementation Detail）更重要，因为 AI 可以帮你写代码，但 AI 目前还很难帮你做技术选型，或者说它给你的选型有可能完全不适合你的项目，如果你不知道 Vercel 的存在，你可能会傻傻地去买服务器、装 Nginx、配置 SSL，浪费大把时间，你的核心竞争力在于你的“技术视野”和“品味”

编程语言仅仅只是工具，写爬虫？Python 库多，用 Python；写高并发后端？Go 协程强，用 Go；写前端？没得选，JS/TS，编程语言中其实也不存在说这个语言能干，这个语言不能干的情况，绝大多数决定语言的使用场景和它的生态有关系

你是因为**需求**走到了这里，而不是因为你“只会”这门语言，AI 极大地降低了语言切换的成本（Language Switch Cost），我现在经常用 Cursor 或 Claude Code 写我不那么熟悉的语言，只要我的逻辑是对的，AI 就能帮我把“方言”翻译对

在 Vibe Coding 的模式下，**自然语言（Natural Language）其实变成了最高级的编程语言，**你描述清楚：“我要一个响应式的博客头部，左边 Logo 右边导航，手机端折叠”，这其实就是代码

## 解决问题的快乐 (Pleasure of Finding Things Out)

这句话其实源自我们物理系的老登费曼说的，原话是：“The pleasure of finding things out.”

**Vibe Coding 时代的乐趣，反而回归了最本真的「表达欲」，** 当AI把语法负担都卸掉了，编程重新变成了「描述想法→看见想法成真」的游戏，你不再需要先成为C语言大师才能谈创意，你像导演讲戏一样描述需求，代码就生成了，每个人都是这场革命的参与者和创造者

作为非科班出生的我，反而会觉得 Coding 是一件还算有趣的事情，因为我不用去深究算法，不用把这个当作任务，也许某天我感觉这个有意思，我还会特意去看一看

当那个 Bug 被你揪出来，或者当你终于搞懂了 Nginx 的反向代理到底是怎么把流量转发给你的容器时，那种“我搞懂了”的瞬间，那种“原来世界是这么运行的”的通透感，是会上瘾的

我也希望你能感受到和我同样的乐趣
