截至2018年我不知道的事情

2020-11-27 02:13:11

人们常常以为我知道的远比我实际了解的要多。这不是一个坏问题,我也没有抱怨。 (尽管来自少数族裔的人虽然来之不易,但他们经常遭受相反的偏见,这很糟糕。)

在这篇文章中,我将提供一些不完整的编程主题列表,人们常常错误地认为我知道这些编程主题。我并不是说您不需要学习它们,或者我不知道其他有用的东西。但是,由于我现在自己并不处于弱势地位,因此我可以诚实地说。

首先,经常会有一个不切实际的期望,那就是经验丰富的工程师了解其领域中的每一项技术。您是否看到过包含一百种库和工具的“学习路线图”?有用-但令人生畏。

而且,无论您经验如何,您仍可能会发现自己在有能力,不适当(“ Impostor综合征”)和过度自信(“ Dunning-Kruger效应”)之间切换。这取决于您的环境,工作,个性,队友,精神状态,一天中的时间等等。

经验丰富的开发人员有时会公开自己的不安全感,以鼓励初学者。但是,经验丰富的外科医生仍然会感到不安,而学生则拿着第一把手术刀,两者之间存在着巨大的差异!

听到“我们都是初级开发人员”的样子会令人沮丧,听起来像是面对面对知识实际缺口的学习者的空谈。像我这样的好心修炼者的坦白告白无法弥补。

但是,即使是经验丰富的工程师也存在许多知识空白。这篇文章是关于我的,我鼓励那些负担得起类似漏洞的人分享自己的观点。但是,我们不要在这样做的同时贬低我们的经验。

我们可以承认我们的知识鸿沟,有可能或没有感觉像是冒名顶替者,并且仍然拥有非常宝贵的专业知识,需要多年的努力才能发展。

有了这个免责声明,以下是我不知道的几件事:

Unix命令和Bash。我可以ls和cd,但我会查找其他所有内容。我有管道的概念,但仅在简单的情况下使用过。我不知道如何使用xargs创建复杂的链,或者如何撰写和重定向不同的输出流。我也从来没有适当地学习过Bash,所以我只能编写非常简单的(通常是错误的)shell脚本。

低级语言。据了解,Assembly可让您将内容存储在内存中并在代码中跳转,仅此而已。我写了几行C语言,并了解了什么是指针,但是我不知道如何使用malloc或其他手动内存管理技术。从未玩过Rust。

网络堆栈。我知道计算机具有IP地址,而DNS是我们解析主机名的方式。我知道有TCP / IP等低级协议可以交换可确保完整性的数据包。就是这样-我对细节一无所知。

容器。我不知道如何使用Docker或Kubernetes。 (是否相关?)我有一个模糊的想法,他们可以让我以可预测的方式启动独立的VM。听起来不错,但我还没有尝试过。

无服务器。听起来也很酷。从未尝试过。我不清楚该模型如何更改后端编程(如果有的话)。

微服务。如果我理解正确,那仅表示“许多API端点相互通信”。我不知道这种方法的实际优势或劣势是什么,因为我没有使用它。

蟒蛇。我为此感到难过–我曾经在Python上工作了几年,但从没有真正去学习它。有很多事情,例如导入行为,对我来说是完全不透明的。

节点后端。我了解如何运行Node,使用了诸如fs之类的一些API来构建工具,并且可以设置Express。但是我从来没有从Node谈论数据库,也不真正知道如何在其中编写后端。除了“ hello world”之外,我还不熟悉诸如Next之类的React框架。

本机平台。我曾尝试过学习Objective C,但没有成功。我也没学过Swift。 Java也一样。 (尽管自从使用C#以来,我可能可以捡起它。)

算法。您最能从我这里得到的好处是气泡排序,也许在美好的一天也可以快速排序。如果将它们与特定的实际问题联系在一起,我可能可以执行简单的图形遍历任务。我了解O(n)表示法,但我的理解并不比“不要在循环中放入循环”更深刻。

功能语言。除非您使用JavaScript,否则我不会流利使用任何传统的功能语言。 (我只精通C#和JavaScript,并且我已经忘记了大部分C#。)我很难阅读LISP风格(如Clojure),Haskell风格(如Elm)或ML风格(如OCaml)的代码。 。

功能术语。就我而言,映射和缩小。我不知道Monoid,函子等。我知道Monad是什么,但这也许只是一种幻想。

CSS方法论。我使用了BEM(意味着CSS部分,而不是原始的BEM),但这就是我所知道的。我没有尝试过OOCSS或其他方法。

CORS。我怕这些错误!我知道我需要设置一些标头来修复它们,但过去我在这里浪费了数小时。

HTTPS / SSL。永远不要设置它。除了私钥和公钥之外,还不知道它是如何工作的。

GraphQL。我可以阅读查询,但我真的不知道如何用节点和边来表达内容,何时使用片段以及分页在那儿如何工作。

插座。我的思维模式是让计算机在请求/响应模式之外彼此对话,但这就是我所知道的。

流。除了Rx Observables之外,我还没有紧密合作。我使用旧的Node流一到两次,但总是搞砸错误处理。

TypeScript。我了解类型的概念,可以阅读注释,但是我从未写过。几次尝试,我遇到了困难。

部署和开发。我可以设法通过FTP发送一些文件或终止某些进程,但这是我的devops技能的极限。

图形。无论是画布,SVG,WebGL还是低级图形,我都无法发挥作用。我掌握了总体思路,但是我需要学习原始知识。

当然,此列表并不详尽。我不知道很多事情。

讨论似乎很奇怪。写它甚至感觉不对。我是在夸我的无知吗?我从这篇文章中获得的预期是:

我知道我的知识差距(至少其中一些)。如果我感到好奇或需要一个项目,我可以在以后填写。

这不会降低我的知识和经验。我可以做很多事情。例如,在需要时学习技术。