一个人是否能成为程序员是上天注定的
openkk 13年前
<div id="OSChina_News_26540" class="NewsContent TextContent NewsType2"> <div style="width:217px;" id="attachment_3675" class="wp-caption alignleft"> <img class=" wp-image-3675 " title="本文的作者 Swizec Teller " alt="一个人是否能成为程序员是上天注定的" src="https://simg.open-open.com/show/777b91c46e619d7a7bb2209678045117.jpg" width="300" height="300" /> <p class="wp-caption-text">本文的作者 Swizec Teller</p> </div> <p><strong>本文的作者是一个斯洛文尼亚共和国的独立程序员,自称是“戴帽子的黑客”,他使用Pascal、Delphi、 C/C++、Python,PHP,node.js等语言编程,他曾是著名的开源论坛phpBB的几个主要模块的开发人,先后为 hipstervision.org等五家公司网站的创始人或合作创始人,他目前的主要收入来自postme.me这个明信片网站。</strong></p> <p>程序员是一种特殊物种,<em>好的</em>程序员尤其是这样——在我们这个行当里很多人都试图把编程归入一种复杂的技术学科,但它实际上更倾向于一种艺术。它实际上更接近数学,音乐或电视剧<a class="zem_slink" title="Firefly (TV series)" href="/misc/goto?guid=4958332127166615585" rel="wikipedia">《Firefly》</a>里的Kaylee魔法。</p> <p>好的程序员有一种特殊的直觉,一种天赋,这种天赋很难描述,更不容易得到。</p> <p>几个星期前,<a href="/misc/goto?guid=4958332127976330798" target="_blank">@zidarsk8</a> 跑到我这说<em>“老大!我发现这样一个人!我还在在教他如何编程!但我发现他已经比我优秀了!他一个月前还不知道到什么是变量!太邪门了!“</em></p> <p>他要我一定要在博客里写写这件事。为什么有些人就简单的<em>学会了</em>?他们有什么特殊之处?是否任何人都可以学会编程?还是只有有一定天分的人才能成为一个不错的(先别谈优秀)程序员?</p> <p>我记得一年前曾辅导过一个高中的孩子。大概是担心考不过他的计算机课程,跑到我这来求助。一个月里,我把我知道的全教给他了,至少这些知识能让他通过考试。</p> <p>快到月末的时候,他已经知道了所有关于循环、变量赋值的知识,甚至还明白了函数是一组能做某些事情的代码。我跟他父亲道别时说的话是<em>“是的,他什么都知道了。只需要一些实践去掌握它们。”</em></p> <div style="width:310px;" class="wp-caption alignleft"> <p><a href="/misc/goto?guid=4958332128769235993"><img class="zemanta-img-inserted zemanta-img-configured" title="Sheep" alt="一个人是否能成为程序员是上天注定的" src="https://simg.open-open.com/show/3f227feb24c13ed07cc8089682b05230.jpg" width="309" height="240" /></a></p> <p class="wp-caption-text">Image via Wikipedia</p> </div> <p>我不知道他是否考过了那个课程。如果他过了,那是老师的荣幸…而就我根据我高中时的记忆,老师们并非都那么幸运。并不是因为我不是个好老师我才这样说——我从很多受这个孩子推荐来到我这里的其他学生那里都收到了一封<em>“谢谢你!出色的通过!耶!”</em>的邮件——有些人很简单就是不能成为程序员。永远成不了程序员。更别说成为不错的程序员了。</p> <h2>不能编程的羊</h2> <p><a class="zem_slink" title="Jeff Atwood" href="/misc/goto?guid=4958332129565654771" rel="homepage">Jeff Atwood</a>在2006年曾写过关于<em><a href="/misc/goto?guid=4958332130381989196" target="_blank">把不能编程的山羊从能编程的绵羊中挑出来</a></em>的文章,里面提到过一项研究,这些研究声称找到了一种能预测一个人将来的编程能力的测试。</p> <p>测试非常的简单:</p> <pre>a = 5 b = 20 a = b 现在a和b的值是什么?</pre> <p>有很多像这样的问题。只有<strong>44%</strong>学生的大脑里养成了固定的赋值<a class="zem_slink" title="Mental model" href="/misc/goto?guid=4958332131180117268" rel="wikipedia">思维模型</a>——包括有些理解甚至是错误的。余下的人都答错了,或者是没有答。</p> <p>更糟糕的是,在一个学期的编程学习后,这个比例没有任何变化。只有44%的理解了赋值的过程。</p> <p>很显然,有些人就是学不会。</p> <p>我想可能还有个更简单的测试 -></p> <div style="width:230px;" class="wp-caption alignright"> <p><a href="/misc/goto?guid=4958332131975664743"><img class="zemanta-img-inserted zemanta-img-configured" title="Passion (novel)" alt="一个人是否能成为程序员是上天注定的" src="https://simg.open-open.com/show/2ecd9e461c07faf721a3f5c01eab3782.jpg" width="220" height="333" /></a></p> <p class="wp-caption-text">Image via Wikipedia</p> </div> <h2>热情</h2> <p>有时候,当你给一个有上进心的年轻心灵(任何愿意学习编程的人,年龄不是问题)两种工具和一个难题。他会使用这两种工具创造出4种工具。他会搜索互联网,发现更多的工具…很快,他有了20种工具,请问你还让我解决什么问题?</p> <p>这就是热情!</p> <p>心无杂念的对编程的热情。没有问题需要解决时仍然对编程入迷,甚至兴奋。甚至把解决一个已知的问题也当作一次普通的练习…这就是卓越之处。</p> <p>多大岁数才开始学习编程,这并不重要——很多研究显示,在我们这个世界里,编程的工龄并不是水平的指示符——重要的是你对这个行业有个热情的心。</p> <p>因为,一旦有了热情,你就拥有了所有其它的一切。</p> <p id="page-note">[本文英文原文链接:<a href="/misc/goto?guid=4958332132769364121">Programmers are born not made</a> ]<br /> 本文转载自: 外刊IT评论 <a href="/misc/goto?guid=4958183272158702965" rel="nofollow" target="_blank">http://www.aqee.net/</a></p> </div>