大家总以为我懂得许多东西,而实际情况并不是这样的。我不是在抱怨什么,这也不是什么坏事。
在这篇文章中,我将列出一份大家经常误以为我很了解的编程主题列表。 并不是说你不必学习它们 - 或者我不了解其他有用的东西。 但由于我现在的立场并不弱,所以我可以说实话。
以下是我不知道的一些东西:
Unix 命令 和Bash。我记得 ls 和 cd,但其他命令我也得查了才会用。我理解管道(pipe)的概念,但我只在简单的场景下使用它。我不知道如何使用xargs 创建复杂的链(chain),如何组合并重定向不同的输出流。我也从来没有系统地学习过 Bash,所以我只能编写非常简单(通常是错误的)shell 脚本。
低级语言。我知道 Assembly 能将内容存储在内存中并跳转执行代码,但我了解的仅此而已。我写过几行 C,明白指针是什么,但我不知道如何使用 malloc 或其他手动内存管理技术。从来没玩过 Rust。
网络堆栈。我知道计算机有 IP 地址,DNS 是我们解析主机名的方式。我知道有像 TCP/IP 这样的低级协议来交换数据包(可能?)以确保完整性。我就知道这么多 - 并且对细节认识比较模糊。
容器。我不知道如何使用 Docker 或 Kubernetes。 (它们有关系吗?)我对它们一个模糊的认知,知道它们能让我以可预测的方式启动一个单独的 VM。听起来很酷,但我还没试过。
Serverless。听起来也很酷,但没试过。我不是很明白该模型如何改变了后端编程(也许它并没有)。
微服务。如果我理解没错的话,它只是意味着“许多 API endpoint 相互通信”。我不知道这种方法的实际优缺点是什么,因为我没用过。
Python。我不是很喜欢它- 我已经用 Python 工作了好多年,而且我从来没有费心力去学它。它的导入行为等很多东西对我来说是完全的黑盒。
Node 后端。我知道如何运行 Node,使用像 fs 这样的 API 来构建工具,并且能使用 Express。但我从来没有用 Node 连接过数据库,也不知道如何用它编写后端。我也不熟悉像 Next 这样能实现“hello world”的 React 框架。
Native平台。我曾尝试学过 Objective C 但是没有成功。我也没有学过 Swift,Java 也是如此。(虽然我可以学习Java,因为我会C#,但是我并没有学Java。)
算法。我会的最多就只有冒泡排序以及快排了。如果它们与特定的实际问题联系在一起,我能进行简单的图形遍历。我理解 O(n) 符号,但我的理解并不比“不要在循环中嵌套循环”深刻多少。
函数式语言。除非算上 JavaScript,否则我不会流畅的使用任何传统函数式语言。 (我只精通 C# 和 JavaScript - C# 的知识我差不多都忘了)。阅读 LISP 风格(如 Clojure),Haskell 风格(如 Elm)或 ML 风格(如 OCaml)的代码也让我觉得吃力。
函数术语。就我而言,Map 和 reduce 是最重要的。我不了解 monoids,functors 等。我知道 monad 是什么(但也许是我的幻觉吧)。
现代 CSS。我不了解 Flexbox 或 Grid。Floats 才是我的菜。
CSS 方法论。我用过 BEM(意思是 CSS 部分,而不是原始的 BEM),但我就知道这么多了。我没有尝试过 OOCSS 或其他方法。
SCSS/Sass。从来没有学过。
CORS。我超怕这些错误!我知道得设置一些首部字段(header)来修复它们,但过去我浪费了几个小时做这事情。
HTTPS/SSL。从未设置过。不知道它如何使用私钥和公钥工作。
GraphQL。我会使用 query,但我真的不知道如何使用 node 和 edge 等表达,何时使用 fragment,以及分页的原理。
Sockets。我的心智模型是他们实现了计算机在请求/响应模型(request/response model)之外互联,但我就知道这么多。
Streams。除了 Rx Observables 之外,我还没有密切关注过 stream。我使用一两次旧的 node 流,但总是搞乱错误处理。
Electron。没试过。
TypeScript。我理解类型的概念,可以阅读注释,但从来没有写过它。我试过几次,遇到了困难。
部署和开发。我可以通过 FTP 发送文件或杀死进程,但我的 devops 技能仅限于此。
图形。无论是 canvas,SVG,WebGL 还是低级图形,我都没有高效使用过。我了解整体想法,但需要学习原语。
当然,这份清单并非详尽无遗。 我还有很多事情都不知道。
那么这些都不会的人是谁呢?
他就是Dan Abramov
Redux的作者!
其实这篇文章主要是想说:
即使是你最喜欢的开发者也可能不知道很多你知道的东西。
无论你的知识水平如何,不同时期你的信心都会有很大差异。
尽管存在知识缺口,但经验丰富的开发者术业有专攻。
最重要的是知道自己的知识缺口,如果对某个技术感到好奇,或者项目需要用到,那么之后再可以学习它也不迟。
网友评论说:
读完这篇文章,你觉得自己掌握了哪些前端知识,又有哪些不会呢?在下面留言吧
领取专属 10元无门槛券
私享最新 技术干货