退出VIM

前段时间,Stackoverflow博客上发布的一篇名为“Stack Overflow: Helping One Million Developers Exit Vim”的帖子。有些同学对此表示十分震惊,遂尔进行了狂风暴雨般地嘲讽。

论调大概是:

“这么低级的问题也需要问?”
“vim都不会的人是有多蠢啊”
“Stackoverflow里面果然都是这种弱鸡问题……”

我想说,这次我真的要故意唱唱反调。作为一个混迹Stackoverflow一年多,拿到2000+ reputationsStackoverflow迷弟,已经听到过太多“Stackoverflow里面都是弱鸡问题”这种言论了,我还是要屡败屡战地自辩下。

好,下面开始品尝这碗“极端左”煲的重口味鸡汤

提问时间

我想问几个问题,当然,都是问我自己:

  • 当我们使用新工具、新技术遇到问题的时候,怎么解决问题
  • 怎么问一个完美的问题,或者问得更刻薄点,我觉得自己会问问题么
  • StackOverflow中,我学到了什么

下面我逐一回答下上面提出的几个问题。

问题A

当我们使用新工具、新技术遇到问题的时候,怎么解决问题

先看看帖子中提到的退出VIM问题,问题的描述是:

I’m stuck and cannot escape. It says:
"type :quit<Enter> to quit VIM"
But when I type that it simply appears in the object body.

很显然,这哥们是在VIMInsert Mode想退出VIM。他这个时候就算扫一眼VIMMan Page,也是拿不到答案的。他显然已经尝试了VIM User Manual之类的文档,知道了输入:quit可以退出。这些文档可能也有说明如何退出Insert Mode,但是,这位哥们是不太可能以一个刚接触VIM的新人的状态从冰冷无法交互的文档里面找到答案的。

对于一些的工具、技术,我还没有探索出里面的规律,还没找到通过自己研究、尝试来解决问题的有效方法。RTFMRead the f**king manual)这时候可能并不是最有效的办法,那么我只能够STFWSearch the f**king web)了。或者更通用点,我这时候会选择,不论是问GoogleStackOverflow,还是问同事,当然,我更建议先问GoogleStackOverflow

所以对于上面的论调:

“这么低级的问题也需要问?”
“vim都不会的人是有多蠢啊”
“Stackoverflow里面果然都是这种弱鸡问题……”

对于熟练使用了VIM的同学而言,这个问题当然是弱鸡到不行,但是我倒觉得这哥们使用了非常正确的方式,他在StackOverflow上提出了问题,并拿到了解决自己问题的答案。

问题B

怎么问一个完美的问题,或者问得更刻薄点,我觉得自己会问问题么

再回头看这个被阅读了100+w次的问题:

I’m stuck and cannot escape. It says:
"type :quit<Enter> to quit VIM"
But when I type that it simply appears in the object body.

PO主其实问了一个很好的问题,介绍了自己面临的问题、问题的现象、自己做过的尝试,从而很快拿到了想要的答案。我不觉得这值得嘲笑,反而非常值得学习。

StackOverflow里面有一篇“帮助”专门讲如何问问题的,在这里顺便翻译一遍:

  • 搜索、再搜索;就是先在网站里面已有的问题里面搜索,看
  • 选一个能简要说明问题的标题
  • 在帖代码之前描述地介绍你的问题
  • 帮忙可能帮你解决的同学复现你的问题
  • 加上所有相关的tag
  • review一遍你的问题,假设你自己是第一次看到这个问题
  • 提交问题,回复问题相关的评论

这篇“帮助”后面还介绍了另外一篇关于问问题的有名的帖子:“How To Ask Questions The Smart Way”,这篇帖子还有好人贡献了一个中文的版本

问题C

StackOverflow中,我学到了什么

刷了这么久StackOverflow,除了让自己问问题的方式变得更聪明、更专业了一点之外,我还收获了什么呢?

开扩了眼界,从而在解决问题时有了更多的思路

这个问题里面,我认识了iTerm2 Badges,让我能在使用iTerm2码代码时方便地知道我当前的磁盘使用率、使用的WIFI名、Git仓库等信息;从这个问题里面,我认识了Applescript,让我能通过Applescript脚本操作Tunnelblick完成了公司VPN的一键登录,从此,登录和切换VPN基本没有成本……

关注一个tag的问题时,总会发现其它相关联的tag,就会去想,这个tag是什么鬼,然后就能get到新技能,有了新技能,就在解决问题时多了一些可能性了。

能从StackOverflow受益这么多,我要特别感谢sayakiss。一个偶然的机会看到sayakissStackOverflow页面,很是敬佩,于是,注册了帐号开始刷起来了,得以体验其中的乐趣。

关于StackOverflow

StackOverflow有几点我觉得很值得借鉴:

  • 反馈。问了好的问题,或者问题回答得好,都可能会得到Vote Up,从而增加reputation,获得一些badge。是的,这些并不是物质奖励,但是能让你获得成就感,当你付出时间和智慧回答了一个问题之后,在ACHIEVEMENTS里面收到+10的通知的时候,非常惬意。
  • 自维护。StackOverflow里面一些对问题修改的判定,并不是由专门的网站运营人员来判定的,而是由网站的资深用户(需要满足相应的reputation方面的限制)来仲裁,参与仲裁的同学会获得一些badge。就这样,不仅让用户感觉到更有话语权,也节省了很多维护网站的人力,非常聪明的策略。
  • 不八卦。StackOverflowGithubsegmentfault不一样,是无法follow其它用户的,也有人在网站里面问过这么做的原因。Jeff Atwood博客里面说过:

    We’re not building some hyper-viral social networking tool like Facebook or MySpace or LinkedIn where we try to game you into hanging around and socializing and building lists of fake friends to get results

总结

退出VIM,退出vainignorantmean

参考