[译]如果你想成为一个高级开发者,请不要再关注语法

890 阅读4分钟

成为一个优秀的工程师远比语法重要

原文连接

当你搬到一个新的城市的时候,你并不知道最近的杂货铺在哪。

但这并不会打击到你:因为这很正常,你只需要 Google Maps 一下就可以找到最近的杂货铺了。

经过一段时间之后,你很有可能就不再需要Google Maps 来找到最近的杂货铺了。

同理,对于其他的地方:最近的餐馆、最近的体育馆等,你第一次去的时候你可能需要 Google Maps ,但是当你能够找到方位之后你可能就不再需要 Google Maps 了。

你知道他们的的位置可能不是因为你尝试去把他们的具体位置记住,你可能只是知道他们的大致位置而已。

尽管你可能只是去过一次。

同理,找到你在编程的时候需要的一些具体方法,可能与找到最近的杂货店一样。

对于一些编程新手来说,他们再最开始学习编程的时候可能感觉很糟糕:他们需要花很多功夫来记忆海量的编程语法却还是需要去翻阅文档,他们可能会觉得,翻阅手册是一件非常不好的事情:因为这代表你不是一个好的开发者。

下面这两个问题是很多新人在学习编程的时候回提出来的:

  • 我需要花多长时间来学完所有的语法。

  • 我需要多长时间才能完全记住这些语法,在开发的时候完全不需要翻阅手册。

当他们可以熟练默写出所有语法关键词的时候,他们觉得已经变成一个编程高手了。

他们会产生一种观点:能记住尽量多的语言和框架是非常重要的。

为了更加透彻的看待问题,我们来对比一下在不同语言中获取一个字符串长度的语法:

  • seq.length , JavaScript lists,Java arrays

  • seq.size(),Java sequences,jQuery (已废弃)

  • len(seq) ,python

  • seq.count(),Django

  • seqTye'Length,Ada array

  • length seq,Haskell

  • (count seq),Clojure

  • sizeof(seq)/sizeof(seq[0]) C

  • strlen(seq) C

如你所见,不同的语言和技术有他自己的字符串求长度的函数,能记住同一个函数在12个不同的技术中的实现还是有一些困难的。

对于那些使用多种编程语言的人来说,记住他们使用过的所有语法是不现实的,有些语法他们甚至可能都没有尝试学习过。

(原文这部分是各种FLAG大佬自爆集锦,有兴趣的同学可以看下原文)

上面这些自爆可能会给与你勇气——你并不需要为你记不住语法的细而感到羞愧。

尽管看不懂语法这种事情是很多初级开发者会关注的事情,但真相是:你并不需要记住所有东西。

不止技术招聘不会关心这些,下面是一名谷歌的工程师对此的反应:

(原文此处是推特的连接,一位谷歌的大佬说他经常会告诉面试者他对于 IDE 会提示的东西并不感兴趣。)

下面是在 HackNews 评论区的一个回复:

"我不仅谷歌用的非常好,我还经常谷歌到我以前写的东西,我已经不知道多少次谷歌到我自己在stackOverflow上写的东西了,很多时候是一些我都忘了的旧回答,有时候我看到这些回答会想:'这个人就像我一样是个天才'有的时候也会觉得'这个傻*对自己说的东西根本不了解!'"

几个月前,我从 FaceBook 群看到一个高级工程师提到:当面试官问他是否有某个他并没有掌握的技术栈的经验的时候,他回答:"这不过是另外一种工具罢了。"

这意味着他之前没有用过这个技术工作过,但是他有有学习这项技术的自信。

这意味着他不需要花费几个月的时间来学习这些技术,只需要几个小时来读一下文档,然后开始使用它,而不需要记住所有东西。

当你开始旅行的时候,你并不能指望你的旅途一帆风顺。你总会通过绿灯,并且在红灯前等待一段时间,直到红灯变成绿色。

现代社会,新的技术和框架层出不穷,旧的框架和技术也退出了很多更新,因此,记住所有的语法是有一定难度以及非常不重要的。就像一个评论所说:

“优秀的工程师知道如何提正确的问题,而普通的面试官只希望得到一个行走的词典”