话说,程序员是一类特殊的品种,优秀的程序员更是如此——我们更愿意承认编程这种技能是一门艺术,而不是大家眼中艰苦卓绝的工科课程。编程可能更像是数学、音乐,或者是在电视剧《Firefly》中Kaylee所用的魔法,它是那样让人沉醉。
优秀的程序员常常有这种感觉,天才是很难得的,更难以复制。
在数周以前,@zidarsk8跑过来告诉我“天哪,竟然会有这样的家伙,我才教会他怎样写代码,一转眼他写得比我都要好了!可恶的是,这家伙在一个月之前甚至连变量是什么都不知道,这还是不是人啊!”
我答应他在博客中如实写出来。为什么有的人轻轻松松就能get编程这个技能?他们有什么特别之处?谁都能学会编程还是只有某些人才能成为一个合格的程序员,而想成为优秀的程序员是否更需要天生?
一年前我给一个高中学生做家教,他因为早先的编程课没有及格,然后他父母请了我来教他。在一个月的时间里我悉心传授,把我所知道的一切都教给了他,在我看来至少通过考试是没问题了的。
到月末的时候,他已经对循环、变量赋值等等了如指掌,连函数是代码包能做一定事情他都知道和理解了。临走,我不得不对他父亲这样说“我已经没什么好教的了,不过他还得需要练习来巩固这些。”
没错,内心里,我是很怀疑他是否能及格的。不过如果他的老师怜悯他的话,可能会过——不过,遗憾的是,我记得这个老师在我高中时代一点都不仁慈,特别喜欢看学生受苦受难。
还有一点要声明的是,我可不是个差老师——那个孩子还向别的学生推荐了我,并且所有孩子都给我发了感谢信——只是有些人天生就不是写代码的料,即便他们再努力,甚至还是连平庸二字都称不上。
沉默的羔羊
Jeff Atwood在2006年出版的《Separating Programming Sheep from Non-Programming Goats》一书中提到一项研究,声称可以用之检测是否拥有编程天赋。
这个测试相当简单,例如:
- a = 5
- b = 20
- a = b
- What are a and b now?
还有不少类似的测试例子。但是只有44%的学生形成了一个统一赋值的心智模型——即使是错误的。剩下的超过半数人失败了或者根本就回答不了。
更糟糕的是,在学了一个学期的编程之后,这个比例还是相同,还是只有44%的学生知道赋值如何作用。
很明显,有的人无论怎么学就是想不明白这些。
下面我介绍一个我认为更为简便的测试
激情
有时候,当那些拥有年轻心态的家伙(人人都能学代码,年龄不是限制)拿到一个问题和两个工具,他们会利用这区区两个工具创造出四个工具,然后在网上搜索,找到更多的工具……这样一来,很快他们就有二十个工具,好家伙!哦,对了,我还没说这些家伙拿到的这个问题是什么?
这个问题就是激情!
写代码就是需要这种完完全全不带丁点杂质的激情。当你为之深深陶醉,甚至兴奋不已的时候,还怕什么问题是解决不了的呢。即使你正在解决的这个问题,你也知道是毫无意义的……这就是拥有激情的伟大所在!
别担心你开始编程的年纪比别人大——要知道,很多研究已经表明,经验在这一行并不是重点——关键要看你对编程这玩意是否拥有百折不挠的激情。
因为一旦被点燃了激情,那么其他的问题就不再是问题了。你,就是天生的程序员!
译文链接:http://news.html5tricks.com/programmer-is-born.html
英文原文:Programmers are born not made
翻译作者:蒋丽丽