设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

谷歌大牛:编程的肮脏小秘密

2017-9-10 14:24| 发布者: joejoe0332| 查看: 1922| 评论: 0|原作者: 伯乐在线|来自: 伯乐在线

摘要: Steve Yegge 是业界大牛程序员,目前效力于 Google。他有一个博客,常写编程语言、效率和软件文化相关话题文章。在1982年的时候,有一个叫Yeev Staigey 的12岁笨小孩,不过这个人完完全全是人们杜撰的,他在加州天堂 ...

Steve Yegge 是业界大牛程序员,目前效力于 Google。他有一个博客,常写编程语言、效率和软件文化相关话题文章。

“对于说这不是大学所要求的无稽之谈,我说想说一句:‘给我他妈的好好学习打字。’”—— Mr.Pink

这是另外一篇我最想写的文章。老兄,我试过很多次了,但都没什么用。再一次,我无法摆脱对一些事情的强烈看法,这给我阐明自己的观点带来不少困难。

所以,只有一件事可供尝试了,那就是敞开心扉,看究竟能否达到目的。与其墨守成规,这往往让人生厌,不如另辟蹊径,换一种方式。

从前……

好像是在1982年,的确过了很长时间了,这实际上像个童话故事。

在1982年的时候,有一个叫Yeev Staigey 的12岁笨小孩,不过这个人完完全全是人们杜撰的,他在加州天堂市里的天堂高中里忍受着他的高二生活。Yeev直接跳了3年级,7年级和8年级,11岁进入高中,以一种英雄般的巨大胜利,但这也造成了他日后生活社交能力的缺失。

孩子,我可以告诉你所有关于小Yeev在那个年纪的故事。他甚至是落伍的,比你想象的还要可悲。但我们今天的故事是关于Yeev的一些选修课。我也不确定大家把它叫什么,但是在Yeev的学校,你不能一直做像数学、科学、语言和历史等这类无聊的事情。绝对不行!因为Yeev是在美国接受教育,所以他必须选修一些选修课,可以被粗略地定义为“橄榄球教练教授的课程,因为法学院说橄榄球教练不得不除了橄榄球外,还得教授另外一门课。”

这些选修课(你可以选择不上,但这样他们也能选择让你毕不了业)是这样一些课,他们将活力带给了活跃的美国人。他们就像木材店、金属店、汽车店,自然也是那种不惜一切为了满分的人多常年追捧的店。

在我们的故事开始之时,我们可怜的英雄Yeev正透过他巨大的有刮痕的双焦眼镜,凝视着选修课表,试图找到一门不涉及油脂、放电的课,一门任课老师不会为了一个医学学生就尖叫”谁会做止血带,快来帮帮我“的课,以及任何那些大多是数美国人可以在上述“商店”中找到的课。

Yeev 注意到单子上有一门课,很显然是被放错地方了,就是打字课,例如在打字机上。Yeev认为在这些课中,这门课看起来相对无害。可能发生的最糟糕的事无非就是手指被打字机轧了一下,就像闪电击中建筑物,使你大声尖叫,这种尖叫方式就好像是你的裤子突然滑落到膝盖,然后所有人嘲笑你妈妈给你在Mervyn店买的白色{敏感词}。这可能少许尴尬,但在接下来的几年中,没人会想起这事除非他们看见你。

尽管会有潜在的尴尬,打字课绝对比止血店更吸引人。

Yeev检查了下,然后十分确信学校橄榄球教练在教授这门课。真的,想着这将是Yeev在他整个学习生涯中离橄榄球场最近的一次,Yeev决定选择这门课。Yeev那时并不知道,但人们都说教练是最好的老师。要知道,这只是人们说的而已。事实上也有几分真实性。教练不得不凭着像即饥渴的雄山羊的专注度,将大量复杂的信息传递给学生。正如他们所说,这需要十分特殊的技巧。

你曾经是否注意到,在国家橄榄球联赛黄金档期间,前任教练评论员以及他们带领的前任运动员评论员的手通常都十分大而且结实。他们在谈论时会向你挥手,吸引你的注意力。那是因为你的爬行动物脑袋会想,“那家伙要打我。”教练知道如何让你集中注意力,他们知道如何上课。

所以,Yeev很幸运地得到了一位教练老师。但现实并不总那么一帆风顺。从某种意义上来讲,Yeev很不幸生活在1982年,他几乎没有什么与计算机打交道的经验,而且他的学校太落后以至于2008年以前,他的学校都没有一个像样的网站。在1982年,他们付得起一半的电式打字机;剩下的都是老旧的,手动的,靠马拉的那种打字机。

