不是修补匠:我如何成为一名工程师的痛苦而几乎没有教育意义的故事

2020-08-20 17:39:50

角色扮演游戏似乎痴迷于充满怪物的地下巢穴。(地下城和龙的名字里甚至有这个名字。)小时候,我记得看过我弟弟在他的电脑上玩暗黑破坏神II。一切都黯然失色、阴郁、可怕、黑暗。--那只是表面上的!然后他下到一个地牢里,那里才是真正有行动的地方!这对我幼稚的灵魂来说是令人压抑的恐惧。我坐在那里,眼睛呆滞,湿乎乎的小手紧握着我那条非常不时髦的灯芯绒旧货店裤子的两边,目瞪口呆地想:为什么会有人想要下到那些地牢里去呢?那里什么都没有!只有怪物!为什么不干脆呆在地面上呢?也许躲起来,也许拿到黑魔王的电话号码,然后在安全的村子里撮合一笔交易?听起来怎么样?

这是我在接触一项新技术时通常会有的感觉。目瞪口呆,但不知道有多少死胡同、无法解决的问题和浪费的时间在等着我。我宁愿花更多的时间在表面上,学习理论、能力和更高境界的概念。一般来说,我不喜欢把手弄脏。

为此,与我的许多软件工程同事相比,我一直认为自己处于严重的劣势。只有技术上的辉煌才能弥补这一劣势。如此辉煌的史诗,以至于..。我在实施它时肯定会犹豫不决。这就是我职业生涯的悲剧,我来歌唱一下:

我从小就是个书呆子,人人都说我注定要读人文学科。我中学第一个也是唯一一个不及格的年级是一堂计算机补习课。我没有玩乐高技术。我从来没有想过会有人愿意把洗衣机拆开,只是想看看它是怎么工作的。当我最好的朋友这样做并陷入巨大的麻烦时,我对此感到惊讶和钦佩,但并不幻想这条路是为我走的。

但有一件事吸引了我对计算机的兴趣,尽管可能性很大:自从我在幼儿园与老板的孩子打了一场败仗,发现自己不再受到沙盒的欢迎以来,我一直对权力感兴趣;它是如何工作的,谁拥有它,以及如何获得它。当我说感兴趣时,我当然是指对学术感兴趣。这么说吧,如果你明白我的意思的话,我童年时的很多社交经历都是那种由外向内的变化。一个满头油腻头发的孩子在社交上被回避,不善于交际,他该怎么做?--我的答案是,像许多孩子一样,把我的思想当成自己最好的朋友。这个充满各种实物的世界太可怕了,坦白地说,对我瘦弱的胳膊来说太沉重了。但不是在我的幻想中,我碰巧在那里从事致命的职业。

进入电脑领域:同样,电脑游戏仍然是比我更熟练的人的领域。反应能力,实际掌握能力?不是我的茶杯。对于我温柔的灵魂来说,大多数游戏也太可怕了。不,如果我想跟上,我必须坚持不那么快节奏的东西。让我感兴趣的是编程的概念:这是一种可以将思想带入生活的设备!我脑海中的概念找到了化身--这是一个多么令人兴奋的想法!最后,我会发现自己在一个我真正感到宾至如归的领域里掌握了权力。社会正在谈论科技是未来的方式,这并没有坏处。--而且,谁知道呢--我甚至可能设法跟女孩子说话呢?(如果有的话,这是一个很受欢迎的非续集!)。

因此,作为一个在世纪之交焦躁不安的青少年--凭借我的计算机补习性知识--我开始为人工智能构建操作系统。我发明了一种基于XML的声明式编程语言,我在Perl的调料中使用一堆健康的正则表达式将其编译成x86程序集。不要去找我那时候的Usenet帖子。请。我年轻时的软件野心并没有带来多少收获,尽管我在这个过程中确实学到了一些关于Perl和Java的东西。

更有影响力,更令人惊讶的是,在一个完全不相关的连锁反应中,我开始与女孩交谈,其中大部分是一些勇敢的(或严重拥挤的)灵魂,他们愿意闻到我当时正在护理的明显的体臭问题。

我在本科时注册了认知科学,希望在哲学和计算机科学之间做点什么,而不会因为这两门学科的枯燥乏味而消亡。我没想到我会发现一颗隐藏已久的珍珠:数学和逻辑的乐趣。

