本文重点介绍如何摆脱重复的编程项目,但其理念可应用于任何创意领域,如电影制作、音乐或艺术。
您是否陷入了教程地狱,不确定下一个项目,或者因重复编码而精疲力竭?
我使用小众工具,用多种语言编写代码,并构建非传统项目,只是为了学习事物的工作原理并出于对工艺的热爱。我的目标不是赚最多的钱——至少现在还不是哈哈。
您不需要为了脱颖而出而大量生产另一个粗糙的应用程序或通用的 saas 产品。您需要为您的“学习”目的制作项目。
- 制作别人在使用时会欣赏的东西
- 重新发明轮子以欣赏它的“圆”
- 为你的个人用途制作
当然,并非所有这些都是“有用的”,但你学到了一些有价值的东西,这些东西将来有一天可能会有用,也可能没用,你保持着好奇心——这才是最重要的。
编程不仅仅是为了获得一份 faang 的工作或创办下一家独角兽初创公司。它是关于创造让你感觉充满活力的东西。构建能够反映你的怪癖、你的激情、你的怪癖的项目。无论是 C 语言中的正则表达式引擎还是 Google Sheets 中的音乐合成器,都要让它“充满灵魂”。
坚持下去,学习,保持好奇心。你一定可以做到的 🙂
擅长编程并不意味着了解每一个 javascript 框架、python 库并记住 faang 中提出的所有 leetcode 难题,而是意味着从第一原理构建有效的东西。
教程地狱和腐烂学习只能走这么远,你需要对底层原理感兴趣。你不需要考虑结果,只需继续做你喜欢的事情。
除了复制粘贴手势检测 linkedin slop 或使用 sqlite 反应 todo 之外,编程中还有很多“酷”的东西。
那么你应该做什么呢?
我的建议是剖析网站,编写游戏引擎或您想玩或与朋友一起玩的有趣游戏,制作脚本来自动执行您的日常工作以节省时间。
“我无法创造的东西,我就无法理解”——理查德·费曼
一些很棒的项目,可以通过文章/博客来学习基本原理:
- 从头开始学习 redis – 最适合学习网络编程和数据结构
- 音乐可视化工具
- 从零开始创建数据库——学习持久性、索引和并发性
- c 中的 shell
- 制作自己的脚本语言
- 编写你自己的 chip8 模拟器
- 前端框架
- 像 git 这样的版本控制
- C语言中的正则表达式引擎
- C语言视频播放器
- 构建你自己的 Lisp
您不必遵循文章中的所有内容,只需看看自己遇到的问题并自行解决即可。
或者你可以随心所欲,但要让它充满深情,而不仅仅是另一个仿制品。
您还可以做的是在严格的限制下进行操作,例如:
- vimscript 中的神经网络
- 必须手动执行所有数学函数
- 反向传播才是真正的挑战
- 使用着色器代码构建整个游戏
- 在 CSS 中创建数据库
- 为其他语言中的语言编写解释器
- 在电子表格公式中制作音乐合成器
- 用 bash 编写的 bash 服务器
- 用 sed 编写的编译器
- 批处理文件中的 3d 引擎。
这些挑战将迫使你以完全不同的方式思考。你不能只寻求显而易见的解决方案或从 Stack Overflow 复制粘贴。
在这些限制下的一些小型玩具项目。强烈建议查看它们的结构和实践:
- C语言中的4个函数
- 用 C 语言编写的文本编辑器,代码少于 1000 行,具有语法高亮和搜索功能
- 几千行代码以下的 Web 浏览器(在浏览器规模中这被认为是最小的)
- 数据库代码只有 3000 行,没有依赖关系
我想写的另一件事是制作“酷”的东西,酷是什么意思?
在我看来,如果有人玩弄你的产品,那就很酷
我的大哥卡尔荣格曾经说过:
“了解所有的理论,掌握所有的技术,但当你接触一个人的灵魂时,你只不过是另一个人的灵魂。”
你可能是世界上最好的工程师,但如果你的产品感觉死气沉沉、没有灵魂,那就没人会在意了。为什么?
人们不关心完美,他们关心联系!
让我来为您解释一下:人们不仅仅使用与他们相关的东西。怎么做?
当我们的汽车无法启动时,我们会对着它大喊大叫。当我们成功拨打电话后,我们会感谢我们的手机,但我们为什么这样做呢?
因为我们把他们当成一个真实的人来对待,我们认为我们的担忧可以通过个性得到满足。
所以,尝试制作一些让别人感觉有联系的东西并每天使用它们。即使没有人使用它,至少你会用它来节省你的时间并从制作它们中获得乐趣。
“也许真正的项目是我们一路上结交的朋友”