如果Yeev现在来学打字,条件会好很多。现在人们拥有快速的键盘,而且智能程序可以精确地显示你的进度等等。我都有点嫉妒现在那些要学打字的人了,你难道不是吗?但是在1982年,带着眼镜的小Yeev没有软件培训项目,所以他不得不像一位橄榄球教练学习。不过考虑到所有的情况,这已经是十分幸运的了。接下来让我讲讲事情是怎么变得让人失望的……

学习音乐小片段

你之前是否观察过一个专业的音乐家训练?我指那些世界一流的,在中国和俄罗斯剧院受训过的那种音乐家,他们结合了日本机器人的技术以及,额,日本机器人的灵魂。他们练习就像这样:快、慢,中速。快、慢,中速。一遍又一遍。这有点像沟迪洛克斯,你们还记得她对吧,就是那个在童话故事里被熊吃掉的小女孩。不断地选择,直到找到正确的感觉,这就是音乐家练习的方式。

在古典音乐里,音乐家们称有难度的繁杂的乐章为“乐群”。在电子吉他音乐里,他们称之为乐句片段。其实两者十分相同。你想训练你的手指扫过那些乐章就如同柴郡猫在舔它灿烂的笑容。

下面是你训练你手指的方式。你从一篇乐章开始,任何东西都行。最开始只是一个单个的音符,然后是一些音符,一些乐句,最后变成一些旋律。你想要去掌握那些开始让你棘手的东西。

开始的时候,你尽可能快地弹奏这些片段,你并不在意犯错,因为练习这些乐句的目的是为了放松你的手指。你想让它们知道自然的速度是怎样的,就像轻风拂过发丝。接下来,你会尽可能慢地弹奏。在这个阶段,你会使用一些恰当的技巧,实际上意味着你应当尽可能地做到恰如其分,因为艺术的状态技巧在不断地进化着,并且总是有几分个性化。你学习任何规律,它们的技术思想有各种各样的学派。这些东西都没有统一的答案,因为我们的身体的工作方式或多或少的会有不同。你只需要学习你最喜欢的技巧,然后努力掌握它。最终,你可以创造出你自己的技巧。有时候你是被迫的,我在后面会跟你解释的。但是在最开始的时候,你得学习他人努力得来的正确的技巧,在你掌握它们之后,再来决定你是否想要改变它。在你想要以自己独特的方式来改变它们的时候,你需要掌握自己的风格。

形式是自由的。相信这一点,他们是这样说的,而且还言之凿凿。

不论你选择什么样的技巧,在缓慢的学习过程中,你根本不会在乎速度。你在意的是准确性。慢工出细活,熟能生巧。你想要你的手指去体会正确的感觉。你并不会在意是否要花上30秒才弹奏一个音符。做对就行,如果出错了,重头再来,这次更慢点。

最后,你按一定速度训练。如果你在练习一门乐器,你会按既定的速率弹奏。你想让你的手指感受乐感。音乐家通常认为在这个阶段你不想犯错,或者是你恰恰就在以错误的方式练习。但从现实角度来讲,大多数音乐家很可能愿意在第三阶段做出一点小牺牲来保证音乐的优美和流畅。我们称之为一分钟牺牲五次,这就是你的目标。

快,慢,匀速,一遍又一遍,这就是他们练习的方式,并且很有效果。

学习打字

Yeev的橄榄球教练很善于教学。我不知道他是否玩过乐器,但他肯定使用了经典练习法的思想。

Yeev十分认真地上一天一次的课。首先他需要学习打字的基本知识,事实上,并没有多少基础知识。你把你的手放在中间行的固定位置,使你的手腕离开键盘。会有图例告诉你哪个手指该按哪些键。记住这些规则,将每个键都练习几次。想想上幼儿园的时候,当老师让你写字母表时,你会将一行写满A,然后下一行写满B,就像这样。

在一到两天内,你就可以记住键盘格局,然后就可以不看键盘打出任何东西,虽然可能比较慢。仅仅需要一到两天,你就在尝试打字了。在学完基础之后,不出意料地,Yeev班上练习了很久《Typing Football》这个游戏。教练发明了这个游戏,来使学习打字充满乐趣。因为教练十分精明地意识到,并不是班上所有人都记得全国橄榄球联盟规则书和策略书。这个游戏规则涉及到将班级分为两半,然后通过哪一半打字比较好来移动球。Yeev在1982年使用的练习在现在通过软件的使用而做的更好。见鬼,现在人们通过软件让你射杀僵尸来练习打字,这真是太有趣了。

如果有什么技巧学习打字,那就是坚持。Yeev的班上坚持了,连着12周,一周5天,他们都练习打字。他们没有家庭作业,因为学校并没期望他们成为打字员。他们只是来上课,练习《Typing Football》这个游戏,做着快,慢,中等的练习。

