冒名者的传奇:一个初学者项目如何帮助我对抗羞耻感

发布: (2025年12月6日 GMT+8 09:29)
9 min read
原文: Dev.to

Source: Dev.to

Introduction

我体内有两只狼——一只渴望不断提升、学习、把自己做到极致,并且敢于展示自己;另一只——羞耻感。

  • 我为什么不更懂这些东西?
  • 这个项目太烂了。
  • 人们会想“她到底怎么会有工作?”

事实是,我真的很喜欢我最近的这个项目。我学到了很多东西,而且是的,我有点尴尬,因为我之前没有早点想到这个点子。但我仍然在这里,因为我对自己学到东西感到兴奋。几个月后我会回头看看,看到自己已经走了多远。即使你已经在这条路上走了多年,也要敢于展示自己并提出问题。去做那个“烂新人项目”。唯一会输的情况就是你根本不去尝试。

我常常听到人们谈论冒名顶替综合症,我想,“好吧,但对我来说,如果他们真的知道……如果我真的就是冒名顶替者,那就不是冒名顶替综合症了!”这种恐惧阻止我分享自己的旅程、提问以及庆祝自己的成功。现在我迈出了一步。反思和反馈是我学习的一部分,所以我们来了。

Why I Went Back to the Basics

热爱《塞尔达传说:荒野之息》。它毫无疑问是我玩过的前 5 款游戏之一。当我想找一个小而低风险的项目来更好地理解 API 与前端交互时,我偶然发现了一个免费的游戏 API……我兴奋极了。

项目的目的有两点:

  1. 更熟悉 API——学习如何读取它们、访问属性,并把数据转换成用户真的可以交互的东西。我在工作中经常这么做,但总觉得自己了解得太少。我知道哪些能用,但不知道为什么能用。
  2. 练习一些 CSS——为什么不把它玩得开心一点呢?

我学到了很多!其中大部分根本不是我原本想学的。我本以为会深化基础,把 API 从“开发者魔法”变成“我能解开的谜题”。结果,我发现架构、命名和结构对我推理项目的能力影响巨大。而且,显然在多年使用框架后,DOM 操作仍然可以让人彻底谦卑。

今年我一直在强调学习架构和设计原则,所以当我发现即使是一个小的免费 API 项目也需要架构思考时,我感到非常惊讶。

Mapping the World: Mental Models & APIs

这个 API 很有趣,也很容易阅读。向维护者致敬——他们做得很棒。我会推荐给想用《荒野之息》数据做项目的任何人。

当我开始探索数据时,最近几个月才听说的概念——心理模型——终于变得清晰起来:我第一次在播客里听到这个词并在谷歌搜索,但当时没有领悟。直到使用 API 并事后反思,我才意识到我一直在构建这些内部地图——想象数据流向、各部分如何连接以及 UI 应该如何表现。当我用 Postman 探索端点时,我就在主动构建心理模型。

我最初设想的是一个更复杂的东西,但在实际与数据交互后,我转向了更简单的方向。一个直接的汇编——可以轻松查找游戏中的物品及其位置——恰好完美。根本不需要返回按钮或多个视图。

The Combat: Async Tracks and DOM Manipulation

说实话,我被自己多快就失去对数据和响应的追踪给震惊了。我特意使用 .fetch().then().then().catch() 链式写法,而不是现代语法,以迫使自己理解驱动 async/await 世界的Promise

有一次,我花了半个晚上在想为什么我的数据在 fetch 里的 console.log 看起来完美,却从未出现在 UI 上。结果是我在某个 .then() 链里忘记返回 Promise。控制台显示了正确的内容,但 UI 实际上什么都没有。

追踪数据丢失的地方成了项目的主题。我很快学到,当类被恰当地分组时,调试会变得容易得多。干净的结构帮助我从头到尾跟踪数据。大多数 bug 都归结为对数据流失的追踪不清。这个项目清晰地告诉我需要改进的地方:从 fetch 到前端的数据追踪

DOM 操作也把我整得够呛。动态添加元素在整天使用 Angular 后显得格外陌生。我离开时带着十几张新的 Anki 卡片,对内置方法的怪癖有了更好的把握。我的常用模式是:

  1. 找到一个可行的解决方案(你好,StackOverflow)。
  2. 理解它为何有效。
  3. 与我破碎的版本进行比较。
  4. 用 AI 当橡皮鸭——我总是告诉它不要直接给答案,只提问,这样我必须更深入思考。

New Game Plus: Lessons in Architecture

现在我真正了解了心理模型,并且在设计和架构方面有了一点经验,我会有以下不同的做法:

  • 写出 1–3 条交互式用户流程——用户想要完成什么,以及他们可能的备选路径。仅此一步就能决定 UI 选择和数据预期。
  • 停止把所有东西都塞进一个类——类应该代表行为加状态。这帮助我理清了早期制造的混乱,也让我看到当辅助函数与实际管理数据的代码分离时,代码可以变得多么整洁。

The Loot: What I Actually Learned

这个项目在我意想不到的地方打开了理解的大门——架构、异步流程、DOM 操作,甚至是自信。我离开时感觉自己终于“真正”掌握了 Promise,而不只是停留在理论层面。

更重要的是,它提醒我,微小、低风险的项目可以一次性提升一整套技能。我已经在构思下一个小实验,并且迫不及待想要分享它。

下次当那两只狼又开始争论我的项目到底烂不烂,或者我是否应该把它发布时……好吧,我已经有了更多证据表明,满足好奇心的那只狼会得到回报。

Back to Blog

相关文章

阅读更多 »

大多数技术问题都是人际问题

我曾在一家公司的工作,该公司背负着巨大的技术债务——数百万行代码,没有单元测试,基于已经远远超出其生命周期的框架……