写程序不需要天份,也不需要热情_最新动态_新闻资讯_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 新闻资讯 > 最新动态 > 写程序不需要天份,也不需要热情

写程序不需要天份,也不需要热情

 2017/9/19 14:38:20    程序员俱乐部  我要评论(0)
  • 摘要:by阿川先生从来没有一个技能,曾经被神化到这个程度:「你不但要有天份,还要有热情,才适合写程序。」那些写程序的人,好像「从小就立定志向,决定未来要写程序了」。缺乏其一的话,你要嘛是个假货,要嘛走不远,总之就是不适合。这种深植人心的刻板印象不但大错特错,同时还是有害的。随便找几个工程师都能证明这点。JacobKaplan-Moss(Django创造者)acobKaplan-Moss的这份简报提到:一个平庸工程师的自白这种关于「程序天才」的神话非常有害,一方面它把行业门槛设置得特别高
  • 标签:程序

programming

  by 阿川先生

  从来没有一个技能,曾经被神化到这个程度:

  「你不但要有天份,还要有热情,才适合写程序。」

  那些写程序的人,好像「从小就立定志向,决定未来要写程序了」。

  缺乏其一的话,你要嘛是个假货,要嘛走不远,总之就是不适合。

  这种深植人心的刻板印象不但大错特错,同时还是有害的。

  随便找几个工程师都能证明这点。


  Jacob Kaplan-Moss(Django 创造者)

  acob Kaplan-Moss 的这份简报提到:

  一个平庸工程师的自白

这种关于「程序天才」的神话非常有害,一方面它把行业门槛设置得特别高,令很多人望而却步,另一方面它也在折磨产业内的人,因为你如果不能 rocks ,就会变成 sucks ,所以不得不用一切时间来努力学习和工作,导致影响生活。…(略)…我们应该改变这种态度,写程序只是一些技能,并不需要太多天分,它是可以学习的,而且做一个平庸的工程师不丢人,

  他本人在 Twitter 的自我介绍上直接写「不是真的程序设计师(not a real programmer)」,

  透漏着他对这种迷思的不耐烦。 


  Jacob Thornton(Bootstrap 作者)

  在 Github 拥有 8 万颗星的 Bootstrap,

  前 Twitter、现任 Medium 工程师 Jacob Thornton 的一篇採访也是这种迷思的反例:

  Jacob Thornton 痛恨电脑(Jacob Thornton Hates Computers)

当他说「我痛恨电脑」的时候,并不完全在开玩笑。…(略)…他说「我本来要去念社会学的」

  接着描述了他第一份工作的情况:

我拿到了一个远超我能力的工作。每一天都可能被开除。所以我非常努力工作,想搞懂 JavaScript,因为我不懂它到底在干嘛。

我一生中最现实的一刻到了。整间公司的人围在我身边,要我做一个 XHR request。我根本没做过,我只稍微听过而已。于是我开始打字、重新整理浏览器,然后什么都没出来。我反覆做了几次,知道自己完蛋了,他们发现我是假货了。接着我突然发现自己忘记加「.send ()」。我加了之后再次重新整理浏览器,画面成功显示。整个团队感觉像在说「喔,酷。」然后就各自回办公桌了。

我在那里坐了 15 分钟。心想,就这样。我搞定了。我不会被开除了。

  这段描述一点也不像「程序天才」在职场的表现。

  至于支持他一路走来的动机是什么呢?他说:

我是一个高度在乎同侪的人,我做前端的朋友总是会告诉我哪个地方做很丑或是在哪个浏览器上坏掉。感觉真的很棒。我真的只想跟朋友一起写程序,一起工作。

  他本人的 Twitter 自我介绍写「computer loser」,

  置顶推文是「公司里第一烂的工程师,但是第三酷」。

  这种态度跟刻板印象完全相反。


  Rasmus Lerdorf(PHP 之父)

  Rasmus Lerdorf 的言论常常引起广泛争议:

我其实很讨厌写程序,不过我喜欢解决问题。

有些人热爱写程序。我不懂他们为何会这样。

我不是一个真的工程师。我把东西弄一弄,弄到能跑之后就不管了。真的工程师会说「这段程序能跑,但记忆体没管理好,我们来修好它」。我只会说,一直重新开机不就好了。

  从他的言论,很难看出他对电脑本身有多少热情。

  他也跟 Jacob Kaplan-Moss 以及 Jacob Thornton 一样,懒得对写程序的迷思多做解释,

  干脆直接说自己是 loser、假工程师了。


  David Heinemeier Hansson(Rails 之父)

  DHH 在接受 Big Think 访问时提到:

