原文地址哈:https://overreacted.io/things-i-dont-know-as-of-2018/

人们常常假设我知道的知识远比实际知识道的多。我不抱怨这个错误的想法。(拥有些许成就的少数群体的人们往往遭受外人遐想的偏见,尽管成就来之不易,但这很糟糕。)

在这篇文章里,我将提供一个不完整的编程主题列表,人们经常错误地假设我知道这些知识。我不是说你不需要学习它们 (或者我不知道其他有用的东西。)但由于我现在技术圈自己并不处于弱势地位,所以我可以坦诚的谈论这个话题。

这是我为什么认为这个话题重要的原因。

首先,存在一个不切实际的期望既:经验丰富的工程师通常会了解他们所在领域的每项技术。您有没有曾经看过一个由100个库和工具组成的“学习路线图”?也许它很有用 -却令人望而生畏。

更重要的是,无论你获得多少经验,很多时候你仍然到自己在,能力不足(“冒名顶替综合症”)和过度自信(“Dunning-Kruger效应”)之间切换。这取决于您的环境,工作,个性,队友,精神状态,在一天中的时间段等。

经验丰富的开发人员有时会忽略他们的不安全感,以鼓励初学者。但是,一个经验丰富的外科医生仍然会感到紧张,当他的学生拿着他们的第一把手术刀!

听到“我们都是初级开发人员”也许会令人沮丧,像是在对有着实际知识差距的初学者空谈。即便由我出于善意提起这个出发点,也不好合理化解释。

尽管如此,即使是经验丰富的工程师也存在知识差距许,不过这篇文章是关于我的,我鼓励那些能够承受类似漏洞的人分享他们自己的想法。但是,在我们分析自己的知识过程中,不要贬低我们的经验。

我们可以承认我们的知识差距,可能会让自己看起来像冒名顶了别人,这些差距需要多年努力学习获得的专业知识。

