原文作者:Dan Abramov

译者:UC 国际研发 Jothy

写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。

编者按:今天这篇文章是 React 团队成员、Redux 作者 Dan Abramov 新编写的一篇文章,这篇文章非常不错。在 2019 到来之际,谨以此文祝大家元旦快乐!

大家总以为我懂得许多东西,而实际情况并不是这样的。我不是在抱怨什么,这也不是什么坏事。 (尽管少数派有来之不易的证据,但他们总是受到偏见,这就比较恶心了。)

在这篇文章中,我将列出一份大家经常误以为我很了解的编程主题列表。 并不是说你不必学习它们 - 或者我不了解其他有用的东西。 但由于我现在的立场并不弱,所以我可以说实话。

以下是我认为这很重要的原因。


首先,有个不现实的期望认为,经验丰富的工程师就该了解所在领域的每一项技术。你应该见过囊括了 100 个库和工具的“学习路线图”吧?它很有用 - 但令人望而却步。

更有甚者,无论你经验多丰富,你的情绪还是可能会在感觉良好、信心不足(“冒名顶替综合症(Impostor syndrome)”)和过度自信(“Dunning-Kruger 效应”)之间切换。这取决于你所处的环境,工作,个性,队友,精神状态,在上面时间等等因素。

老练的开发者有时会公开表示他们的不安全感,以鼓励初学者。但其实二者有天壤之别,就像一个经验丰富但仍会紧张的外科医生,和一个第一次拿手术刀的学生!

听见别人说“我们都是初级开发者”挺丧的,就像是对着与你有知识差距的学习者空谈。像我这样善意的从业者并不能用多好的口述解决这个问题。

尽管如此,即使是经验丰富的工程师也存在许多知识缺口。这篇文章写了我的知识缺口,我鼓励那些能够承受类似漏洞的人分享他们的。但分享的时候,记住不要低估我们的价值。

我们可以大方承认我们的知识缺口,但也要记得我们仍然拥有宝贵的专业知识,需要多年努力积累。


先说好免责声明,以下是我不知道的一些东西:

  • 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 还是低级图形,我都没有高效使用过。我了解整体想法,但需要学习原语。

当然,这份清单并非详尽无遗。 我还有很多事情都不知道。


讨论可能看起来很奇怪,甚至这篇文章都写得有问题。 我吹嘘自己的无知吗?我的意图是:

  • 即使是你最喜欢的开发者也可能不知道很多你知道的东西。
  • 无论你的知识水平如何,不同时期你的信心都会有很大差异。
  • 尽管存在知识缺口,但经验丰富的开发者术业有专攻。

我知道我的知识缺口(至少是一部分)。 如果我对某个技术感到好奇,或者项目需要用到,我之后可以学习它。

这不会使我的知识和经验贬值。 我可以做很多事情。 例如,在需要的时候再去学它。

英文原文

好文推荐:

Why review code?


“UC国际技术”致力于与你共享高质量的技术文章

欢迎关注我们的公众号、将文章分享给你的好友