当然也有细微的差别。有时候他们自己选择语言来练习字母群,Yeev选的是英语。像“tion”、“the”、“ing”等群组需要被练习的知道他们能毫不费力的打出它们来。有时他们练习的东西里会包含大量标点、数字或奇怪的间距。这些细节并不在我们的故事范围内,它们都被现在的软件所解决了,你会发现这点的。

那么结果如何呢?在学期末,Yeev一分钟打对了60个词,而且他甚至不是班上最好的。这可是45天,每天50分钟的付出,并且充满了乐趣。实际上,随着更好的软件和键盘出现,现在的打字学习可能就是30天,每天30分钟的付出。现在Yeev可以每分钟打120个词。他进大学时还只是每分钟打大约60到65个词,但他决定提高速度,在他遇见了一个叫凯利的同级学生,他通过UNIX上的“talk”软件每分钟能打120个词。在他们较量时,Yeev能够感受到她的不耐烦。他提到了这点,她回应到,“你该看看我在Dvorak键盘上打字时的水平”。Yeev在那时已经深谙社交了,他咬紧牙关,不在打任何东西。但关于Yeev的故事已经足够了,毕竟他是人们虚构的。

你需要学习打字吗?

嗯,你知道你是需要的。这正是你所需要的东西。即便你可以找借口,但你深深明白你需要学习它。打字是我们现在与整个世界互动的方式。让自己不便并没有什么意义。你可能会像其他人一样说,“我并不受限于速度,我把全部时间用来设计,而且它们与编码无关。”我经常听到这样的话。但是你错了,程序员一天到晚都需要打字,即便他们在设计。实际上尤其是他们在设计时,他们更需要打字,因为他们要与其他在外地的参与者交流。

这就是这个行业的无耻的秘密:不按指法打字的程序员就像文盲。

如果你按指法打字,你就会明白我说的文盲。这个十分无耻,人们不会在正规公司谈论肮脏的秘密。文盲就是和躲在工厂地下室的儿童{敏感词}的混蛋。我发誓,人们会感到不舒服谈论这个。我们程序员在Reddit网上表现得很有教养,但是我们不能面对我们自己关于社会文化的最大的肮脏秘密。看到了吧,让我来告诉你:我将要揭露肮脏的一面,不管你是否乐意。我所谓的文盲是什么?——不按指法打字的人。他们为了维持他们的生产力需要做出牺牲。这不过是简单的算术。如果你花更多时间码代码,为了保持速度,你做其他事情的时间就会减少。

但是当谈到编程,你有太多东西可以牺牲。你可以削减你的文件,减少代码注释,减少邮件通信以及减少网上讨论的时间,更多的加入小组讨论和走廊交流。所以,猜猜看不按指法打字的人能牺牲什么?几乎上面所设计的任何东西。按指法打字的人在一英里外就可以发现一个很次的程序员,他们甚至不需要共处一室。对于初学者而言,人们察觉不到他们的外行,因为他们还没有参与到我们的网上社区来。当你与他们一对一交谈时,他们表现的很聪明。他们通常很聪明。但非打字员在网上通常只有只言片语,所以他们的表现往往很有限。他们看起来近乎冷漠,对发展工程文化没有任何兴趣。这真是太好了!

这只是我说的文盲的第一部分。他们不合群,这就是他们所谓的“我大部分时间都在设计”瓦解的地方,因为设计需要交流,需要不断记录所做的决定。如果你没有将打字作为你设计的一部分,那么你设计的东西就不会正确。另外一点就是外行的代码往往是最短的。他们不会花费其他努力来注释代码。如果他们的打字技巧太差,他们可能会选择用一种偷懒的方式来注释代码。难道他们是在用手肘打字?他们甚至不在意格式,这可以说是一个程序猿所犯的最大的罪。这还不是最糟糕的,最糟糕的是错拼标识符后还不修正过来,因为有太多地方需要修正。但实际上打字机的格式排版就在那里。

你知道打字机格式吗?你把你所有字母挤到打字机里,然后集中输出到屏幕上,砰!你觉得那是代码?我认识个像那样写代码的家伙,实在是太可怕了。看着他几乎就是件可怕的事情,因为他打字时一直盯着键盘在,而且仅用两个手指,不管他是否两个手指都用到了,并且他一分钟才看一次屏幕。简单看了看他打字,两件事中的一件必然发生。第一个可能性就是拿鼠标,因为在过去的一分钟他都把内容打在了错误的窗口里,结果很搞笑。如果他不伸手拿鼠标,他就会按回车键,而且按的次数几乎与他打字敲击的次数几乎相同。这个家伙是计算密集型而不是I/O密集型,尽管如此,我猜我还是会放他一马。

但是重构不是有很好的作用吗

