我为什么要编码?

170 阅读6分钟

当我8岁时(或5岁,或10岁,记不清了),我不断被问到一个每个人都必须面对和解决的问题,每一个人都是如此。

你想成为什么?
孙悟空?

三年后。

你最喜欢的学校科目是什么?
没有,我都讨厌,但数学是我比较讨厌的科目,我想。

三年后。

你想成为什么?你想生孩子吗?结婚吗?买房子?
爸爸很抱歉,我对你所有问题的答案仍然是孙悟空。

我开始考虑的第一个职业不是因为激情、爱或好奇心,而是因为痛苦和仇恨。

那一刻,我讨厌所有为我治疗过的牙医,这都是我小时候的糟糕经历,我想拯救其他孩子,让他们不再经历同样的痛苦。

幸运的是,我有机会在诊所里呆了整整一个上午,了解牙医的生活是怎样的,我绝对毫不犹豫地放弃了这个想法。

诱因

两天后,我父亲在我吃午饭的时候进来,给我看了一篇报纸上的文章,上面写道

3D打印机是未来,相关的工作会提高,而且会有超级巨额的收入,你应该鼓励你的儿子学习它,否则他们会永远饿死。

或类似的内容。它还包括一个列表,其中有相关的工作和估计工资,包括计算机科学家、软件工程师、IT......

我花了半个小时才完全确定我想成为一名计算机科学家。虽然我讨厌3D打印机。对它们没有兴趣,所以我不知道我的工作是否会有很好的收入,也不在乎。

我很确定,因为我莫名其妙地知道我是为此而生的,从我在母亲的子宫里就对那个世界超级好奇,我只是因为无知而没有考虑。

作为第一步,我寻找了我哥哥第一次给我看什么是Microsoft Word时问我的问题的答案。

如果你用Word来创建文档,你用什么来创建Word?

Monkey thinking

Monkey thinking

这就是导火索。我并不关心汽车是如何制造的,计算机是如何制造的,或者电影是如何录制的。但我确实关心一个程序是如何制作的。

你需要特殊的机器吗?他们有程序来创造程序吗?那这些是怎么做出来的呢?

我的第一个程序

谷歌告诉我,这个问题的答案是C、C++、Java、Python等等。于是我开始从一个Youtube频道学习Java,这个频道既提供课程,也提供有解题练习的PDF文件。

虽然它们只是控制台应用程序,但我喜欢这样。我发现编码超级有趣,当我读到练习的干净解决方案时,我感到很兴奋,因为它与我的肮脏的意大利面条代码有很大的不同。我的眼睛会睁得很大,我的大脑会释放出一些令人满意的化学物质,这是一个很好的指标,对吗?

这很酷,但是,我离建立一个程序还很远。人类通常不使用控制台应用程序,对吗?窗口、颜色、按钮、动画、气泡、阴影、标题都在哪里......我怎么能用一个控制台应用程序为我的母亲或朋友制作有价值的东西呢?我就是做不到。

直到CS学位的第四年,我才做了一些对人有用的东西:用VanillaJS、HTML和CSS做的视频游戏。那个项目为我提供了我所需要的知识,并开始看到人们使用的应用程序之间的共同模式。你需要一个数据库,一个有业务逻辑的后端服务器,以及一个前端应用程序来绘制一个漂亮的用户界面并将业务数据注入其中。太神奇了!我已经进入了矩阵!正如Elliot Alderson所说。现在我觉得我可以看到一切,现在一切都这样了。

但是

为什么我觉得与这里格格不入?为什么我和其他人不一样?我不穿黑色连帽衫,不玩《英雄联盟》,没有Discord账户,不喜欢《龙与地下城》,我觉得编码是一项有趣的活动,但我不像我所有的伙伴那样对它充满热情。我不喜欢干净的代码,我不喜欢讨论使用React或Angular,我不读技术文章也不看大量的会议。我犯了一个错误吗?我属于这里吗?

我需要退一步来回答这个问题。我为什么在这里?为什么我选择了这个?因为那份报纸?因为我对程序的制作过程感到好奇?是什么让计算机科学让我在整个学位期间一直参与其中,并喜欢大部分的科目?为什么我选择了软件分支而不是硬件或网络安全?

我为什么要编程

因为当我看到一个为普通人提供价值的好点子时,我感到了巨大的鼓舞。化学品被释放出来,眼睛睁得大大的,问题开始在我没有编码激情的大脑中出现。他们是如何发明的?他们在想什么?他们在吃什么?那个*"啊哈 "*时刻是怎样的?

这些都是我在看史蒂夫-乔布斯介绍第一款iPhone时想知道的事实。"这个产品改变了一切"。

这个演示并不新鲜,在那一刻,iPhone 5已经上市了,但对我来说仍然很神奇,因为他正在解释他们试图解决的问题的根源。塑料键盘、复杂性、尺寸、手写笔。他们通过漂亮的滚动体验和只有一个主页按钮优雅地解决了这些问题......我不是一个苹果粉丝,但我母亲可以使用其中的一个!我想我现在明白了。

好了,我想我现在明白了。我喜欢编码,但我并不热衷于它,就像建筑师不热衷于他们使用的笔或规则一样。

Rules and pens

Rules and pens

我喜欢编码是因为我可以用它来创造一些东西。

我只需要我的双手和一台电脑,没有工厂,没有原材料,没有任何东西。

代码只是文字,而我写的文字是建造其他人可以使用的东西的砖头。我不写文字,我写东西。这是软件的魔力,计算机的力量就在你的手掌上,等待你的指示。你所需要做的就是用同样的语言说话,而编译器会处理剩下的事情。这几乎就是诗歌。

但编码本身没有价值,就像一支笔没有价值一样。

这就是为什么我不关心你认为哪个JS框架是最好的,我不关心你是否喜欢Scrum而不是Cascade,你是否实行TDD或DevOps。归根结底,它们都是更多的笔。你想向我推销你的工作机会吗?吸引我吗?告诉我你的软件,这对用户有什么价值?你是如何帮助人们的?用户体验如何?设计师和开发人员在你的公司里有多少空间来提供一个真正有价值的、抛光的应用程序?

这就是动力的藏身之处。这就是能让我为我工作的公司感到自豪的地方。我现在很投入。