程序员的" width="560" height="373" data-original="http://www.aqee.net/wordpress/wp-content/uploads/2013/11/Fotolia_53501567_XS-560x373.jpg" />
英文原文:How Religion Destroys Programmers
我对自己有了新的发现——上天给了我神奇的能力,让我总能做出正确的技术选择。
有些夸张,但的确很神奇。
回首我的开发生涯,我认为我使用的任何一种编程语言都是在当时那种场景下最好的。
同样的,我选择的框架,甚至操作系统也是最好的。
是的,我有这样惊人的能力,就是从技术的海洋中挑出最好的。这些技术我甚至不用亲自试一遍,但我却极力捍卫我的选择。
可能当你在阅读本文的时候,你已经发现了你也有这种神秘的能力。
大多数开发者有技术信仰
这是真的。
不要不好意思,你不是一个人。我,几乎每一个人,都与你同在。
我们有些人已经从这种自我洗脑中清醒过来。另一些人则还非常幸福地并没有意识到我们所处的困境。但是我们中的大部分人至少拥有一个为自己信奉的技术信仰。
这很自然,因为大多数程序员进入软件开发这个领域是因为他们对软件开发充满了热情。任何你热爱的事情都非常容易导致你对它产生一些非常不客观的看法。
拿体育迷来举个例子,我自己并不是一个体育迷,但我知道不同种类运动的粉丝笃信他们支持的队伍是最棒的,尽管所有的证据都指向了相反的方向。
对自己选择和想法的捍卫是人类的天性。我们容易采纳新的相法,但是我们虔诚地捍卫我们已有的,而不需要太多的证据来支持他们。问题在于我们倾向于把我们对事情的看法与我们的身份,甚至我们作为人的价值捆绑在一起。
需要灵魂深处的搜索,但是如果你看一下你自己,你很有可能会发现,你可以列举出最好的操作系统,编程语言以及框架等等。
无知不是福
这种自我强加的信仰导致的问题是,它让我们看不到真相。
在我真正使用了一台 Mac 之前,我曾经花了无数时间争论它为什么这么垃圾。具有讽刺意味的是,我现在正在一台 Mac 上面写这篇文章,但是我通过远程桌面使用 Windows Live Writer 来写。
我的观点是,我们大多数人极力争辩我们选择的技术是最好的,而甚至没有尝试过别的技术。
想象一下,似乎很可笑。但是甚至今天,我都能发现我还是这样。
当我审视自己,问自己为什么的时候,我发现,大部分动机来自于我对我所学到的和掌握的知识的自豪和对我所不知道的知识的恐惧这两者的结合。
我发现,如果花一些时间学习一门技术并了解为什么别人这么喜欢它,我就不会如此轻易地把我不知道的技术当做“垃圾”或者“废物”一样扔掉。正如他人所说,一个人的垃圾正是另一个人的宝藏。
关于无脑信仰的问题
即使我不告诉你,你也知道,在这个世界上,无脑(脑残)的狂热是一股毁灭性的力量。你只需要去你最喜欢的国家新闻网站或者读一点历史就知道怎么回事了。
虽然没有太多程序员会为 PHP vs C#这样的问题而大动干戈——尽管我曾在这样一次相似的、挑衅性的、如今我极力反对的讨论中被指责不该丢椅子——很多开发者还是喜欢大声争论自己的意见,甚至盛气凌人地推翻他人的工作。我相信你们一定看到过很多这样的情景——如果你们常常上网的话。当我大胆的发表一些关于 JavaScript 的负面文章时,我自己也吞下了这样的苦水
所以,我们可能觉得,我们的无知并没有伤害任何人,并且我们觉得他们活该因为他们明显是错的,然而真相是,我们的无知造成了相当多的破坏。
回首过去,我感到非常羞愧,因为我将 Perl 程序员贬低得一无是处,完全否定他们的劳动成果,并且非常无知地推举我神圣的静态类C语言为可以净化他们的唯一救世主。
但是最重要的是,我发现我伤害的其实是我自己。
别再打自己脸了,蠢货!
我职业生涯最大的成长得益于,在我寻找一份 C# 开发的工作时,得到了一个非常好的机会去做一个 JAVA 项目的架构师。
我被这个决定折磨得够呛。因为我认为 JAVA 是垃圾、是邪恶的。JAVA 缺少像 C# 那样的属性,需要手写 getter 和 setter,所以每一个写 JAVA 代码的人明显是蠢货。
我几乎没有接受那份工作,但是我觉得待遇很好,可以勉强一下自己忍一忍过去算了,就像一个战俘等待有一天我的微软大帝可以拯救我。我想,我至少得脱离那种恶心的 JAVA 写法。
然而,经过了一些年的开发,编写良好的 JAVA 代码单元测试之后,我发现,其实不仅 JAVA 没那么屎,这个语言的一些长处和一些 JAVA 框架也值得称赞。
更重要的是,我开始意识到我过去的代码偏执使我关上了很多扇门。我开始觉得,可能我过去所有的技术选择都不一定是最好的。我开始思考,其实许多最流行的技术,它们之间并没有那么大的区别。
我开始意识到,相对于无脑崇拜某个我凑巧选择的技术,广泛地理解一系列技术和编程语言可以使我变得更有价值。
现在,我发现我对单个的技术理解得特别快,因为不再是“闭门造车”,我可以用我的大脑去比较和对比不同编程语言和技术之间的区别,这样使我对所有的一切都有了更深的理解。
说了这么多,我的观点就是,对技术的选择持封闭态度最后只会伤害你自己并限制你作为一个开发者的个人成长。
(这里又两本很好的书可以帮助你打破这些壁垒:《七周七种语言》和《七周七数据库》)
没有最好的
在结束这篇文章之前,但愿你能相信我说的”世上没有最好的技术或者编程语言“。
我不是在用说编程语言各有各的好、各自处理不同的情况来侮辱你的智商,。因为真相远比这个深刻。
在制作了超过 40 部非常广泛的技术和编程语言的课程之后,我发现了一些真相。
真相是,有很多很好的方法能做成同一件相同的事情,使用不同的工具和技术。
真相是,所有的编程语言和技术都有一些大错误和大弱点。
真相是,你学的不同技术越多,你越能发现大多数技术核心的东西是非常相似的。我指的是,编写软件的核心概念,无关乎技术和编程语言语法。
跟我一样,你也会发现,如果你愿意接受其他技术并且承认自己的无知,并从中学习,那么,不管你去了哪里,你都会找到很多乐于助人的友好人士,他们非常乐于把他们知道的东西教给你。