当我还是个孩子的时候,我就像对待魔方一样鄙视、恐惧和羞愧地看待数学:一个令人费解的乱七八糟的东西,除了毫无乐趣的劳累和失败,什么也不承诺。魔方不是我世界的一部分。

但现在我明白了,我并不真的需要成为一个修修补补的人才能做数学。我只需要成为一个坚定的思考者!这是一个思想领域,逻辑是一个有价值的对手。说:我想做的事情是不可能的,逻辑不支持它,这是多么令人高兴的事。但是,我想做的事情是合理的,我能做些什么呢?也许我可以改变我的要求,改变我的观点,以这样一种方式来表达我想要形式化的东西,这样逻辑即使不情愿地也会接受它。

我对提高STEM参与度的建议是:把数学作为形式上严格的人文科学分支来教授!

在我的学习中,除了逻辑学,我还学习了统计NLP,优秀的老式人工智能以及神经网络。这是在支持向量机还很流行的时候。但是,周围有一些关于所谓的“深度信仰网络”的传言。

那是2007年,我打算用自动编码器构建生成式语言模型。唯一的问题是:深度反向传播还没有真正起作用--而且你必须自己构建它,所以如果它没有产生结果,你永远无法确定是错误还是算法的缺陷阻碍了你。我就是其中之一,有很多虫子。

我在生成性自然语言模型上失败了,开始(重新)发明对抗性网络,但没有使用杰弗里·辛顿(Geoffrey Hinton)实验室涌现出来的新训练算法,相反(在自我挫败的天才笔触中)决定推出我自己的进化算法。当我一瘸一拐地跨过毕业线时,我的主管们都认为这本书不值得发表。愤怒的是,我得出结论,我在学术界没有太大的前途,于是开始从事网络开发。

记住,我是认知科学专业的。虽然我能把脚本钉在一起,但我真的不知道怎么写软件!但是,硅谷的神话在空气中飘荡,它把我吸引了进来,就像我们的狗在街对面闻到尿渍就会拉她的皮带一样。

我打算开发一款应用程序,而且会很成功。--如果我构建一个统一的Messenger应用程序呢?那是我不太了解的事情!

不幸的是,几乎在同一时间,健康问题开始占据主导地位。我在慢性疼痛中已经有一段时间了,在注意力有限的情况下,我在大学和研究生期间一直在滑行,主要是从讲座和同学那里渗入信息。坐下来读一本技术书籍是一项相当艰巨的任务。坐下来写--更不用说调试理解不清的代码,那就是堕入最肮脏、黑暗和阴暗的地牢。但我还是试过了。

调试是一只好奇的野兽。作为程序员,我们偶尔会遇到甚至不知道如何开始的情况。我们毫无头绪的问题和窃听器。作为一个新手,我们会经常遇到他们。处理这些情况所需要的是令人难以置信的坚定不移,愿意尝试许多事情,以及丰富的经验。

那些倾向于从小事做起、督促、实验、通常乱搞的人是一个明显的优势。他们进入了不那么难以理解的死胡同,更快地获得了广泛的经验,通常会制造出实际有效的东西,而不是听起来像是好主意的东西。通过我朦胧的眼睛,凝视着编辑,我突然意识到:如果我想在软件领域取得成功,我必须学会模仿这类人:修补工人。

人们一定会把西西弗斯想象成古希腊的埃隆·马斯克。真的--看看维基百科的页面吧:相似之处令人惊叹。西西弗斯是个忙碌的人。在他受罚之前,他在希腊各地奔跑,超越了死亡,挤压了宙斯给他穿的奥林匹亚短裤,通常是极度活跃和自以为是的。最狡猾的人。像火星殖民地这样乏味但庞大的项目,面对现实拯救我们浪费的驾车生活方式,或者滚石上山,确实是对这类人的一种公正的惩罚。

我不是那种人。我是个想要技术的人。我将致力于雄心勃勃的项目:统一消息,或基于反统一的索引的文档数据库,或者Reddit克隆,将子Reddit替换为嵌入到非欧几里得空间中的内容。诸如此类的东西。与那些马斯基式的成功者不同,我没有把它做得很大。实际上,我并没有制作任何人们真正可以看到和使用的东西。就像对西西弗斯的惩罚一样,我的注意力之石总是会滑倒--在我有机会装船之前。