你说你学不动啦,看 Redux 作者怎么说?相关推荐

  1. 学不动的前端人,该如何跟上前端技术的发展

    总有前端同学问我,前端技术更新太快,学不动了啊,有什么好办法? 说实话,除了学,还真没啥办法. 回看2018年,微信小程序就不说了.支付宝小程序.百度小程序还来凑热闹.React Native.Flu ...

  2. 再见,前端!别更新了,我是学不动了

    01.前端饱和了? 随便打开一个招聘网站,以"前端"为关键字进行搜索,都会看到很多的招聘信息,而且薪资都很高. 据国内权威数据统计,未来五年,我国信息化人才总需求量高达 1500万 ...

  3. 前端学不动了怎么办?3年,5年,10年,都需要规划!

    前端学不动的根本原因是目标感不强或者根本就没有目标.在学习前端之前,我们需要先思考我们要成为一个什么样前端工程师.接下来我们以时间线的方式,来告诉我们什么时间该做什么事儿.本文以普通人为例,也是想给普 ...

  4. 我用python10年后,我发现学python必看这三本书!

    非常喜欢python 我非常喜欢python,在前面5年里,它一直是我热衷使用并不断研究的语言,迄今为止,python都非常友好并且易于学习! 它几乎可以做任何事,从简单的脚本创建.web,到数据可视 ...

  5. 我用python10年后,我发现学python必看这三本书! 1

    非常喜欢python 我非常喜欢python,在前面5年里,它一直是我热衷使用并不断研究的语言,迄今为止,python都非常友好并且易于学习! 它几乎可以做任何事,从简单的脚本创建.web,到数据可视 ...

  6. java图片不动了_JDK 12又来了,我学不动了...

    原标题:JDK 12又来了,我学不动了... 写在前面 看到 JDK 12又发布了,萌新不知不觉感觉瑟瑟发抖,从 Java 1.8的函数式编程思维和范式 到 Java 1.9的模块化特性的加持 以及还 ...

  7. 学Java可以看哪些书?6本Java书籍推荐

    学Java有哪些推荐书籍可以看?很多人都会有这样的疑问.今天,小千整理了一些Java经典书籍,分享给大家. 如果你初出茅庐,对Java感兴趣,想要学Java,在这行深钻研,那么这些书绝对不能少.如果你 ...

  8. 开课吧学python靠谱吗-学设计?学Python?看看我的人生是如何开挂!!!

    原标题:学设计?学Python?看看我的人生是如何开挂!!! 最近有一位同学准备实习开始找工作,来跟小编交流他目前找工作遇到的一些情况: "我被找工作弄得满头包,觉得好像自己学的专业很没有市 ...

  9. 运维学python用不上_作为运维你还在想要不要学Python,看完这篇文章再说!

    原标题:作为运维你还在想要不要学Python,看完这篇文章再说! 本文由马哥教育Python自动化实战班5期学员推荐,转载自简书,作者为Li.Yingjie,内容略经小编改编和加工,观点跟作者无关,最 ...

最新文章

  1. python编程100例画图-Python练习实例56 | 画图,学用circle画圆形
  2. hdu 3721 树的最小直径
  3. Guava中针对集合的 filter和过滤功能
  4. 定时覆盖库_高考直通车公众号 联考题库大全
  5. How to download BOM from ERP to CRM
  6. 笔记本电脑怎么清理灰尘_手机声音越用越小怎么办?一段黑科技音波就能清理扬声器灰尘...
  7. java反射main方法参数注意
  8. java 私有变量访问_Java - 访问私有实例变量
  9. 一个程序员的逗逼瞬间(二)
  10. Docker入门与实战
  11. php要懂函数吗,九个你需要知道的PHP函数和功能
  12. java 反应堆模式_Netty中的三种Reactor(反应堆)
  13. swagger OAuth认证
  14. C#判断一个string是否为数字 --zt
  15. cpu烤机温度测试软件,ATX2.0与ATX3.0机箱烤机温度对比测试,竖装显卡真的会把风挡死...
  16. Cocos2d-x 着色器
  17. FPGA Verilog进阶开发教程:WM8978音频回环实验
  18. RecyclerView(侧滑删除)和下载文件
  19. [A001]兄弟连3天学会php
  20. Linux学习之socket编程(一)

热门文章

  1. Python之Fabric
  2. 快意报表存储过程标准写法
  3. pcb中几个层的解释
  4. Android 布局文件Graphical Layout不显示预览
  5. 写给将要参加软考的朋友们
  6. Qt 连接达梦数据库
  7. 在linux下安装配置svn独立服务器
  8. 03、NavMesh--导航网格寻路
  9. [MySQL]增加用户 授权 远程登录
  10. 26个复古风格网站设计欣赏