我相信人类内心最深的意愿是:在有生之年,尝试接触到宇宙最基础的真相的一点微光,聆听它们的耳语,明白它们的意义。

并且,如果你对这些经历有过足够努力的体会,你就会找到答案。无论是它们是你思想的体现还是手中握着的实物,一但你看到它们,它们就会伴随你一生。

编程很多地方与生活有相似之处。我们的任务是创作一些东西 —— 一种整体的体验会比部分重要的多的东西。就像人生,这是对有限创造力的考验。这里有一些我们必须遵守的规则,一些我们应该遵守的规则和其他一些我们可以忽略的规则。无论多么短暂,世间真理通过编程略见一斑。

编程与人生之间的四个平衡

迭代就是进步

你知道吗,如果你在一个月的开始拥有一分钱,并且每天它都会翻倍,你会在这个月的第 15 天获得 163 美元。当然,你想,在 15 天内获得 163 美元肯定还有别的更好的渠道。但是,如果你再等待 15 天,你会拥有超过 5 百万美元。

去吧,我会等你做完计算。

在编程中,我们使用迭代这个术语去表示重复某件事。用更正式的定义,它重复地将一个过程叠加到该先前这个过程的结果上。例如,1 加 1 等于 2,然后 2 再加 1 等于 3,以此类推。

当我们进行迭代时,我们希望得到反馈。我们等待某些条件的满足,这样我们就可以知道是否应该停止迭代,或则调整迭代的方式。如果我们监听反馈失败了,我们会陷入无限循环中。

人生没有什么不同。我们总是期望从目标 A 跳到目标 B,却从不去想目标 A 和目标 B 究竟是什么。而且,就算我们定义了这些目标,我们总是期望能够马上达成目标。相反的,真相往往是,我们必须从头到尾逐步的完成我们的目标。我们必须听取反馈,告诉我们我们在哪里,以便进行相应调整。

当我们有目标,开始的几天,几个星期,几个月我们通常感受不到进步。我们经常被诱惑重头开始或者从别的新目标开始。但在这样做时,我们未能意识到,虽然我们可能尚未到达目的地,但我们已经远远超出了开始的地方。完全重新开始不是必要的,我们只需要进行一些小的调整。

停止重新开始。让迭代来增加进步。

许多复杂的问题包是由很多已经解决的小问题构成

即使是体验最棒的 APP 也是由一系列解决普通问题的普通方案堆起来的。实际上,程序中大多数的解决方案都不是唯一的。是通过将这些普通的解决方案联系起来才诞生了一款与众不同的产品。

在编程中,使用这些普通的解决方案有很多种形式。其中一种用专业术语讲叫 抽象 。就是从众多相似的事物中提炼出共性。

在计算机编程中,当我们抽象化某个事物,我的通常在低级技术上构建高级技术。这会让使用底层技术变得简单。

例如,很多编程语言都是由神秘的二进制语言抽象而成(0 和 1)。它们使我们和计算机之间有了一座基础的但是构建复杂的桥梁。这些高级语言允许我们专注于更高层次的问题。

另外一种能帮助我们有效解决问题的方法是使用别人用过的解决方案。你也许听过 这个计算机术语。我不是在谈论一个布满灰尘,光线幽暗的存放图书的地方,库并不遥远。

在计算机术语中 ,是一个由其他人编写的为了解决某个问题的代码。它通常不是直接解决你面临的问题的方案,而是对这些问题的抽象。

例如,如果你在编写需要某人登录的应用,你 可以 自己来编写加密和解密的代码,或者 你也可以使用别人已经编写好的代码。通过一些设置,我们可以有更多的时间去解决我们应用中更加重要的问题。

我们所有人都在某种环境中使用抽象概念和库。例如,杂货店是对我们提供食物的抽象。汽车是徒步旅行的抽象。烤箱是生火的抽象。这些摆在我们面前的一层可以帮助我们分配更多的时间给更高层级的问题。

重新造轮子只是为了学习怎么去制造一个轮子,而不是开着它去商店。

你如何看待问题将会决定你如何解决它

回想一下一辆卡车在桥下行驶并被卡住的故事。工程师需要花费数小时想办法将卡车弄出桥。一个小孩出现了,站在卡车轮胎前,说到:“如果你们把轮胎的气放掉会怎么样?”

从这个孩子的角度出发,问题不是桥太矮了,而是卡车太高了。

大多数人都可以解他们面临决任何问题。实际上,大多数问题就是在表明解决方案。例如,如果因为桥导致问题的产生,那么答案肯定是对桥做些什么。当然,如果问题是卡车太高了,那么解决方案显而易见是让卡车变矮。

整体比部分更重要

谷歌地图源代码,《独立宣言》,马丁路德金《我有一个梦想》的演讲,2005 年史蒂夫乔布斯斯坦福的毕业演讲,以及我的第一个应用 Hello World 这些有什么共同点?

它们都是由 26 个英文字母拼接而成。

没有什么比文字更让我着迷了。文字是人类诞生到现在最强大的 技术 之一。

是的,我使用 技术 这个词,因为 —— 即使是刻在洞穴上的壁画 —— 它们从根本上改变了我们保存信息的方式。数据不在受我们大脑记忆的约束。

虽然文字最初目的是用来记录,但它马上变成了一种传递思想的方式。其中一些想法会令人愤怒,而另一些会让人受到启发。

每种语言(包括计算机语言)在通过文字或演讲传送信息时都会有些不同的分地方。每个单词及其组成部分也会略微不同。但是,语言仍然是一组符号,可以将其组合成近乎无限的思想。

例如,在英语中,我可以用大约 29 种符号来表达几乎整个宇宙。除了我前面已经提到的 26 个字母,句号,逗号,问号这些也同样有帮助。

无论对于你,我还是史蒂夫乔布斯这 29 个符号都很有价值。然而,我们每个人会因为我们选择相信的文字和语言,而产生不同的人生轨迹。

有趣的是,虽然我们经常在字典中添加词组,但是我们通常不会添加单个字母。这就意味着,在最基本的层面上,所有可能存在的想法都已经存在,正在静静等待我们去发现它们的存在。

Les Brown (美国励志演说家)通过下面这个思想实验很好的总结了这一点:

想象一下,假如你临死时躺在病床上。站在你床周围的是生活赋予你的思想,梦想,能力和才华的灵魂。

但是由于出于某些原因,你从未对这些思想采取过行动,从未追寻过那个梦想。你从未使用过这些才能。我们从未见过你的领导力。你从来没有为自己发声。你从未开始写那本书。

现在它们就站在你的床边,并用愤怒的目光瞪着你说: “我们为你而来。只有你能给我们生命。现在我们必须要和你一起离去”

问题是 —— 如果你今天就死了,哪些思想,梦想,能力,天赋,礼物是会和你一起离去?

谢谢你的阅读!