黑客文化的精髓

听说“黑客文化”这个词,就像在昨天。想起它,眼前就出现一些头发蓬乱,穿黑色道袍的人。最早的时候,他们努力地向人们澄清:“黑客”不是贬义词,不是指那些入侵电脑网络的罪犯。当人们明白过来之后,他们开始告诉人们如何成为一个黑客,并且把黑客与画家相提并论。当人们受到鼓舞,决心成为黑客之后,他们开始向这些人灌输黑客的“行为守则”,“提问的艺术”等等。总之就是说,你得显示出一些非常重要的特征以证明你是高手,并且教育那些菜鸟们。否则按照我们的标准,你就不是个黑客!

于是忽然间,我来到了这个黑客遍地的世界。体验着,忍受着自己向往已久的“黑客文化”。

某大牛说……

一个中等水平的黑客要说服一个菜鸟水平的黑客,方法很简单:引用一个超级黑客的话。至于为什么嘛,我也不知道,总之你照办就是了。最好记住那超级黑客的名字,以后再遇到不懂事的菜鸟就用同样的方法教育他,免得我亲自来动口舌!

笨蛋才不会用这个工具

黑客的世界里有很多背着历史包袱,设计拙劣,你却不得不用的工具。黑客文化的其中一个作用就是掩盖这些工具的设计失误。这定律被我叫做“都是用户的错”。

你的智商和能力被一些肤浅的标准所衡量,你每天都在提心吊胆的接受各种审查。这两个 Git 命令的区别都不知道?还当什么黑客!哪个学校毕业的?老师连这都没教过你们?哎,算我面试时看走眼了。

于是为了显示自己有能力,接受过良好的教育,你不敢再问这种问题。为了避免再受伤害,为了掩饰自己的“无知”,你变成了一只刺猬。你开始用自己会的那点东西去审查其他人,伤害其它人,以为这样就可以保护自己。这些被伤害的人又转而去伤害更多的人。

Visitor pattern 都不会写?还当什么黑客!这厮今天终于让我抓住把柄了 :)

只有天才才能理解它的简单

某超级大牛说过,我的系统是简单的,但只有天才才能理解它的简单。

你敢说我的系统不简单?哼哼,那你肯定不是像我一样的天才。你知道吗?其实我爷爷的爷爷是给皇帝做衣服的。他的座右铭是:看不见这衣服的人都是白痴或者不称职的人。

所以你不敢说任何东西太复杂,太难用,太不可视化,对用户不友好。否则就会有人鄙视你:菜鸟,白痴,人笨怪刀钝!

择其难者而从之

做一件事有两种方法,一种容易一种难,你会选择哪种?

普通人都会选择更容易的,但是很奇怪的是,受到黑客文化熏陶的人,往往会选择困难的那种。如果这选择只是个人的喜好,如果他们尊重其他人的选择,那还无所谓了。但十有八九,选择了明显更加难用的工具的人,并不会从心底尊重那些选择更加容易的工具的人。这貌似是一种必然的结果。

这其实是心理上的优越感在作怪。很多人选择困难的工具,并不是因为真的觉得它们好用,而是因为只有用其他人不会的东西,才能显示出自己的特殊性,显示出高人一等的水平。由于其根本的动机就来自于优越感,所以他们是不可能不找机会利用这得来不易的优越感的。

有些人虽然可能口头上不说,但他们随时都在观察,看其他人选择了哪一种工具。那些选择了(或者倾向于选择)更容易的方法的人,会在他们的印象中产生一种肤浅的感觉,从而不会真正的被尊重。这种不尊重累积起来,就会开始隐约的表现出来,从而导致同事间工作关系的恶化。当然也有人更加露骨一些,直接就问别人选择了什么工具,然后嘲笑那些选择了容易工具的人为菜鸟。

