Daniel Sada Caraveo | Developer Productivity & Culture

Part 1: 如何通过破坏电脑来学习构建它们

March 31, 2025 · 6 minute read Categories: career foundations Tags: beginnings learning curiosity exploration Series: My career so far

你是否也有过这样的经历,在徒步旅行时,总会有一个恰好位于中间点的时刻? 那通常是一个反思的时刻,你会进行一些思考。 有时你回头看,会意识到:到目前为止,这已经是一段漫长的旅程了,不是吗?

我最近满 30 岁了,像所有以零结尾的数字一样,这是一个特殊的反思时刻。为了好玩和反思,我写下了过去 12 年我在做什么,以及我是如何走到今天的。 这是探索我进入软件工程领域的旅程的第一部分。

点击一切:好奇心如何构建了我的基础

我第一次弄坏我的电脑时,我没有不高兴。我非常兴奋。 破坏东西教会了我它们是如何工作的,那个黑色的终端屏幕不仅仅是一个谜; 它是一种邀请

我不太清楚我具体是什么时候开始接触软件工程师的,但我有一些想法可以解释是什么激发了我对计算机的好奇心。 首先也是最重要的一点是,我的妈妈给我们买了一台家用电脑,我的爷爷会把他不用的下一代笔记本电脑给我。

在 90 年代末拥有一台属于自己的机器意味着你可以学习如何安装/删除东西以及玩游戏。 而且那个时代玩游戏比现在需要更多的工作。

Windows 95 install screen. 你安装什么? 典型安装?自定义安装?紧凑安装? 你甚至如何选择?

1. 插入安装光盘
2. 运行 setup.exe
3. 输入产品密钥
4. 安装适当的驱动程序
5. 配置显示设置
6. 插入光盘运行游戏

通过你必须做的日常维护,你通过这种方式学到了很多关于电脑的知识。 我过去常常花很多时间单击开始菜单中的所有内容,一个接一个地尝试理解它们的作用。

My briefcase 是的,这包括创建公文包

在单击所有内容时,我偶然发现了 CMD.exe; 对我来说一直是个谜的小型黑白终端。 小终端,你做什么的? 我可以在那里输入什么?

@echo off
echo Hello, what is your name?
set /p name=
echo Nice to meet you, %name%!
pause

找到我的第一个命令令人兴奋。 cddirsetecho。 有趣!

论坛,我的第一个开发者社区。

在尝试通过搜索互联网来查找终端的工作方式时,我沉浸在我的第一个论坛中,并且我开始编写脚本来尝试做一些有趣的文字冒险。 进行文件操作,编写脚本,甚至编写简单的游戏,这是我第一次开始编码。 找到一种使用命令的新方法真是太棒了

好奇心和探索对于学习至关重要。

在那段时间里,获取知识的方式是通过论坛冲浪。 我加入了几个论坛来了解如何编程。 他们谈论 C++Batch filesVB6Perl。 探索论坛世界就像拥有一个社区,可以立即引导你打开更多的大门。 像“学习用 C++ 编码,1/10”和“为什么用 PERL 编写脚本如此强大”之类的帖子。 我花了整整 2-3 年的时间在论坛上学习一切。 如何构建我自己的 Portable app(所以你不必携带 CD?!)。 一切都很有趣而且很新鲜,我找到了一个可以谈论它的社区(也许今天相当于 dev.to?)。

一个典型的论坛交流可能看起来像这样:

Me: 我如何让我的批处理文件询问用户输入?
ForumGuru98: 尝试使用 SET /P 命令:
SET /P variable=Prompt text
Me: 它起作用了! 我还可以清除屏幕吗?
ForumGuru98: CLS 是你的朋友 :)

社区(和论坛)加速学习

Linux 冒险:未能获胜。

另一个重要的学习经历是设置我自己的 Linux 发行版和双启动。 我会在年初用不同的发行版从头开始设置我自己的 Linux。 我设法每年都会因为一些我做错的步骤而搞砸我的笔记本电脑。

安装了错误的图形驱动程序? 搞砸了。 修改了没有备份的 /etc/X11/xorg.conf? 搞砸了。 意外删除了关键系统文件? 搞砸了。

我花了几年时间才了解 Linux 配置的工作原理,并发现你可以使用 Ctrl+Alt+F1F6 切换到终端会话,以拯救一个 GUI 损坏的系统。

当我尝试编辑我的第一个配置文件时,我上了一课特别痛苦的教训:

# 我第一次尝试编辑 xorg.conf
# (当然,没有备份)
sudo vim /etc/X11/xorg.conf
# 我会做的一些编辑示例
Section "Device"
 Identifier "My Graphics Card"
 Driver "nvidia" # 应该已经用 "nouveau"
 Option "Resolution" "1600x1200" # lol
EndSection

每个被搞砸的系统都教会了我更多关于计算机实际工作原理的知识,而不是任何成功的安装。

每个计算机科学家都应该被要求搞砸东西(特别是 Linux)。

Web DevelopmentNeopets 时代

我的 web dev 职业生涯始于设置我的 Neopets 商店。 对于那些不熟悉的人来说,Neopets 是一款交互式浏览器游戏,你可以在其中喂养你的宠物,照顾它,并与其他宠物战斗,同时通过玩超级有趣的 flash 游戏来赚取游戏币。 在 Neopets 中的一部分是,你必须使用 HTML 创建你的商店/画廊,以便人们可以从你那里购买东西,或者在展示中展示你辛苦赚来的物品以炫耀。

不同商店之间的创意数量令人惊叹,并且很好地创建你的商店意味着更多的人会访问它,因此你会获得更多的 NeoPoints (!!)。 人们在那里拥有最先进的商店,里面充满了重复的 gif、平铺的 jpeg 和跑马灯效果。 甚至还有社区共享的模板,你可以编辑和重用。 这是我第一次接触 CSSHTML居中

一个示例 NeoPets 商店看起来像这样:

<html>
<head>
 <title>My Awesome Neopets Shop</title>
</head>
<body bgcolor="#FFCCFF">
 <center>
  <font face="Comic Sans MS" size="5" color="purple">
   Welcome to My Shop!
  </font>
  <marquee><img src="http://images.neopets.com/items/toy_plushie_faerie.gif"></marquee>
  <table border="1" width="500">
   <tr>
    <td>Item</td>
    <td>Price</td>
   </tr>
   <tr>
    <td>Magic Healing Potion</td>
    <td>5,000 NP</td>
   </tr>
  </table>
 </center>
</body>
</html>

游戏化编程在培养有兴趣的程序员方面非常有效

回首往事,很明显,这些早期的经历不仅仅是一个短暂的阶段,它们是我职业生涯的基础。 从命令行到 Web,从论坛到游戏社区,旅程的每一步都在塑造我将成为的开发人员方面发挥了作用。

是什么让你进入技术的? 在下面评论!