没有办法粉饰它:我从根本上把编写软件和牦牛剃须混为一谈。我会把自己推进到越来越深的理论和有先见之明的优化中,直到这个项目变得有点惰性……。在那里坐了一会儿...。然后我慢慢地,慢慢地,不知不觉地放弃了。

令人惊讶的是,西西弗斯被众神惩罚后,基本上变成了一个“我”!在他完成任务之前,他已经超过了所有人中最大的最后期限:死亡本身。后来,他拼搏,拼搏,拼搏……。但是没有结果。

真正让我感兴趣的是这个神话中的失败时刻。那一刻,石头从他手中滑落,又滚了下来。当然,他一定会拿到的,对吧?但是不,他不明白。这个疏漏只是一个事后的想法,一个有待粉饰的未解之谜。西西弗斯的解决方案是:更加努力。

我就是其中之一,已经尝试得更努力了。来打造一款成功的产品。而我在这一点上失败了。

但是,在攀登我自己的技术傲慢之山的过程中,我实际上确实学到了足够的行话来通过技术面试。

你知道面试官过去是如何用FizzBuzz剔除不会写代码的人的吗?对我来说幸运的是,我确实知道如何解决泡泡嗡嗡声。实际上,我知道的还不止这些:我能够足够聪明地谈论高级技术话题。所有那些我梦寐以求的奇特技术。问题是:我一辈子也不能让一个简单的软件项目冲过终点线。

事实上,我是一个被困在熟练技术专家身体里的0.1x程序员。只要说一句就够了:我在保住一份工作上遇到了困难。但我可以通过面试,这样我就可以换一份新的。事情一点一点地改变了,我学会了坚持下去。我有幸遇到了一些科技界最善良的人,他们忍受了我和我漫无边际的无能。如果这个肮脏的故事有什么寓意的话,那就是:谈论可以帮助,躲藏可以伤害。

我们实际上并没有生活在一个充满惩罚的世界里。仅仅通过出现和失败,过了一段时间,我不知何故获得了足够的实用知识来真正做好我的工作。以一种神秘的方式,许多重要的事情在我们不注意的时候发生了。有时候,所有需要做的就是坚持做下去。这确实是修补工的好处:他们会继续摆弄一些东西,并在这样做的同时获得经验。

我的困难在于,我会感到害怕,我会僵住,不敢采取行动,不敢亲身体验代码怪兽。因此,现在,如果我试图学习一些广泛而复杂的东西,我通常会选择首先研究那些与之相关但不具威胁性的东西。找到感觉不像家庭作业的预备项目是一种真正的艺术形式。我要关注的是深层次和概念性的工作,而不是繁琐的工作!但是,为我的爱好和能力找到合适的入口点可能是一项分析任务!如果有一件事我能做的话,那就是分析任务。

我的思维总是倾向于分析和概念化,而不是表演和操纵。因此,我开发了一些技巧,将繁重的活动工作转变为穿插着非威胁性操作的一系列分析。

一切都回到了对地下城的恐惧上。熟悉能化解恐惧。当我看我弟弟玩暗黑破坏神的时候,他并没有被恐惧淹没;他可能有一些可怕的兴奋,但主要是在某种安全感的基础上享受着一种掌握和成就感--知道这个游戏是如何运作的。

如今,我有时甚至可以享受一下修修补补的乐趣。如果我不能将手头的任务与更大的概念联系起来,我仍然很难集中精力。这种职业成长的一个关键因素是尊重我自己的大脑及其独特的运作方式。如果我坐下来,对我将要做的事情只有一个模糊的概念--并期望取得结果,那么我就是在为自己的失败做准备。

我必须学会:1.不做工程学--尽我所能避免强迫自己想出正确的解决方案,并停留在概念上。2.我必须学会:1.不做工程学--尽量避免强迫自己想出正确的解决方案,并停留在概念上。克服我对了解机器实际工作原理的恐惧--熟悉会产生蔑视,而鄙视是你在出发去屠龙时想要的。与我这样的人一起工作:我不能简单地坐在键盘前自由编写代码。对于我要做的事情,我需要一个粗略而现实的算法计划。当出现问题时,知道在谷歌上输入什么。

我已经尝到了在我熟悉的代码库中完成可管理任务的乐趣。有时我的需求仍然太陡峭,概念太抽象,实现太棘手。要不让石头掉下来,仍然是一场斗争。