微信号:we21cto

介绍:21CTO(21CTO.com)是中国项级技术专家的学习与服务平台.我们为CTO、技术总监、架构师等技术专家提供高质量的资讯、问答、活动等产品,同时与企业连接,提供技术咨询、研发、运维、技术支持、培训及人才招聘等服...

程序猿怎么跳出技术的“鄙视链”

2016-10-29 21:26 21CTO



引子


不知道你是不是个有信仰的人。无论你信仰任何宗教,我想你会同意我的看法——历史上很多很血腥,残酷的战争,几乎都是为了宗教而战。比如中国近代的白莲教,太平军,海外几个国家为争取宗教圣地现在还在撕。

 

软件开发和上面的事有点像。程序员对技术的虔诚,也不比信仰生命起源,民族教义、某个主义或至高无上的神存在等差多少。

 

当然了,大家都是文明人,不会因为某人喜欢iOS超过Android,或者这个人写Java,另一个个人用PHP,互相撕逼,跑到朝阳公园约架。但是我们这帮人确实存在一个鄙视链的东西,总想证明自己的语言要高出别人一等。

 

看一看陷入到某个执念有木有?也可能这些同学没有此心当然更好。如果我们能让自己不成为某个技术的信徒,也许在职业生涯上会走得更长远。

 

技术信徒


这是前两天龙泉寺招聘PHP程序员,我的朋友圈:



还有这样式儿的:


 

大家看到了?还是乖乖承认—我们对某种技术或编程语言就是存在偏见。


你认为自己的选择就是最好的,大多数程序员都这样。

 

就像自己的孩子一样,怎么看都好。我们对自己的事情总是充满激情。正因为如此,我们对别人的评价有着极强的敏感,就像对运动员不能说TA的职业一丁点不好。


其实,只所以对某一个技术虔诚,甚至于崇拜,是因为我们熟悉这种技术。因为如此,我们很自然地相信自己的选择是最好的,这样就会让我们忽略任何反对意见。

 

我们不可能掌握了解目前所有的技术栈,从而给“哪项技术最好”作出最英明、最睿智的判断,所以我们倾向于选择我们最了解的技术并先入为主地认为它是最好的。比如“人生苦短,我用Python”之类的言语就出来了。

 

尽管这一行为的起因合理又自然,但其实有破坏性和局限性。当我们武断地认为自身经验是对的,固执己见时,很容易只与理念相同的人打交道,进而排斥他人。最终我们会固步自封,墨守成规。我们自以为找到了所有答案,却只会裹足不前。

 

在我职业生涯的相当长的一段时间里,我都是某个操作系统,编程语言甚至某个编辑器的忠实信徒。比如我一度喜欢FreeBSD,不喜欢Windows,甚至Linux。

后来,我逐渐认识到,我没有必要只是选择最好的而贬低其他的平台。

 

天生一物必有用

 

不是所有的技术都是伟大的。但存在必有价值,多数普遍应用的技术至少是“好的”。一样东西如果不好,就不会为人们所知或所用,也不会大规模应用。

当然,环境是随着时间而变化,我们需要领会到,至少在某个历史的时间点,个技术都被看作这个时代里“好的”甚至是“伟大的”。

有了这样的视角会助于我们理解。在很情况下,解决问题并不只有一个好的或是最好的方法。同样,也没有最好的编程语言、框架、操作系统。文本编辑器也不是会是只有一种。

 

我们可能会喜欢某项技术多过于其它,或者用某种编程语言的效率要高过其它,或者用某种编程语言的效率要高过其他,但是称他是最好是没啥必要的。

有人说PHP很烂,还有人说PHP是世界上最好的语言,这种就当玩笑开开算了。

 

尝试改变

 

让自己相信这一点经历了一段非常漫长的困难时间。我花了无数时间与人争论,Mac比Windows好,我为Perl,为PHP等脚本语言大声疾呼,我认为PHP比asp,甚至Java的开发效率甩出几条街。

现在,我感觉再讲这些就有些惭愧,我有时会严厉斥责不这么认为的程序员——他们怎么敢相信那些我们都从来不用的技术?

 

令我大开眼界的是第一次担当Java项目组长,为某个证券公司做系统的时候。在此之前,我是Perl、PHP的开发人员。我觉得Java的语法很冗长,做一个系统要加载很多第三方的包或类库,还有Tomcat配置一堆不知所云的XML文件,同优雅的.NET语法比如C#,或者自由的Perl或PHP语法,Java代码非常麻烦,而且那时候Java的一个实例启用就会占满整个服务器的内存。我怎么可能喜欢用Java写代码呢?

 

最终我还是接受了这份工作,因为这个机会实在是太好了。而且我认为这不过是一个合同,我只要忍受区区一年而已。后来我发现,接下来的工作是我在职业生中所做的最英明的决策。使用自己一度厌恶的技术工作,让我们从不同的视角审视所有的技术。事实上,Java一点都不那么糟糕,Java培养了我的严谨性,代码也更鲁棒,我也能理解为什么有些程序员喜欢Java而不用C#。

在做Java项目中,我学到的东西比之前工作中学到的都多。突然之间,我有了一个巨大的装满各式工具的工具箱,能用来解决任何问题,我再也不像以前那样死守着几个被过度使用的工具。

 

从那个时候起,面对其他编程语言,我都会抱着与而对Java时一样的开放心态,使用从中学习到的任何知识和技能,让自己成为更好的程序员。我也放弃了对操作系统和框架的偏爱,努力尝试新东西后再做评价。

 

如果没有这段经历,我不会再尝试写新的文章或书籍。比如我写了几本关于PHP的开发书,接下来就一直写PHP,而不会写后端架构类的书,或关于Java性能的书籍了。

 

没有最新,只有最快

 

没有理由去强列坚持自己选择的技术是最好的,而轻视甚至无视其它技术。如果你固执己见,最终受损的是我们自己。

 

另外,如果我们愿意对技术保持开放的心态,而非固守自己已经了解的技术,声称它是最好的,你会发现更多的好机会再为你敞开大门。

 

下面,列出我们钟爱的所有技术,或者你觉得很牛逼的技术。

针对于这些列表中的某一项,相想它为啥吸引你。你都做了哪些比较来确定它确实是“更胜一筹”?你真的使用过它们的竞争对手吗?


去做这些开放性行为,会打开我们更多创造性的思维。


不妨挑选一门你厌恶的技术,还有一些新出现的技术,找几个喜欢它的人,开诚布公地讨论为什么喜欢这门技术,然后再进一步行动:去用它。

 

感谢那些发明这些语言或操作系统的大牛们,是TA们构造了技术的底层基石,让我们能够开发出更多有益于人们的好产品,带给人们更精彩的生活。

 

(完)

 
21CTO 更多文章 1024,程序员节节日快乐 微信小程序畅想曲 600亿估值、5.5亿用户背后,今日头条是如何在4年间实现爆发式增长的? 会“混”才能成功:管理者之互联网+企业生存指南 CDN技术详解
猜您喜欢 2013年开源中国10大热门Java开源项目 用户身份验证的几种方式以及OpenStack认证方式的使用 CDH大数据平台搭建 2014 WOT全球软件技术峰会开幕在即! 7月25日-27日,北京富力万丽酒店 《神秘的程序员们》漫画连载26-悲催的人生