没错,重构工具使你充满了底气。我听说过这种说法,而且多次听到。重构工具的存在使得打字显得没什么实际用处,早已过时。你仅需要一天到晚按着菜单键就可以领取工资了。我知道这种事。但事情是这样的,大家都在嘲笑你。或者如果他们是你亲密的朋友,他们仅仅在可怜你,因为你太老土了。如果你真的认为重构工具是打字的替代品,就好比你认为你可以砍掉你的双腿,因为你有汽车。我们他妈的才不会买这种东西。

如果你是一个程序员或者正在利用计算机进行大规模生产的IT专家,有必须学习打字!我无法表示的更明确。如果你拒绝花时间去学习打字,那么你就是朵奇葩。我可能有点夸张,但最好是这样表述。我希望我们还能做朋友,你尽管去鄙视那些奇葩。

好消息

这里有些好消息,既然你最终打算学习打字,我想告诉你一些好消息。

我知道你会去学习打字,我怎么知道?因为你已经读到这里了。说真的,你所读的东西使你与他人不同。当你得知有这么多的程序员不知道如何阅读,你一定会瞠目结舌。我没开玩笑,你读的速度可以比你打字的速度快很多,但是无数程序员不能跳读这篇博客。他们尝试了,但不像快速阅读者,他们无法轻易地获取文章的中心内容。这是行业里另外一些肮脏的小秘密。

所以,既然你都读到这了,现在你明白你需要马上学习打字了吧。你深知你可以做到的,而且你也不会觉得有多难。你无非就是少玩一些游戏,然后很快地你就可以使你的生产力提高两倍,而不需要像学习一门新的数据结构付出那么多。

这就是我知道你为什么会学习打字。所以我会告诉你一些好消息:打字简直简单的一地。快,慢,中等速度。装一些打字软件然后就开始学习吧。我们并不是在谈论节食或戒烟这种困难的事情。不管你什么年纪,采取什么样的方式,它就是这么简单。你仅仅需要学习十几个小时。如果你有什么困难,尽管发邮件给我,我会让你充满斗志。这不会花费我什么时间,因为我打字很快,再加上你的邮件又不长。告诉你个事实:在我大三或大四之前,我都还不知道如何按指法打字。当我每次需要打一个数字时,我不得不坐起来,低头看键盘,随便用几个手指抚摸键盘时,我才意识到这个事实。所以,我最终花了大概两周的时间,每天15分钟的样子就学会了。就是这样,你并不需要经常打数字,顺其自然,差不多一周的样子,每次我要打数字时,我就会慢下来,把它打对。这样大概持续了两周,我就学会了打数字。

这都是15年前的事了,15年啊。我喜欢盲打。实在是太有效率了,你可以想打对快就打多快,那么你为什么还想选择其他方式呢?来吧,是时候开始学习了。

何时开始?

如果是我的话,我会上网找一些免费的打字软件。我会找大概一个小时,最多两个小时,持续大概一周。我会尝试上面的任何东西。如果没有免费的软件合我的胃口,我就会试试Mavis Beacon这款软件。我并不知道它是否好用,但绝对会比橄榄球教练教你在电打印机上打字要好得多。

我真是不明白,我就是无法理解为什么会有专业的程序员允许自己不会打字。这毫无道理啊。这就好像一个演员不知道如何搭配衣服,毫无准备地参加一场游戏、一次会议,去教室不带作业,在奥运会上游泳时却穿着Eddie Bauer的探险短裤。

承认吧,其实就是自己懒而已。没有其他借口了。我有一个朋友,叫约翰,只能使用一只手,但是他却能一分钟打70个单词。他创造了自己的小技巧。他没有找借口,而是在找借口的人中间默默坚持着。感到羞愧吧!如果你双手健全,完全正确地一分钟打70个单词是轻而易举的,甚至更快。打字并没有你想的那么难,它比你想得更有用。

既然你今天就要开始学,你最好在德沃夏克键盘上学习,它可以促进你的学习速度,给自己一个有利的开头。

译注:德沃夏克键盘(Dvorak Keyboard),主流的键盘排列快蹄键盘(QWERTY)的对手。目前世界上最快的英文打字速度是在Dvorak键盘上创造的,平均每分钟150个词,峰值速度为每分钟212个单词。更多信息,请参阅维基百科。

我要说的就这么多了,请一定去学习打字。这是一个行业里每个人都应该谈论的问题和脏秘密。告诉你的老板你需要花时间去学习打字,并要求他支付软件费用。要求他们派你去上相关课程,如果必须,你不能逃避责任。做一切需要做的,然后告诉我进展如何。不管你信不信,我想知道你们成功的故事。给我发邮件,我会很高兴的。

Steve Yegge,2008年9月10日下午4:59

稿源:伯乐在线


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部