成为一个优秀的工程师远比语法重要
当你搬到一个新的城市的时候,你并不知道最近的杂货铺在哪。
但这并不会打击到你:因为这很正常,你只需要 Google Maps 一下就可以找到最近的杂货铺了。
经过一段时间之后,你很有可能就不再需要Google Maps 来找到最近的杂货铺了。
同理,对于其他的地方:最近的餐馆、最近的体育馆等,你第一次去的时候你可能需要 Google Maps ,但是当你能够找到方位之后你可能就不再需要 Google Maps 了。
你知道他们的的位置可能不是因为你尝试去把他们的具体位置记住,你可能只是知道他们的大致位置而已。
尽管你可能只是去过一次。
同理,找到你在编程的时候需要的一些具体方法,可能与找到最近的杂货店一样。
对于一些编程新手来说,他们再最开始学习编程的时候可能感觉很糟糕:他们需要花很多功夫来记忆海量的编程语法却还是需要去翻阅文档,他们可能会觉得,翻阅手册是一件非常不好的事情:因为这代表你不是一个好的开发者。
下面这两个问题是很多新人在学习编程的时候回提出来的:
我需要花多长时间来学完所有的语法。
我需要多长时间才能完全记住这些语法,在开发的时候完全不需要翻阅手册。
当他们可以熟练默写出所有语法关键词的时候,他们觉得已经变成一个编程高手了。
他们会产生一种观点:能记住尽量多的语言和框架是非常重要的。
为了更加透彻的看待问题,我们来对比一下在不同语言中获取一个字符串长度的语法:
seq.length, JavaScript lists,Java arraysseq.size(),Java sequences,jQuery (已废弃)len(seq),pythonseq.count(),DjangoseqTye'Length,Ada arraylength seq,Haskell(count seq),Clojuresizeof(seq)/sizeof(seq[0])Cstrlen(seq)C
如你所见,不同的语言和技术有他自己的字符串求长度的函数,能记住同一个函数在12个不同的技术中的实现还是有一些困难的。
对于那些使用多种编程语言的人来说,记住他们使用过的所有语法是不现实的,有些语法他们甚至可能都没有尝试学习过。
(原文这部分是各种FLAG大佬自爆集锦,有兴趣的同学可以看下原文)
上面这些自爆可能会给与你勇气——你并不需要为你记不住语法的细而感到羞愧。
尽管看不懂语法这种事情是很多初级开发者会关注的事情,但真相是:你并不需要记住所有东西。
不止技术招聘不会关心这些,下面是一名谷歌的工程师对此的反应:
(原文此处是推特的连接,一位谷歌的大佬说他经常会告诉面试者他对于 IDE 会提示的东西并不感兴趣。)
下面是在 HackNews 评论区的一个回复:
"我不仅谷歌用的非常好,我还经常谷歌到我以前写的东西,我已经不知道多少次谷歌到我自己在stackOverflow上写的东西了,很多时候是一些我都忘了的旧回答,有时候我看到这些回答会想:'这个人就像我一样是个天才'有的时候也会觉得'这个傻*对自己说的东西根本不了解!'"
几个月前,我从 FaceBook 群看到一个高级工程师提到:当面试官问他是否有某个他并没有掌握的技术栈的经验的时候,他回答:"这不过是另外一种工具罢了。"
这意味着他之前没有用过这个技术工作过,但是他有有学习这项技术的自信。
这意味着他不需要花费几个月的时间来学习这些技术,只需要几个小时来读一下文档,然后开始使用它,而不需要记住所有东西。
当你开始旅行的时候,你并不能指望你的旅途一帆风顺。你总会通过绿灯,并且在红灯前等待一段时间,直到红灯变成绿色。
现代社会,新的技术和框架层出不穷,旧的框架和技术也退出了很多更新,因此,记住所有的语法是有一定难度以及非常不重要的。就像一个评论所说:
“优秀的工程师知道如何提正确的问题,而普通的面试官只希望得到一个行走的词典”