有了这个免责声明,这里是我不知道的事情:

  • Unix commands and Bash. I can ls and cd but I look up everything else. I get the concept of piping but I’ve only used it in simple cases. I don’t know how to use xargs to create complex chains, or how to compose and redirect different output streams. I also never properly learned Bash so I can only write very simple (and often buggy) shell scripts.

  • Low-level languages. I understand Assembly lets you store things in memory and jump around the code but that’s about it. I wrote a few lines of C and understand what a pointer is, but I don’t know how to use malloc or other manual memory management techniques. Never played with Rust.

  • Networking stack. I know computers have IP addresses, and DNS is how we resolve hostnames. I know there’s low level protocols like TCP/IP to exchange packets that (maybe?) ensure integrity. That’s it — I’m fuzzy on details.

  • Containers. I have no idea about how to use Docker or Kubernetes. (Are those related?) I have a vague idea that they let me spin up a separate VM in a predictable way. Sounds cool but I haven’t tried it.

  • Serverless. Also sounds cool. Never tried it. I don’t have a clear idea of how that model changes backend programming (if it does at all).

  • Microservices. If I understand correctly, this just means “many API endpoints talking to each other”. I don’t know what are the practical advantages or downsides of this approach because I haven’t worked with it.

  • Python. I feel bad about this one — I

    have

    worked with Python for several years at some point and I’ve never bothered to actually learn it. There are many things there like import behavior that are completely opaque to me.

  • Node backends. I understand how to run Node, used some APIs like fs for build tooling, and can set up Express. But I’ve never talked from Node to a database and don’t really know how to write a backend in it. I’m also not familiar with React frameworks like Next beyond a “hello world”.

  • Native platforms. I tried learning Objective C at some point but it didn’t work out. I haven’t learned Swift either. Same about Java. (I could probably pick it up though since I worked with C#.)

  • Algorithms. The most you’ll get out of me is bubble sort and maybe quicksort on a good day. I can probably do simple graph traversing tasks if they’re tied to a particular practical problem. I understand the O(n) notation but my understanding isn’t much deeper than “don’t put loops inside loops”.

  • Functional languages. Unless you count JavaScript, I’m not fluent in any traditionally functional language. (I’m only fluent in C# and JavaScript — and I already forgot most of C#.) I struggle to read either LISP-inspired (like Clojure), Haskell-inspired (like Elm), or ML-inspired (like OCaml) code.

  • Functional terminology. Map and reduce is as far as I go. I don’t know monoids, functors, etc. I know what a monad is but maybe that’s an illusion.

  • Modern CSS. I don’t know Flexbox or Grid. Floats are my jam.

  • CSS Methodologies. I used BEM (meaning the CSS part, not the original BEM) but that’s all I know. I haven’t tried OOCSS or other methodologies.

  • SCSS / Sass. Never got to learn them.

  • CORS. I dread these errors! I know I need to set up some headers to fix them but I’ve wasted hours here in the past.

  • HTTPS / SSL. Never set it up. Don’t know how it works beyond the idea of private and public keys.

  • GraphQL. I can read a query but I don’t really know how to express stuff with nodes and edges, when to use fragments, and how pagination works there.

  • Sockets. My mental model is they let computers talk to each other outside the request/response model but that’s about all I know.

  • Streams. Aside from Rx Observables, I haven’t worked with streams closely. I used old Node streams one or two times but always messed up error handling.

  • Electron. Never tried it.

  • TypeScript. I understand the concept of types and can read annotations but I’ve never written it. The few times I tried, I ran into difficulties.

  • Deployment and devops. I can manage to send some files over FTP or kill some processes but that’s the limit of my devops skills.

  • Graphics. Whether it’s canvas, SVG, WebGL or low-level graphics, I’m not productive in it. I get the overall idea but I’d need to learn the primitives.

Of course this list is not exhaustive. There are many things that I don’t know.

It might seem like a strange thing to discuss. It even feels wrong to write it. Am I boasting of my ignorance? My intended takeaway from this post is that:

  • Even your favorite developers may not know many things that you know.

  • Regardless of your knowledge level, your confidence can vary greatly.

  • Experienced developers have valuable expertise despite knowledge gaps.

我知道我的知识差距(至少,其中一些)。 如果我变得好奇或者我需要它们用于项目,我可以在以后填写它们。 这不会使我的知识和经验贬值。 我可以做很多事情。 例如,在我需要时学习技术。

自2018年以来我不知道的事情-Dan Abramov相关推荐

  1. 读书 | 5件富人都在做穷人却不知道的事情

    作者 | 杨小爱 习惯,就是我们长期以来养成的行为方式,这是美国作家托马斯科里在<富有的习惯>一书中对习惯的定义. 而我对习惯的理解就是,习惯就好像我们每天起床后会自然而然的去洗脸刷牙一样 ...

  2. JavaScript 日期操作我不知道的事情

    平时对 Date 很多内容都一知半解,每次一用到 Date 就需要查资料,着实恼火. 故此文记录关于 JS 日期操作那些我不知道的事. 基础问题 Date.prototype.getTime() 返回 ...

  3. 要想步入程序开发行列,就不得不知道的事情汇总

    前言 当迈入程序开发行列之后,就意味着从此与程序开发"相依为命".不管你已经迈入程序开发行列,还是即将迈入,一些做程序开发必知内容是需要提前知道的.尤其是打算做程序开发的大学生朋友 ...

  4. 你的QQ号又被盗了?关于网络安全你所不知道的事情

    不知道大家是否有这样一个经历: 就是大家的qq好像被别人登录了一样,群发给朋友,向朋友借钱的消息,有些身边的朋友还被骗取了大量的金额,别人又是如何知道自己的密码的呢? 现在都0202年了,想说的是QQ ...

  5. CE6 驱动: 你不得不知道的事情

    许多人担心CE6驱动的向后兼容性.在CE6上,应用程序和OAL可以比较良好的兼容,但驱动就比较难.驱动在移植到CE6上必须做一定的修改,原封不动的放到CE6上运行是不太可能的. 驱动需要修改的主要原因 ...

  6. 祝贺!屠呦呦再获国际大奖!一文读懂:神药青蒿素那些我们不知道的事

    又有好消息传来!总部位于法国巴黎的联合国教科文组织10月22日公布2019年度联合国教科文组织-赤道几内亚国际生命科学研究奖获奖名单,共3人获奖,其中包括来自中国的屠呦呦. 此前,屠呦呦先后拿下多项大 ...

  7. 关于多线程编程您不知道的 5 件事 有关高性能线程处理的微妙之处

    虽然很少有 Java™ 开发人员能够忽视多线程编程和支持它的 Java 平台库,更少有人有时间深入研究线程.相反地,我们临时学习线程,在需要时向我们的工具箱添加新的技巧和技术.以这种方式构建和运行适当 ...

  8. 关于PHP你可能不知道的10件事

    小编之前也曾报导过PHP开发人员容易忽略的几点精华,除了一些精华技术方法外,很多细微之处也是程序员们容易忽略的,下面我们为您总结了10个关于PHP你可能不知道的事情. 关于PHP更多内容,欢迎访问:P ...

  9. Vue.js 父子组件通信的十种方式;告诉世界前端也能做 AI;你可能不知道的14个JavaScript调试技巧...

    记得点击文章末尾的"阅读原文"查看哟~ 下面先一起看下本周的摘要吧~ 想了解老用户如何参与阿里云双十一1折拼团特惠主机的,可以看第二条推送,文中提供了两种方法~,一起看看本周有哪些 ...

最新文章

  1. 004:STM32启动文件详解及SystemInit函数分析(转)
  2. python寻找相似用户_Python 寻找相近的用户
  3. linux shell 判断文件 修改时间和系统时间差
  4. A Neural Algorithm of Artistic Style
  5. expandableListView 总结
  6. Java第十次作业--多线程
  7. 开源播放器 Banshee 发布 1.0 beta 2
  8. 在容器里设置GOMAXPROCS的正确姿势
  9. v-for列表渲染之数组变动检测
  10. Hbuilder 移动app
  11. 拓端tecdat|R语言ggsurvplot绘制生存曲线报错 : object of type ‘symbol‘ is not subsettable
  12. Linux实验一:安装配置Vmware-Linux实验环境
  13. Ruby On Rails简介
  14. javascript重定向的方法和区别
  15. 人工神经网络评价法案例_人工神经网络评价法.
  16. 计算机专业就业方向总结(选择也许更重要)
  17. 一张纸厚度是多少毫米_一张a4纸的厚度是多少mm
  18. 租房需要注意些什么?
  19. python的socket
  20. 小学数学解题思维窍门

热门文章

  1. android教程登陆,【教程】Android 记住密码和自动登录界面的实现
  2. mysql 业务账户_mysql的事务
  3. python手机app 授权登录_Appium+unittest+python登录app
  4. 关于文件格式和编码方式,乱码产生的原因?
  5. tomcat 并发数已满_记一次天猫商城系统高并发的优化
  6. VMware vCenter Converter Standlone迁移手册
  7. java list 替换 多线程_Java多线程处理List数据
  8. win服务器上文件消失,Winserver 2012服务器关机,升级内存后,Hyper-V的硬盘文件(.vhdx)莫名消失...
  9. linux 查看java最大内存配置,Linux和Windows下的内存设置
  10. kali linux 里vim如何使用_Kali Linux的vi编辑器/vim编辑器使用方法