常见例子:

  • VIM 与 Emacs,选择 VIM
  • Emacs 与 IntelliJ(编辑 Java),选择 Emacs
  • 组合键与方向键(移动光标),选择组合键,因为“并不是每个键盘都有方向键的!”
  • Linux 与 Windows,Mac,选择 Linux
  • Gentoo 与 Ubuntu,选择 Gentoo
  • Terminal 与 GUI,选择 Terminal,使用黑底绿字
  • TeX 与 Word,选择 TeX,拒收 .docx 附件
  • C++ 与 Java,选择 C++

RTFM!

RTFM = Read The Fucking Manual!

(图片来源:Abstruse Goose

惯用法:有人在#java聊天室问了一个问题,结果大家回答说:“RTFM!”“菜鸟,去读了 API 再来这里混!”

你不会 Google (百度)吗?

当这种现象普及开来之后,普通的问题你都不能问别人了。比如:“哎,今天会不会下雨呢?”因为在黑客文化里,别人的回答会是:“你不会 Google 吗!”当然,在中国这句话就是:“你不会百度吗!”

就像 IRC 里面的人一样,我不明白他们为什么在那里面,仿佛他们唯一的乐趣就是告诉别人“你不该问这个问题”,“你浪费了我的时间”。当这种现象普及到更广的社会,你知道会有什么结果吗?任何人都不要再对任何人说话了,因为说话全都是浪费时间。

“你不该问这个问题”这种说法是非常大的攻击行为,它是人类良好社会关系的杀手。其实对别人“该不该问这个问题”的“考虑”本身就是一个错误。我们甚至不应该说“你可以问这个问题”,因为那应该是不言而喻的,想都不用想。

任何人都允许问任何问题并不等于会浪费你的时间,因为你并不是必须回答每一个问题。所以我的做法总结下来就是一句话:我誓死捍卫你问问题的权利和尊严,但我不一定要回答你。比如在 IRC 聊天室,如果遇到有很初级的问题我懒得回答或者太忙,我不吭声就是了。我对问问题的人没有任何反感,我只是等其他人去回答他。但是“你不会 Google 吗!”肯定是非常不礼貌的做法。

你问我,所以你懂的没我多

子贡问曰:“孔文子何以谓之文也?”子曰:“敏而好学,不耻下问,是以谓之文也。”

可不要被孔老二误导了!在黑客文化里,这种不耻下问的行为是相当危险的。一次可能还好,多几次之后,我看你不被当成傻b菜鸟才怪。

希望你向我们学习

进了新的黑客公司很兴奋哈?可是发现代码里有不大好的地方怎么办呢?如果吭声,立即讨人嫌。如果不吭声,那就等于承认了我们的代码是“模范”咯。跟着学吧,小弟。要学像哦!

这就是我们的作法

我们刚从某大公司挖来一个世界级高手。结果他对我们引以为豪的一段代码提出了异议,说那是 premature optimization,思路不清晰。切!

虽然他是世界级的高手,可我们才是这里的地头蛇,所以我们得告诉他:“这就是我们的作法!”

结束语

上面的小片段,估计在你自己的生活中已经出现过很多次了吧?它们也在我的生活中出现过很多次。不同的学校或者公司,有可能出现其中的几种或者全部。其实哪里来的什么“黑客文化”?文化就是文化,管你做什么工作。不要忘了黑客不过是一种工作,跟医生,律师,厨师,教师一样的。所谓黑客文化只不过是为一些人的各种无理怪癖找借口,搞特殊化。

按照以上标准,我不认为自己是个黑客。我是一个计算机科学家,我按照几百年来国际通用的礼节行事。计算机科学家与黑客的区别在于他不只按照工具的手册来完成规定的任务。他经常记不住别人设计的复杂工具如何使用,因为他本人是一个更好的设计师。他审视这些工具的设计合理性,发现蹩脚的地方,然后构思更好的设计方案。他总是嘲笑和自嘲,我们其实仍然生活在计算机的石器时代。

在自己的公司里,我希望创造一个更加人性化的氛围,而不是宣扬所谓的黑客文化。让所有人无论男女,无论水平如何都身心舒坦,受到尊重,可以谈天说地,不耻下问。