前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >想成为杰出的软件工程师?别再只纠结于语法了!

想成为杰出的软件工程师?别再只纠结于语法了!

作者头像
大数据文摘
发布2020-05-06 11:00:01
5180
发布2020-05-06 11:00:01
举报
文章被收录于专栏:大数据文摘

当你搬到一个新城市,不知道最近的便利店在哪。你不会因此自责——毕竟这很正常。你只要打开手机地图就能找到它。等你去过几次以后,很可能就不用借助地图了。

其他地方也是一样,比如最近的餐厅或者健身房——刚开始你可能要用地图导航,等你熟悉了它们的位置就不需要导航了。

你知道怎么找到它们,但你并没有刻意去记每一条马路、每一条可行的路线。还有些地方你去了一次就没再去了。

当你使用一门编程语言调用各种语法时也是一样的。

新的程序员/软件工程师/开发者可能因为没记住足够的语法而感觉很糟。他们发现自己仍要参考文档,于是觉得自己不是一个好的开发者。

以下是他们开始编程之旅时可能有的几个常见问题:

  • 我如何才能学会所有这些语法?
  • 我要多久能掌握这门语言,然后就不用参考文档来写程序?

当能记住一些常用语法时,他们可能觉得自己已经成了编程高手。在他们的印象里,能记住多少语法,或者能掌握多少不同的编程语言和框架,就是真正重要的事。

为了说明问题,我们来比较一下不同的编程语言是怎么获取字符串长度的:

seq.length -- JavaScript lists, Java arrays.

seq.size() --- Java sequences,jQuery expressions (deprecated).

len(seq) -- Python.

seq.count() -- Django querysets.

SeqType'Length -- Ada arrays.

length seq -- Haskell.

(count seq) -- Clojure.

sizeof(seq)/sizeof(seq[0]) – C,statically allocated.

strlen(seq) --C, null-terminated.

如你所见,为了获取字符串长度,每一种语言或技术都有自己的语法。这说明,同时记住某个函数的12种版本真的很难。

一个使用过多种编程语言的开发者,不太可能把过去用过的所有语法都背下来。他们甚至可能本来都懒得去学。

语法有那么重要,以至于我必须记住吗?

为了回答这个问题,我们来看看一些资深工程师是怎么说的。

“我是谷歌的团队主管,有超过30年编程经验,但是我仍然需要去查怎么得到一个Python字符串的长度。”——Tim Dierks

“我写了将近8年的Objective-C,仍然需要用谷歌去查objc的block语法。”——Lukas

“我是将Node.js部署在商用飞机上的人。然而我现在还是不懂.substr()和.substring()的区别。甚至写这句话的时候我还得查一下‘substring’的大小写规范是啥样。”——JP

“我是Phunware的安卓主管。不借助StackOverflow我就没法去读一个输入流。”——Jon

“我是纽约时报的GDE工程师,也是主管,我不懂什么是np。我应该懂吗?”——Mike

“在12年的JavaScript开发中,我总是被substr()和substring()弄糊涂,总是需要到网上来确认。”——Faisal

“我写了6年JS,我仍然需要去查不用fetch或者jQuery的话怎么做AJAX请求。”——Dominik

“我从1979年就开始码代码了,我仍然得查java.lang.String的用法,一直如此!”——Tim Bray

“我写了255行代码,其中包括一个可以运行的服务器和一个客户端。我在谷歌上查询了23次,大多数时候被引到StackOverflow、Netty 4 网站、GitHub和JavaDocs上。你算一下,平均每10行代码就有1次查询!“——Umer Mansoor

“假如我告诉你我用谷歌查什么,你一定会把这当成‘证据’,证明我不是‘真正的’工程师。”——Erica

“我经常把O(n)以及诸如此类的东西混在一起。尽管我能写出一个for循环,谷歌也用得很溜。”——Scott

这些坦诚的话应该能给你勇气——你不必为记不住每一个语法细节而感到羞愧。

可能很多初级开发者都担心这点。但事实是,你真的不需要记住所有的东西。

甚至技术招聘人员也不关心这些。下面是谷歌的那位工程师主管对此的回应:

问:“假如我又要被谷歌面试一次,我能要求编程面试搞成开卷,好让我得以通过吗?“ 答:“我经常告诉应聘者们,我并不在乎任何IDE可以帮助你完成的事情。”

下面的引述来自Hacker News网站,是对“有经验的程序员会经常用谷歌吗?”话题的评论:

我不光经常用谷歌,我甚至用它来搜我自己过去写的东西。好多次我搜一个编程时遇到的疑难,结果在Stack Overflow上找到了我自己写的回答。如果这个回答特别古老,以至于我已经完全忘记了,我甚至会想,“哇,这个天才讲起话来跟我很像!”又或者“这个笨蛋根本不知道他在说什么!”。

几个月前,我在Facebook的一个群里看到一个资深开发者的帖子,里面提到当招聘人员问他有没有某项技术的经验,而他并没有时,他回应道:“那不过是又一种工具。”

意思是说,我过去可能没有机会用到它,但我有信心能学会。我不需要花上几个月才能用它工作。我可能只需要几个小时来读文档,然后边干边学更多,而不是先把所有的东西背下来。

这就好像当你启程前往目的地时,你不会指望一路绿灯。你会通过当前的绿灯,然后在碰到红灯时停下来,等到绿灯亮了再继续行驶。

今天,我们不断有新的编程语言、新的框架,已有的语言和框架也会有相当大的改动,这样一来,记住语法不但是困难的,而且也没那么重要了。正如一位评论者在这篇博文下方精辟地指出的:

“杰出的工程师懂得如何提出好的Queries。然而,面试官们期待的却是行走的活字典。"

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据文摘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档