【转载】程序员都是天生的

By | 2015年3月22日

英文原文链接:http://swizec.com/blog/programmers-are-born-not-made/swizec/3369

原文标题:Programmers are born not made

翻译:yangwang

本文链接:http://yangwang.hk/?p=388

转载请勿移除此声明

本文的作者是一个斯洛文尼亚共和国的独立程序员,自称是“戴帽子的黑客”,他使用Pascal、Delphi、 C/C++、Python,PHP,node.js等语言编程,他曾是著名的开源论坛phpBB的几个主要模块的开发人,先后为 hipstervision.org等五家公司网站的创始人或合作创始人


Programmers are a special breed, good programmers especially – our craft is more an art than we like to admit when trying to wrestle it into a Hard Engineering Discipline ™. It’s actually more like mathematics, music or the wizardry Kaylee does in Firefly.
程序员是一个特殊品种,优秀的程序员更是这样——我们的工作更像一门艺术,而不是我们所承认的一门工科学科。实际上,它更像数学,音乐,或者像电视剧《Firefly》中的Kaylee所使用的魔法

Image via Wikipedia

Good programmers have a special feel, a talent that is difficult to explain and even harder to attain.
好的程序员都有一种特殊的,一种难以形容而且甚至无法通过练习而得到的感觉

A few weeks ago @zidarsk8 came rushing to me “Dude! There’s this guy! I’ve been teaching him coding! He’s already better than me! Hasn’t even heard of a variable before a month ago! It’s so frikkin’ awesome!”
几天前,@zidarsk8跑过来对我说,“我靠,居然有这种人!我刚教他编程,现在他的水平都比我高了!他一个月之前连变量是什么都不知道啊!!!真TM见鬼”

He made me promise to blog about it. Why is it some people just get it? What’s so special about them? Can anybody be taught to program or does it really take a special breed to become even a competent programmer, let alone a good one?
他让我保证写一篇关于此的博文,为什么有些人如此轻易的就get了编程的技能?他们有哪些特殊的地方?任何人都能学会编程,还是只有那些有天分的人才能成为一个合格的程序员?这两个解释那个正确?

I remember tutoring a high school kid about a year ago. About to fail his programming class (CE high school, we have those), he came running to me. In a month I was to teach him everything I know, or at least enough to pass the class.
我记得大约一年前我给一名高中生当家教,他找我当家教是因为他的编程课不及格(我们有这种高中)。在一个月内,我把我所知道的所有东西都教给了他,或者至少能让他通过考试。

Come end of the month and he knew everything about loops, variable assignment, even understood that functions are packets of code that can do stuff. My parting words to his father were “Yeah, he knows everything. Just needs a bit of practice to get it.”
一个月之后,他学会了任何关于循环、变量、参数的知识,甚至连函数是一块能做一些事情的代码段都理解了。我对他父亲说“是的,他已经学会了很多东西,只需要一些练习去掌握了”

I doubt he ever passed the class. Or if he did it was the teacher’s mercy … and that teacher isn’t very merciful from what I remember of her in my high school times.
我很怀疑他能通过考试。如果他及格了,肯定是遇到了一个仁慈的老师……不过我记得当时他们的学校老师一点也不仁慈。

But this isn’t just because I’m a bad teacher – others came to me after that one kid on his recommendation and I got a “Thank you! I bloody passed! yay!” email from all of them – there are people who simply aren’t programmers. Never will be programmers. Not even mediocre ones.
但是他不及格不是因为我是一个没有水平的垃圾老师,这个孩子把我介绍给了他的同学,而我都收到了他们的电子邮件:“谢谢你,我及格了!简直碉堡了!”。总有这样一些人,他们不是程序猿的料,就算再努力,永远成为不了合格的程序员,甚至连平庸都谈不上!

The non-programming sheep

不能编程的羊

Jeff Atwood wrote about Separating Programming Sheep from Non-Programming Goats in 2006 where he mentions a study that claims to have found a test to predict future programming ability.
Jeff Atwood在2006年的文章《Separating Programming Sheep from Non-Programming Goats》中提到了一项研究,这个研究声称找到了一种能预测一个人将来的编程能力的测试。

The test is really simple:
这个测试很简单

a = 5
b = 20
a = b

What are a and be now?

现在a和b的值是多少?

And some more questions like that. Only 44% of the students formed a consistent mental model of assignment – even a wrong one. The rest failed or didn’t answer the questions.
还有许多类似这样的问题。只有44%的学生形成了固定的赋值思维模型——尽管有些理解是错误的。而剩下的都答错了,甚至根本没有回答。

Worse still, after a semester of learning to program, the numbers were the same. Only 44% of the students understood how assignment works.
在学习编程一段时间后,结果依旧很糟糕,数据没有变化。只有44%的学生理解了赋值是怎样一回事。

Some people just dont get it. Apparently.
显然,有些人无论怎么学就是学不会。

But I think there’s an even simpler test ->
但是我认为还有一个更简单的测试

Passion.

激情

Image via Wikipedia

Sometimes when you give an impressionable young mind (anybody deciding to learn to code, age is irrelevant) two tools and a problem, they will use the two tools to create four more tools. Then they will get on the internets and find some more tools … soon they have twenty tools and what was the problem you wanted me to solve again?
有时候,当你给一个年轻人一个问题和两个工具(任何想学编程的人,年龄不是问题),他们会使用这两个工具创造四个工具。接着,他们会上网搜索,然后发现更多的工具……很快,他们就有了20个工具。请问你还让我解决什么问题?

That’s passion!
这就是激情!

Pure unadulterated passion for programming. When you can be fascinated, even excited, about this stuff without a need to solve a problem. Hell, even if you are solving a problem that you know is a meaningless exercise … that’s where greatness lies.
心无杂念的对编程的激情,尽管没有需要解决的问题,仍然对编程着迷,甚至是兴奋不已。甚至把解决一个你已经知道的问题当作练习……这便是卓越之处

It doesn’t matter what age you started coding at – many studies have shown experience is not a predictor of quality in our world – what matters is that you have a passion for this stuff.
你何时开始学习编程都没有问题——许多研究显示,经验不是你在世界上你的水平的指示符——最重要的是你对事物的激情

Because if you’ve got the passion, then you probably have everything else you need as well.
因为你一旦有了激情,你就拥有了一切

发表评论

电子邮件地址不会被公开。 必填项已用*标注