说来有点好笑。我以前写 PHP 跟 Java 的时候,常常花时间去摸其他程序语言。到处摸看看其他程序语言…随便什么都好。写 PHP 跟 Java 实在太闷了,我需要用这种方式让自己暂时抽离。

我以前写 PHP 跟 Java 的时候,完全不觉得自己之后会当程序设计师。

  整段看起来都不像是一个「电脑天才」的自我介绍。

  最后让他爱上的不是电脑本身,而是 Ruby 程序语言的优雅性。

  如果 Ruby 没有被发明,DHH 现在也许会做完全不同的事情。


  这一类可以说明刻板印象大错特错的文章实在太多了,看看工程师们最爱的几个玩笑:关于工程师 59 条搞笑但却真实无比的语录。

  1. 一个好的工程师是那种过单行道马路都要左顾右盼的人。(Doug Linder)

  A good programmer is someone who always looks both ways before crossing a one-way street. (Doug Linder)

  2. 程序有问题时不要担心。如果所有东西都没问题,你就失业了。(软件工程的 Mosher 定律)

  Don’t worry if it doesn't work right. If everything did, you’d be out of a job. (Mosher’s Law of Software Engineering)

  3. 工程师的麻烦在于,你无法弄清他在折腾什什么,当你最终弄明白时,也许已经太迟了了。(超级电脑之父 Seymour Cray)

  The trouble with programmers is that you can never tell what a programmer is doing until it’s too late. (Seymour Cray)

  4. 我想大部分人都知道通常一名工程师会具有的美德。当然了,有三种:懒惰、暴躁、傲慢。(Perl 语言发明者 Larry Wall)

  Most of you are familiar with the virtues of a programmer. There are three, of course: laziness,impatience, and hubris. (Larry Wall)

  5. 写程序时要保持这种心态:就好像将来要维护你这些程序的人是一位残暴的精神病患者,而且他知道你住在哪。(Martin Golding)

  Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. (Martin Golding)

  6. 一个人写的烂软件将会给另一个人带来一份全职工作。(Jessica Gaston)

  One man’s crappy software is another man’s full time job. (Jessica Gaston)

  7. 如果建筑工人像工程师写软件那样盖房子,那第一只飞来的啄木鸟就能毁掉人类文明。(GeraldWeinberg)

  If builders built buildings the way programmers wrote programs, then the first woodpecker that came along wound destroy civilization. (Gerald Weinberg)

  8. 这世界最有可能毁灭的方式——大多数专家都同意——是由意外造成。这就是为什什么会有我们,我们是电脑专家,我们创造意外。(Nathaniel Borenstein)

  The most likely way for the world to be destroyed, most experts agree, is by accident. That’s where we come in; we’re computer professionals. We cause accidents. (Nathaniel Borenstein)

  9. 我们这个产业有个特别奇怪的现象:我们不但不会从失败里吸取教训,同时也不从成功中学习经验。(Keith Braithwaite)

  It’s a curious thing about our industry: not only do we not learn from our mistakes, we also don’t learn from our successes. (Keith Braithwaite)

  10. 一种新技术一旦开始流行,你要嘛坐上压路机,要嘛成为铺路石。(Stewart Brand)

  Once a new technology starts rolling, if you’re not part of the steamroller, you’re part of the road. (Stewart Brand)

  11. 如果没能一次成功,那就叫它 1.0 版吧。(unknown)

  If at first you don’t succeed, call it version 1.0 (unknown)

  12. 所有的工程师都是编剧,所有的电脑都是烂演员。(Anonymous Hack Actor)

  All programmers are playwrights and all computers are lousy actors. (Anonymous Hack Actor)

  13. 工作进度上越快落后,你就会有越充足的时间赶上。(Anonymous Scheduler)

  The sooner you get behind in your work, the more time you have to catch up. (Anonymous Scheduler)

  14. 当有这样的一种程序语言出现:它能让工程师用简单的英语写程序,你将会发现,工程师都开始不会说英语。(Anonymous Linguist)

  When a programming language is created that allows programmers to program in simple English, it will be discovered that programmers cannot speak English. (Anonymous Linguist)

  15. 为什么我们没有时间把事情做对,却总有时间把事情砍掉重练?(Anonymous)

  Why do we never have time to do it right, but always have time to do it over? (Anonymous)

  16. 傻瓜都能写出电脑能理解的程序。优秀的工程师写出的是人类能读懂的程序。

  Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

  17. 任何你写的程序,超过 6 个月不去看它,当你再度开启时,看起来都像是别人写的。

  Any code of your own that you haven't looked at for six or more months might as well have been written by someone else. (Eagleson's law)

  18. 按程序行数来评估软件开发的进度,就如同按重量量来评估飞机建造的进度。

  Measuring programming progress by lines of code is like measuring aircraft building progress by weight. (Bill Gates)

  19. 软件就像做爱。一次犯错,你需要用剩下的一生来弥补。

  Programming is like sex. One mistake and you have to support it for the rest of your life.(Michael Sinz)

  20. 在水上行走和按照特定需求开发开发软件都很容易易——前提是它们都是冻结状态。

  Walking on water and developing software from a specification are easy if both are frozen.(Edward V Berard)

  21. 最初 90% 的程序消耗了了最初 90% 的开发时间…最后 10% 的程序用去了了另外 90% 的开发时间。

  The first 90 percent of the code accounts for the first 90 percent of the development time…The remaining 10 percent of the code accounts for the other 90 percent of the development time.(Tom Cargill)

  22. 注释程序很像清扫厕所——你不想干,但如果你做了,这绝对会给你和你的客人带来更愉悦的体验。

  Commenting your code is like cleaning your bathroom — you never want to do it, but it really does create a more pleasant experience for you and your guests. (Ryan Campbell)

  23. 如今的程序是一场工程师和上帝的竞赛,工程师要开发出更大更好、傻瓜都会用到软件。而上帝在努力创造出更大更傻的傻瓜。目前为止,上帝是赢的。

  Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. (Rick Cook)

  24. 软件设计最困难的部分??是阻挡新功能的引入。

  The hardest part of design … is keeping features out. (Donald Norman)

  25. 为了理解递回(recursion),我们首先要理解的是递回。

  In order to understand recursion, one must first understand recursion. (Anonymous)

  26. 世上只有两类程序语言:那些被人批得一无是处的,以及那些没人使用的。

  There are only two kinds of programming languages: those people always bitch about and those nobody uses. (Bjarne Stroustrup)

  27. 关于布林值最棒一点是,即使你搞错了,也只差一个位元(a bit,此为双关语,英文“一点点”之意,也是电脑术语“位元”的意思)。

  The best thing about a boolean is even if you are wrong, you are only off by a bit.

  28. 如果 Java 真的能够垃圾回收,那大部分的程序都会在执行时自己删除自己。

  If Java had true garbage collection, most programs would delete themselves upon execution.(Robert Swell)

  29. 理论上,理论和实践是没有差异的。但实践中,是有的。

  In theory, there is no difference between theory and practice. But, in practice, there is. (Jan L.A. van de Snepscheut)

  30. 预备,开火,瞄准:这是最快的软件开发方法。预备,瞄准,瞄准,瞄准,瞄准:这是最慢的软件开发方法。

  Ready, fire, aim: the fast approach to software development. Ready, aim, aim, aim, aim: the slow approach to software development. (Anonymous)

  31. 写程序是 10% 的科学、20% 天份,加上 70% 的让天份符合科学。

  Programming is 10% science, 20% ingenuity, and 70% getting the ingenuity to work with the science. (Anonymous)

  32. 评估一件事情要比去理解你评估了什么容易。

  It is easier to measure something than to understand what you have measured. (Anonymous)

  33. 标准检查程序(benchmark)不会撒谎,但制定标准检查程序的人会。

  Benchmarks don’t lie, but liars do benchmarks. (Anonymous)

  34. 培养员工,即使他们有跳槽的风险。什么都不做而留他们在公司,这样风险更大。

  Better train people and risk they leave – than do nothing and risk they stay. (Anonymous)

  35. 电脑科学的目标是做出一个东西,并且保证它至少能坚持到我们将它开发完成。

  The goal of Computer Science is to build something that will last at least until we've finished building it. (Anonymous)

  36. Java 之于 JavaScript 的关系就如同狗和热狗。(英文是 Car 与 Carpet)。

  Java is to JavaScript what Car is to Carpet. (Chris Heilmann)

  37. 起初就把事情做对是完全没必要的。但最后要把事情做对是绝对必要的。

  It's not at all important to get it right the first time. It's vitally important to get it right the last time. (Andrew Hunt and David Thomas)

  38. 阵列(array)的起始索引(indices)应该从 0 开始还是从 1 开始?我的 0.5 的折中提议被他们拒绝了,而我认为,他们没有考虑周详。

  Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought,proper consideration. (Stan Kelly-Bootle)

  39. 程序必须是为了给人看而写,命令机器执行只是附带任务。

  Programs must be written for people to read, and only incidentally for machines to execute.(Abelson / Sussman)

  40. 写程序可以很有趣,密码学也是,但两者绝对不能合二为一。

  Programming can be fun, so can cryptography; however they should not be combined.(Kreitzberg and Shneiderman)

  41. 复制粘贴实际上是一种设计错误

  Copy and paste is a design error. (David Parnas)

  42. 电脑善于遵循指令,但不善于理解你的思维。

  Computers are good at following instructions, but not at reading your mind. (Donald Knuth)

  43. 被删除的程序就是被除错的程序。

  Deleted code is debugged code. (Jeff Sickel)

  44. 如果除错是消除软件 bug 的过程,那写程序一定是把它们放进去的过程.

  If debugging is the process of removing software bugs, then programming must be the process of putting them in. (Edsger Dijkstra)

  45. 程序除错要比新编写程序困难一倍。因此,如果你写出了了最聪明的程序,按此推算,你就缺乏更深远的智慧来替它除错。

  Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are–by definition–not smart enough to debug it.

  46. 想在自己的程序里找出一个错误是十分困难的。而当你认为你的程序没有错误时,那就更难了。

  It's hard enough to find an error in your code when you're looking for it; it's even harder when you've assumed your code is error-free. (Steve McConnel)

  47. 这不是个 bug——这一个未注明的功能特征。

  It’s not a bug – it’s an undocumented feature. (Anonymous)

  48. 没有需求或设计,写程序就是一种将 bug 添加到一个空白文件里的艺术。

  Without requirements or design, programming is the art of adding bugs to an empty text file.(Louis Srygley)

  49. 烂程序并不烂,只是被误解了。

  Bad code isn’t bad, its just misunderstood. (Anonymous Code Behaviorist)

  50. 有两种方法能写出没有错误的程序;但只有第三种好用。

  There are two ways to write error-free programs; only the third one works. (Alan J. Perlis)

  51. 小心上面程序中的 bug;我只知道这些程序是正确的,但没有试过。

  Beware of bugs in the above code; I have only proved it correct, not tried it. (Donald Knuth)

  软件产品/成品语录

  52. 软件能够反覆使用之前,它必须要先可以用。

  Before software can be reusable it first has to be usable. (Ralph Johnson)

  53. 软件通常在 beta 测试完成不久后发表。Beta 在拉丁语中是“还不能用”的意思。

  Software undergoes beta testing shortly before it’s released. Beta is Latin for “still doesn't work". (Anonymous)

  54. 最好的性能改进是将软件从不能用的状态变成可用。

  The best performance improvement is the transition from the nonworking state to the working state. (J. Osterhout)

  55. 最便宜、最快速、最值得信赖的组件是那些还未出现的组件。

  The cheapest, fastest, and most reliable components are those that aren't there. (Gordon Bell)

  56. 我认为微软之所以把“.Net”命名为“.Net”,是因为如此一来,它就不会出现在 Unix 的目录里。

  I think Microsoft named .Net so it wouldn’t show up in a Unix directory listing. (Oktal)

  57. 软件和教堂非常相似——建成之后我们就开始祈祷。

  Software and cathedrals are much the same – first we build them, then we pray. (SamRedwine)

  58. 除非最后一个使用者死掉,软件是不会有完工的时候的。

  The software isn’t finished until the last user is dead. (Anonymous)

  59. 如今的大部分软件都非常像埃及金字塔,由成千上万的石块一块一块构成,没有结构上的整合,而是由暴力强制和成千上万的奴隶完成。

  Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves. (Alan Kay)

  再看看 Medium 上很受欢迎的学习系列文章:资深开发者给后辈的七个 Coding 学习心得

  其中的几个建议

  1. 第一次也许不会成功,也许第二、第三次也不会
  2. 也许常常有人说你是错的
  3. 也许常常会有人跟你说「你并不是个 Coder」
  4. 不要在意外表,能力才是一切
  5. 坚持比方法更重要

  无非就是想打破这类写程序的迷思、无意义的资格论神话。

  下次又有人学到一半,开始反省自己适不适合、够不够资格的时候,

  我只想跟他说:你就多找几种方式学学看吧,不要抱持那种奇怪的资格论。

  很多时候其实只是搞错方法、搞错心态而已。

  真的完全学不懂再放弃吧。

  写程序不需要天份,也不需要热情。


  Photo via Sano Rin, CC licensed.

发表评论
用户名: 匿名