下面是一位经验丰富的程序员和一个初学者之间的典型互动:
程序员:我听说你正在学习编程。好极了,你学到哪里了?
初学者:我正在自己的mac上使用TextMat学习一些基本的PHP和HTML语言。
程序员:太滑稽了,你竟然学PHP!!你应该部署Heroku,用Vim学习Ruby on Rails的代码。TextMate就是专为菜鸟写的。然后可以再学点Node.js,知道不,那样才正确?
初学者:呃……好,知道了。
要是让我听到这样的话,我会忍不住朝说这种话的程序员“呸”,因为这会打击初学者的信心。没错,你是在真心给建议,但是到了初学者耳中,那就是他们仰望的那个人在贬低他们所做的努力,将他们的认真学习直接划到“不是真正学习编程”的行径中。
如果你也是程序员,那么请不要诋毁初学者的努力……除非你愿意亲自投入大量的时间来确保他们可以学到你想要他们学习的那些知识。如果只是这样不负责任地批评编程语言和工具不好,只会磨损他们的激情和动力。
我知道这很难(我曾经就犯过这样的错误),特别是如果我们给出的的确是我们认为好的语言、框架、库、文本编辑器、主机环境等等,比他们正在学的不知道要好上几百倍,甚至还能免去他们走不少弯路。但是请务必忍住!
自由地选择自己想学习的东西,能触发人的兴趣,然后我们再指点他们一条康庄大道。如果他们正在学习的内容实在不好,老是陷入僵局,然后来询问你是否有什么好办法时,只有在这个时候,你才可以自由畅谈关于纯函数式编程设计或其他等等这些你自己的独特见解。
当然,你可能并不是唯一一个和初学者交流的程序员。很多资深程序员(尤其是在网络论坛)都会有类似嘲讽的言辞,特别是当他们提及自己最喜欢的语言/库/框架/文本编辑器/主机环境的时候,都会坚称自己的才是最棒的。所以,初学者很容易陷入困惑,因为会有人不断地告诉他们他们的选择是有多么的糟糕,即使现在看起来一切进行顺利。而更为糟糕的是,每个所谓的专业人士推荐的都是不同的工具系列。Who is right?!?究竟应该怎么做?
最后,附上开头那个互动更具建设性的版本:
程序员:我听说你正在学习编程。好极了,你学到哪里了?
初学者:我正在自己的mac上使用TextMat学习一些基本的PHP和HTML语言。
程序员:太棒了,让我看看你的第一个PHP应用吧!如果到时候你对基础的Web开发比较熟悉了,我推荐你学习我最喜欢的Ruby on Rails框架。然后我们就可以探讨它和PHP的异同点了。
初学者:谢谢你的鼓励!我会与你保持联络的。