VIM之魅(上)

 

VIM之魅(上) 前言

本月,著名的文本编辑器 Vim 迎来了它的 二十大寿 。 凑巧本人最近正在折腾Vim的配置和插件,心头正痒之时逢此佳际,便再也按捺不住写博的冲动。 其实,为Vim撰文的念头早已有之,只是于今为烈。

Vim的全称Vi IMproved(早期名为Vi IMitation),顾名思义是Unix上流行编辑器 Vi 的模仿和改进版。 毫不夸张地说,自从接触计算机以来,见识过无数的应用软件,深得吾心者唯Vim一款而已。 有时用到兴处,不免心生感慨:这才是软件中的极品呢,识之而不荐之简直就是一种罪过啊。 想起Vim还是慈善软件(careware或charityware),而自己从未给可怜的乌干达孩子们捐过一分钱, 更觉有些羞惭。为了心中的负疚感,我也早该为它写点什么了。

谈及Vim的优点,开源、免费、小巧、成熟、跨平台、文档丰富、社区活跃等等固是不假, 但相较其真正的妙处,以上皆不足道。 事实上,这些因素直接影响的主要是软件的使用成本,而非使用价值。 真正卓越的软件,会让深谙其道的用户不惜代价地拥有,因为它最终将带来远超成本的回报。 TextMate (恰好也是一种文本编辑器)便是一例, 虽收费不菲,且仅能运行于Mac, 但仍然吸引了大量的用户。 不少人甚至为了能用上它而专门购买Mac机,正如其开发者所号召的那样: Buy a Mac, get TextMate!

用户对Vim向来毁誉不一:初见者往往嫌其平凡甚或简陋,初试者往往觉其古怪难用, 而熟用者则食髓知味(词虽暧昧,却极准确)并奉为极致。 为何同一产品的评价如此两极分化?Vim究竟有何魅力值得大书特书? 下面就此谈谈个人的一些见解,并分享一些心得。不当之处敬请指正,不足之处欢迎补充。

关于Vim的误解

首先澄清一些对Vim的常见误解。

Vim太古老,与现代编辑器相比早已过时

的确,计算机领域日新月异,一个年届二十的软件算得上是高龄者了。 何况Vim的大部分精华传承自Vi,而后者已三十有五,更是垂垂老矣。 然从另一个角度看,一个软件在漫长时间的洗礼和无数后辈的冲击之下能够屹立不倒, 不正彰显出它的伟大吗?更令人称奇的是:时至今日,Vi/Vim的许多理念不仅没有落后, 反依旧保持领先。关于这一点,容我稍后再述。 此外,Vim本身也在不断地发展,就在一年前还发布了最新稳定版(7.3)。

Vim是程序员(或geek)的玩意,一般人用不上

虽然Vim在程序员手中更能发挥威力,但编程绝非其唯一的用武之地。 除了IT人士,学生、教师、科研工作者、记者、文字工作者等等,凡常需文字编辑者均可考虑使用。

Vim难学又难用,犯不着为区区一个编辑器而为难自己

相比一般的编辑器,Vim的学习曲线无疑陡峭得多,其用法更是异乎寻常。 但从长远来看,对于一个频繁处理文字的人来说,这点投资绝对是值得的。 “磨刀不误砍柴工”的道理谁都明白,可生活中愿意磨刀的人还真不多。 一个常见的例子是,许多经常打字的人宁肯用“二指禅”,也不愿练习盲打。 放着一本万利的事不做,偏去干无本微利的活,与其说是惰性太大,不如说是理性太少。 […]

我的Vim配置(二)

上次讲了一些Vim的基本配置,这次我将介绍三个必装的Vim插件

使用pathogen来管理你的插件

安装vim插件是件很麻烦的事情,首先要把*****.vim文件放到plugin目录里,其次要把文档放到doc目录里,而很多插件还自带了一些文件和目录,久而久之,.vim文件夹就显得臃肿不堪了,你都不知道哪个文件是属于哪个插件的!pathogen就是一个专门对付这种问题的插件。装了此插件后,你其他所有的插件都可以放到.vim/bundle目录下,每个插件对应的是一个单独的目录,这样插件自带的文件就不会混在一起,管理起来就轻松多了!

pathogen的安装我就不多说了,链接里介绍的很清楚。

NERDTree

NERDTree是我装过的第一个插件,它可以在vim里显示目录和文件的结构,类似IDE里的Navigator功能,方便你找到文件,非常好用,安装也很简单,参照链接里的指示就行了。不过我建议你安装Github里的最新版本,命令如下

1 git submodule add https://github.com/scrooloose/nerdtree.git .vim/bundle/nerdtree

它将nerdtree的git repository作为一个子项目下载到bundle目录里,并可以通过以下命令更新

1 git submodule foreach git pull origin master

这样你就可以方便的更新你的vim插件,并同时管理好你自己的vim配置了!

此外,NERDTree的书签功能是我的最爱,我将常用的几个项目地址设为书签,这样就可以很方便的在不同项目间导航!

为了更方便的使用,你可能还需要下面3行配置

123 autocmd VimEnter * NERDTree "启动Vim时自动打开nerdtree let NERDTreeShowBookmarks=1 "一直显示书签 let NERDTreeChDirMode=2 "打开书签时,自动将Vim的pwd设为打开的目录,如果你的项目有tags文件,你会发现这个命令很有帮助

因为我使用的是MacVim,所以我将以上三行放到了.gvimrc里。放在.vimrc里的话,NERDTree会占用很大的空间,而通常终端窗口都很小,所以不推荐。

Command-T

Command-T是一个比NERDTree更好用的插件!使用NERDTree打开文件你还需要从目录树里层层打开文件夹,找到文件再按o打开,使用Command-T,你只需要输几个简单的字符,它就能帮你定位到pwd目录下最匹配的那个文件!类似你在使用google搜索时,下面实时反馈的搜索建议。具体演示可看链接里的第一个视频,非常强大!

然而使用Command-T有一个条件,就是你的vim得支持ruby,通常原生的vim是不带这个这个功能的,不过MacVim没有这个问题,大可以直接安装这个插件。Command-T的安装过程比NERDTree稍微复杂点,需要编译,不过这个文档说得也很清楚了,注意第四节,使用pathogen。

安装好了后就可以直接使用了,添加以下两个快捷键可以让你用的更加顺手!

12 nmap ,t :CommandT<CR> nmap ,b :CommandTBuffer<CR> Github

我将我的vim配置上传到github上了,感兴趣的可以去看看

Related Posts 我的Vim配置(三)(2) 我的Vim配置(一)(0) […]

我的Vim配置(一)

使用vim开发有一段时间了,经常会做些配置装些插件,导致.vimrc变得臃肿不堪,.vim文件夹也很混乱,很多配置和插件自己都忘了有什么用处,所以今天打算好好整理下,写篇博客做下总结,因为要配置的东西很多,所以我计划分成几篇来写。

使用Git来管理vim配置,并使用Dropbox备份

因为vim的配置很多很乱,时间长了难免忘记,所以我打算用版本控制工具来管理,为了避免误删文件夹,我打算用dropbox来将vim配置备份。vim的配置有三部分,.vimrc文件,.gvimrc文件,.vim文件夹,我将他们都设为软连接,指向~/Work/Tools/Vim文件夹下,再将Vim文件夹使用Git来管理(Git是我最爱用的版本控制工具)。再用Dropbox把这个文件夹云备份,这样我就可以高枕无忧的使用vim啦!

程序员通用的配置

下面我就介绍一些vim的基本配置,这些配置不管你是写什么语言的都会用到

12345678910 syntax enable "语法高亮 set nu "显示行号 set ruler "在右下角显示光标的坐标 set hlsearch "高亮显示搜索结果 set incsearch "边输边搜,即时反馈搜索结果,这个可能看个人喜好 set showcmd "在ruler左边显示当前正在输入的命令,提示性的,避免误操作 set expandtab "将tab键改为空格,默认是8个 set tabstop=4 "将tab键改为4个空格 set cindent "使用C语言的规则自动缩进,当你敲回车时会自动缩进,所有类C语言(PHP,JAVA)都试用,比smartindent更智能 set shiftwidth=4 "自动缩进时,使用4个空格,默认是8个

以上就是一些程序员常用的基本配置,我会在后续的博客中介绍更多的配置和插件。

Related Posts 我的Vim配置(三)(2) 我的Vim配置(二)(0) Recent Comments

[…]

腾讯的张小龙是一个什么样的人

有人在知乎上问:腾讯的张小龙是一个什么样的人?下面是我的回答:

15年前,张小龙是中国Top10的程序员。他一个人写代码,完成了Foxmail的头三个版本。Foxmail如此受到欢迎,以至于他不得不外放了语言包,让各种忠实粉丝翻译为十几种语言。直至今日,Foxmail被收购,QQmail推出,Foxmail的企业用户依然有数百万。

在被腾讯收购之后,Foxmail开始了艰难的转变,从客户端转变为Web产品。一开始非常不顺利,最早的版本类似Web上的巨无霸,几乎无法操作。从程序员到管理者,从客户端产品经理到Web产品经理,张小龙度过了极为孤独的三年时光。三年后,他完成了第一次变形。QQmail被腾讯内部称为“七星级产品”。人们经常用一个例子来说明QQmail在产品体验上的细腻入微:如果你在邮件正文里提到“附件”,而你在发送时并没有粘贴任何附件,那么系统会立即提醒:您是否忘了加上附件。这一体验现在Gmail也有了。

QQmail的成功,却让张小龙感觉到焦灼。因为邮箱对于大数量的普通网民而言,依然是一个门槛极高的产品。也许,教会他们用@符号都需要许多年。还有什么是海量网民所需要的产品?张小龙开始了他的第二次转变,从Web工具类产品,进入Web社交类产品。

这一过程大约耗费了不到两年时间,难度比上一次更大,周折更多。张小龙和他的团队最先试验了阅读空间,这是跳出工具类产品的第一个接榫。做阅读空间貌似是一个工具,但是其中会有简单的人际互动。可以观察用户的行为和交互习惯。

阅读空间获得了成功,于是就有了QQ邮箱广播的尝试。这是在QQ邮箱中试图打造一个类Twitter产品的尝试。163邮箱也做过类似的事情,但是这个项目失败了,用户和内容并入了腾讯微博。在邮箱的使用场景下,阅读空间的慢速阅读和深阅读是和邮箱调性相契合的,但是和快速流动的Tweets流却不能相容。

于是,又有了QQ邮箱漂流瓶。这是一场试验,主题是:假设在大用户数量基础上,做轻SNS类应用,尤其是陌生人交友,是否能够获得成功?结果空前成功。每天的漂流瓶达到了骇人听闻的数量级,用户粘性也得到了非常可观的增长。这个试验的副产品是正视了普通网民内心深处是何等孤独。以至于他们愿意一次次用尽写瓶中信的每日三次机会,愿意一次次打捞蓝色页面中转瞬即逝的电子漂流瓶。

第三次转变突然到来,张小龙的目光早已经从Web跳转到了移动互联网。只是一个简单的要求,团队中的程序员就从原来的岗位离开,开始学习手机客户端的编程。原来在QQmail手机随身邮上的经验,被广泛应用到了微信的打造过程中。新的手机团队不是做一个客户端,而是IOS、安卓、塞班三个客户端同时开始做,放出IOS版本之后,立即转安卓做下一个版本,安卓做完转塞班,然后再转回做IOS。这叫全天候手机开发团队。他们喜欢在黑夜里通宵开发,此时广州寂寥无人,适合集中精力并行开发。程序员三五成群,在工作区过道上低声讨论,有的就地开始做俯卧撑,以提振精神。有人把他们称为“矿工”,因为他们总是在黑暗里工作,而他们以这称号为傲。

微信在8个月里就横扫了整个市场,比它炫的没它简单,比它简单的没它快,没有谁比它更快,哪怕在GPRS下,微信也能把进度条轻易推到底。万法归宗,唯快不破。在各家拼单点功能的时候,微信在11年下半年突然跳离主战场,在LBS和视频通话上布下两粒棋子。随即,在LBS上开发了“摇一摇”功能。满城的“卡嚓”声响起,无穷尽的寂寞之心终于有了简单的去处。从Web SNS产品到移动互联网SNS产品,张小龙第三跳只用了8个月。

在这八个月里,微信从无人看好到炙手可热,巨大的转变下让张小龙感觉到更多的是孤独。在11年上半年的一个月时间内,他曾经一篇篇仔细读过几乎所有业界对微信的评价。读过一边倒认为微信无望的论调,读过各种关于微信抄袭KIK和Talkbox的指责。11年下半年,一起都逆转了过来。张小龙依然沉默不语,但是微信3.0的开机页面上放出了迈克尔.杰克逊的图片,边上写了MJ的一句话:“你说我是错的,那你最好证明你是对的.”"谨以此版本纪念迈克尔杰克逊,感谢他的音乐陪伴我们的产品开发之旅。“同年11月,TalkBox放出了TXT和图片输入功能。而此时,微信开始提供自定义透明背景头像、二维码名片,开始试验时尚感对产品流行度的影响。

除了每周一次的网球,和每天深夜的音乐,张小龙没有什么别的嗜好。程序员时代的烟瘾一直保持了下来,他是广州深夜里最大的Kent消费者,沉默到像谜一样的男人,中国为数不多具有文艺气质的产品经理。他是那种因为喜欢《蓝莲花》歌词,就一定要问许巍买下版权,挂在QQ邮箱入口的人。他也是那种喜欢同事小女儿涂鸦,就把一幅涂鸦画和《蓝莲花》一样挂在QQ邮箱入口的人。

如果世界上又出现了什么新鲜的APP应用,在发布后的48小时之内,如果你也下载尝鲜,可能你会遇到个名叫Allen的人,如果这人沉默不语,甚至连头像都没有。那么你也许已经遇见了张小龙。

(以上内容纯属传说,不能对其真实性负责)

补充材料:

小龙喜欢车,但是早年买不起。一次去美国的时候,租了一辆。临走的前一晚,半夜醒来张小龙失踪了。原来,他舍不得告别那车,半夜开出去兜风了。

—陈让回忆录《我所知道的张小龙》

参考资料:

《关于张小龙和他的Foxmail》

《免费软件—饿着肚子挥洒冲动》

《懒散的Foxmail》—《中国共享软件批判》ChinaByte/唐朝

《Foxmail没有梦?》—《电脑报》2000年第12期

《Foxmail作者张小龙成为博大公司副总裁》—新浪科技

《张小龙的方向》—《电脑报》

《张小龙谈如何写E-mail程序》

《程序员张小龙的幸福生活》—《中国青年报》2000年7月24日/陈迎炜

《Foxmail的编写者张小龙:在婆家渐入佳境》《国际金融报》 (2002年01月21日第七版)

《我看到的博大和张小龙》—左轻侯

《腾讯囊入Foxmail收编张小龙,QQ意欲何为?》–PConline/徐财新

《互联网大佬们的平台之惑》—《IT时代周刊》

《走进QQ邮箱》

《强大无敌的QQ邮箱是怎样炼成的?》

《微信与米聊的战争》

鲜花总会长出来,不在墙这边相见,就在墙外面思念。请使用E-mail订阅《槽边往事》:订阅地址

中国大陆访问地址:www.hecaitou.com

 

[…]

像黑客一样写博客——Jekyll入门

Jekyll 是一个简洁的、特别针对博客平台的 静态网站 生成器。它使用一个模板目录作为网站布局的基础框架,并在其上运行 Textile 、 Markdown 或 Liquid 标记语言的转换器,最终生成一个完整的静态Web站点,可以被放置在Apache或者你喜欢的其他任何Web服务器上。它同时也是 GitHub Pages 、一个由 GitHub 提供的用于托管项目主页或博客的服务,在后台所运行的引擎。

你可以去 这里 围观一些现有的使用Jekyll搭建的网站。本站( www.soimort.org )同样亦是基于Jekyll构建。

如果有任何问题,请加入 官方邮件组 的讨论,或访问Freenode上的IRC频道 #Jekyll (chat.freenode.net)。

本中文入门教程由 Mort 基于 Jekyll的官方Wiki 等网页内容翻译整理并维护。

为何要使用静态网站生成器(Static Site Generators)?

不同于 WordPress 这类博客平台(以及其他众多流行的CMS内容管理系统)在服务器端执行PHP等语言的动态框架、访问SQL数据库并动态产生Web页面的工作方式,静态网站生成器的原理十分简单:将所有的页面、布局和帖子集合在一起,预先生成静态的站点。对于动态内容并非必要的站点——例如个人博客,静态网站生成器这样做有几个明显的优势:

快速访问和弱服务器需求

静态HTML页面的载入速度理所当然地更快——因为它无需在服务器端执行任何代码。同时,这还大大地减轻了服务器的压力。

高安全性

基于与上述相同的理由,静态页面有着与生俱来的安全性。不像WordPress或者其他任何动态的框架,静态站点本身并不存在安全漏洞的问题。

版本控制

你无需通过WordPress来维护一整个复杂的数据库——静态站点的内容完全仅由文件系统中独立的目录和文件构成,这意味着你不但可以使用Shell、grep、sed、awk这些传统的Unix工具对它们执行操作和维护,更可以使用 Git 这样的分布式版本控制系统来管理它们,并且享受版本控制所带来的一切好处,如同维护任何软件项目的源代码库一样。你甚至可以重新生成以前任意时间点的整个网站!

简单部署

一旦静态网站生成以后,任何Web服务器都能够轻易地部署静态站点,而无须在服务器端安装配置其他任何多余的东西。你所需要做的仅仅是通过git、rsync甚至ftp简单地上传文件到你的托管服务器。相比之下,WordPress博客的维护显得复杂得多,你可能需要在你的开发服务器和托管服务器上安装、配置一整套LAMP+WordPress平台,并经常性地升级版本和维护。这是个繁重的技术活。

文本编辑器和自由格式书写

也许你不这么认为,但是作为一个hacker而言,在浏览器中一个300×300的文本区里码字写博客并非一件很酷的事情——如果你使用Jekyll这样的静态网站生成器,你就可以用你喜欢的任何文本编辑器(vi、emacs……),用你习惯的标记语言以书写文本文件的方式来直接写博客文章(就好像你平常写代码一样),避免了使用那些简陋和功能有限的Web界面。

1. 安装

Jekyll使用动态脚本语言 Ruby 写成。请首先 下载并安装Ruby(中文) 。

[…]

文档方法论——Programmers(31)

载于《程序员》杂志2011年第11期。

画这一期的时候正在备考雅思的紧张时期。所以不得已 富坚义博 附身。。。。。。。。

这个系列的漫画讲述程序员——这种神秘人类的囧事,故事多来源于我身边的程序员朋友,且以互联网开发背景为主。

如果你有什么可乐的关于程序员的故事、对话、代码,愿意通过漫画的形式分享,请给我发邮件。arthur369@gmail.com。

有效警告——Programmers(30)

载于《程序员》杂志2011年第10期。

感谢 @richterlee 的创意

这个系列的漫画讲述程序员——这种神秘人类的囧事,故事多来源于我身边的程序员朋友,且以互联网开发背景为主。

如果你有什么可乐的关于程序员的故事、对话、代码,愿意通过漫画的形式分享,请给我发邮件。arthur369@gmail.com。

怎样花两年时间去面试一个人

Joel Spolsky曾经感叹:招聘难,难于上青天(此处笔者稍加演绎:))。他有两个辛辣但不乏洞察力的断言:真正的牛人也许一辈子就投大概4次简历,这些家伙一毕业就被好公司抢走了,并且他们的雇主会给他们不赖的待遇,所以他们也不想挪窝。(刚刚去世的Dennis Ritchie就是这样一个人)而“人才”市场上能找到的大多都不是什么人才。招到这帮人轻则费钱重则把你公司搞挂。

(当我把这篇文章给邹欣老师review的时候,他说了另外两点:1. 最好的人也许不投简历,就决定去哪里了。所以要在他们做决定前找到他们。2. 比较差的会投很多次简历,找不到工作的时间越多,投的简历越多,给整个pool 带来很多噪音,top10%的简历也许根本不算全部人的top10%。)

诚然,也许没有哪个行业像IT行业这样,无形资产占据公司的绝大多数资产。拒坊间传言比尔·盖茨就曾经说过类似这样的话:只要允许我带走100个人我可以再造一个微软。这话没搜到原版出处,但是从一个侧面反映了IT公司当中智力资产所占的比例之重。

所以一个自然的推论就是,招聘也许是一个公司决策当中最最重要的一个环节。Joel Spolsky把他在这方面的观察,体会和洞见集结成了一本小册子《Smart and Gets Things Done》,开篇就挑战“产品是公司成败的关键”这个传统观念,他认为创造最适合工程师生活的环境,留下最优秀的人才才是最先最重要的一步,接下来好的产品是水到渠成的事情。国内iapp4me.com创始人郝培强正是这个理念,所以他在微博上说:

我们是小公司,工资开的不高,也不招太多的人,但是电脑都是iMac27,iMac21,Macbook pro15,基本上比很多大公司都好多了。软件没盗版,刚才photoshop的正版我也收了。中午管饭,公司备伞。哈哈。节日假正常放,从不加班,早晨11点上班,下午6点下班。我是有资格说某些大公司的员工苦逼的。

事实上,米国找个人尚且难成这样,搞得Joel还费心费力写本书语重心长地劝企业们要善待好工程师,国内找个人更是难上加难,国内高质量问答社区知乎创始人周源就曾经在知乎上分享他呕心沥血的招人历程,看完真是让人慨叹这年头找个靠谱的人多不容易(这条知乎问答还有很多精彩的跟帖):

其实从 08 年到现在,我一直想这事能不能有点窍门,或者是实用的方法,结论是几乎没有。我用过的大家都用的方法:

在水木上发贴子(有点效果) 在蓝色理想上发贴子(无效) 在技术邮件组里发贴子(无效) 买 51job/智联 最便宜的服务(有点效果) 给所有可以想到的人打电话,请他们推荐(无效) 给所有和你讨论过创业,喝过点小酒的人打电话(无效) 约前同事私下谈(有效)

我用过的大家可能没有用的方法:

上 twitter,看 XXX 的 follower,一个一个看,看他们的 twitter,博客,Google Reader 分享,想办法搞到邮件,联系,半夜电话骚扰。 上豆瓣,前端后端挑几本重量级的书,去找想看,看过,正在看这本书的人,一个一个看,看他们的活动,博客,Google Reader 分享,想办法搞到邮件,联系,半夜电话骚扰。 找同事,问他们都看什么技术博客,想办法搞到邮件,联系,半夜电话骚扰。

正是这样的不容易,才有不少公司走内部培养的办法,这里的逻辑是:一上来就招到靠谱的人太难了,但找一块靠谱的璞玉然后雕琢雕琢相对就简单很多。这倒是个办法,但这样做的人难免就陷入了纠结:培养好了,人跑了怎么办。这也不能怪招聘的公司,的确是人之常情。其实解决的办法也很简单,培养的时候进行适当引导,让员工发挥自己的主动学习能力,这样不但人得到更多成长,公司也不会觉得投入太多患得患失。所谓师傅领进门修行在个人。

但是,这仍然还是没有解决根本的问题,就是招聘真的很困难。应聘者固然觉得自己是在“海投”,大海捞针一般。而招聘者何尝不也是这种大海捞针的感觉。这就好比两个人谈恋爱,都想和对方好上,但是偏偏就聊不到一块去。

招聘真的很困难。以至于招聘者每年需要绞尽脑汁出新笔试题,以免往年的笔试题早就被人背熟了。出题很费脑子,要出的不太简单也不太难,能够滤掉绝大多数滥竽充数的但又要保证不因题目不公平而滤掉真正有能力的,要考虑审题人的时间成本就只能大多数用选择题,而选择题又是可以猜答案的(极少有人会在选了答案之后还敢在空白的地方写为什么选某答案的原因的)。更悲催的是,有些题目出的连公司的员工们自己都会做错(真的是员工们做错了吗?还是题目本身就出错了?)

笔试完了之后如果还没有被鄙视就要进入面试环节,姑且不说笔试题的种种弊端,就说面试环节,短短几个小时的面试(大多数公司也许连几个小时的面试时间都没有),既需要全面考察基本知识,又要考察编程素养,还要考察(也许最重要的)性格心态。再然后还有一项根本没法考察但却占据程序员相当一部分工作时间的:debug能力。面试官不但得找准问题,不因对方一题答对而妄下结论,也不因一题打错而就扼杀机会,还要以管窥豹,从一朵花看到整个世界,从面试人的举止言谈,分析问题的方式,甚至写程序的笔迹来观察这个人的性格,做事的方式和心态,简直是要面试官具备心理分析师的水准才行。

这厢要招人的雇主苦不堪言,那边找工作的人也是一团乱麻。绝大多数应届生直到毕业也不清楚他们想要去的公司到底需要什么样的能力,或者说,他们到底需要具备什么样的能力才能在应聘季节拥有自己的选择权。中国虽然本科教育环境差,但是同样有很多的人在本科希望整点东西出来,他们有一腔的激情和抱负,有强大的动力,但就是不知道自己需要掌握哪些技能才能满足雇主的要求,求告无门,整年整年苦闷的像没头苍蝇一样乱撞(我就收到过很多次这样的来信,他们往往很想学点东西,但又不知道哪些重要哪些不重要,到底该学到什么程度,不知道导致不确定,不确定导致决策瘫痪,干脆嘛也不动,荒废时间)。

什么叫熟练?什么又叫精通?那么扎实呢?两年的YY经验又意味着什么?能这么简单的量化吗?同样是两年的“实践”有的人能真的学到点东西,有的人也许近似一无所得。那么实习呢?很多人都一定要在简历上弄个实习经验,这个又能说明多少问题呢?大作业呢?得奖呢?有一次我面试一位同学,据简历说编译原理课的大作业得了一等奖,可我一问什么是递归下降,就傻眼了。

这个现实的结果就是,现在绝大多数应届简历而言,也许最具信息量的部分不是“精通XXX,熟悉YYY,掌握ZZZ”,不是“在UUU实习过”,也不是这个项目那个作业,反倒是越来越被认为不重要的一项:毕业学校。毕业学校本不应该是最具信息量的,它之所以最具信息量只是源于一个悲剧的事实:简历上其他条目实在信息量太少了。所以靠谱的面试者往往学会了无视简历上华而不实的内容,只相信面试的时候亲眼所见,扫两眼简历也就罢了,最后还得自己捋起袖子慢慢面。而应聘者也许也知道招聘的也不会细细纠简历上的条目,所以什么词也都敢往上捅,反正先过了HR筛简历这关再说。从经济学角度来讲,应聘者的这种策略是正确的,没有代价(因为目前似乎没有公司会去给已经申请过的人做一个诚信数据库),但至少有可能会带来巨大的收益。应聘成了博彩。而博彩式的应聘给招聘公司带来了巨大的筛选压力。简历成了摆设。

那么招聘这个关系里面的第三者——学校——所处的位置呢?学校更关心的是毕业率和就业率,这似乎是件好事,有这个为目标,那么老师们似乎应该努力让自己的学生多学点东西。可惜就业的质量似乎不是最重要的指标,此其一。其二老师本身大多数没有丰富的业界经验,根本不知道企业整整需要的人才是什么样的,可能花了精力,但却培养不出雇主真正需要的人。另一方面,老师所起的作用很多时候甚至是一个负面的作用,例如布置大作业表面上看上去是培养学生的能力,我们姑且不说抄袭,假设每个人都做了,那么大作业本身能够衡量多少东西呢?能否衡量代码质量,能否衡量团队协作能力?能否衡量交流能力?考虑到大作业用到的东西往往都是书里面现成的,大作业甚至不能衡量学习能力。而学习能力简直算是这个行业最重要的能力没有之一了。

所以,简而言之,如果把人才培养/招聘这件事情本身类比做一个项目,那么这整个项目迄今为止就是一个巨大的失败。为什么这么说呢:

和需求严重脱节:作为人才需求方的雇主的需求到底是什么?绝大多数应聘者都没搞清。更严重的是,这却一点都不是应聘者的错。因为雇主是stakeholder,是雇主自己的责任得去说清楚需求是什么。结果应聘者实现的不是雇主想要的,雇主想要的应聘者没有实现。 应聘者雇来培训自己的人根本不管事:学生交了学费,就相当于雇老师来培训自己,可培训者根本也不了解(或不关心)他的客户们的需求。这里,学生是需求方,老师则是实现方。弄清需求的职责在后者,可后者也弄不清。 学生自己也弄不清:学生自己既是需求方(需要特定技能),也是实现方。可他们自己也弄不清需求到底是什么。

以上三点还不是最严重的,最严重的在下面:

[…]

SteveY对Amazon和Google平台的长篇大论

Steve Yegge, Amazon的前员工,现任Google员工,其本来想在Google+上和Google的员工讨论一些关于平台的东西,结果不小心把圈子设成了Public,结果这篇文章就公开给了全世界,引起了剧烈的反应。发布后很快他就马上把这篇文章删了,不过,互联网上早备份了下来——SteveY’s Google Platforms Rant。后来,Steve在其Google+上作了一些解释,大体是说他喝多了,而且又是在凌晨,所以大脑不清,文章中的观点很主观,极端且不完整,还有Google的PR对他很好,等等,等等 。

几个星期前看到时就一直都想翻译一下这篇文章,不过因为最近事情太多,文章又很长,所以现在才翻译完成,翻译的不好,还请大家指正。

导读

在你阅读正文以前,我想说明几点,希望你注意一下:

Steve这个人非常喜欢写长篇大论的东西。而且比较喜欢辛辣调侃和恶搞的文风,这点大家要注意! 文中先“骂”Amazon公司,再通过“骂”Amazon的创始人贝索斯Bezos并烘托出他的的悟性和雄心,最后教育了一下Google。 我把文章分成了三个部分,这样方便大家阅读和讨论。第一部分只是个人情绪化的抱怨,第二部分是说Amazon的成长,第三部分是教育Google,我觉得第二部和第三部分是重点。 对于我们来说,我们应该获取Steve那些关于平台(Platform)相关的那些有价值的观点。尤其是他说的Amazon如何进化成一个平台性的公司,以及阐述Google应该怎么做的那些观点。 关于对Amazon的那些指责,我想说,6年,对于一个世界级的互联网公司,已经很不一样了。 正文 第一部分

我曾在Amazon工作了六年半,现在,我在Google的日子也差没不多这么长了。对于这两家公司,有一件事总是萦绕着我——这种感觉一天比一天强烈──那就是,Amazon每件事都做错了,而Google每件事都做对了。当然啦,这是很笼统的话,但却是惊人的准确,相当的疯狂吧。大概有一百甚至两百种不同的地方可以让我们去比较这两个公司,而Google可能在每一项都能胜出,如果我记的没错,除了其中3项以外。因为,我曾用电子表格把这些项都列出来了,只是法务部门不会让我给任何人看,即使人事招募部门很喜欢这个报表。

这里,让我先给你个例子让你稍微体会一下:Amazon的人事雇用流程有根本上的缺陷,因为各个团队各招各的人,以至于,各团队之间的招聘标准相当的不一致性,即使他们通过各种努力来统一标准,但是实际操作上却是一团糟;他们没有真正的SRE(陈皓注:Site Reliability Engineer ),工程师们什么事都要做(陈皓注:所谓SDE – Someone Do Everything)、几乎没时间编码。当然,不同的部门有不同的情形,不过,这取决于你的运气。他们不搞慈善,也不帮扶贫困人群,也不搞社区贡献,或是其它相似的活动。在那里,他们从来不谈这些,或许只有在说笑话的时候才会提到。他们的办公环境是个灰尘及污迹四处的像农场一样的隔间,他们在公共区域连一分钱装修的都不会花,而且,他们的薪水和福利相当差,只是近来与Google和Facebook竞争人才,这个差距才变得非常地小。不过,他们没有我们有的津贴或额外奖金——他们只是给你录用信上的那个数字,就这么多。他们的程序代码完全就是灾难,无论什么都没有任何的工程标准,除了各别团队有一些。

公平起见,他们的确有套非常非常不错的版本控制管理系统,而这是我们(Google)需要尽力赶上他们的地方,他们还有一个漂亮的发布/订阅系统,我们也没有相对应的东西。不过,就大体而言,他们有的不过是一堆蹩脚的工具,用关系数据库来读取或写入状态机里的信息中罢了。我们不应该这么搞就算这样做是可以。

这就是我所所说的那3件事中的两件事Amazon比Google强的,那就是的他们的发布/订阅系统以及版本控制和管理系统。

我猜你也许会为他们争辩到——他们要更快更早地推出服务并通过狂热地迭代来不断地改进和完善。他们把服务发布的优先级看得比任何事都重,包括工程纪律或是其它一堆可能会让其花时间的事务。所以,即使这么做让他们在市场上有了某种程度的竞争优势,但也造成其他足够多的问题,总之,这样的做法算不上是个漂亮的扣篮。

但是,他们有一件事做的非常非常好,其好到可以把其他政治,理念,技术上的消耗和混乱完全弥补回来。

第二部分

Jeff Bezos是个臭名昭彰的微管理经理人,他的微管理都管理到了Amazon零售网站上的每一个显示像素。他雇佣了Larry Tesler——Apple的首席科学家,他可能是全世界最有名也最受尊敬的人机交互接口专家,然而,Bezos忽略了Larry三年来提出的每一个建议,直到Larry最后——明智地——终于离开了公司。Larry本应做一些大型可用性(Usability)研究,并可以系统地了解那个根本就没有人能够搞懂、使用那该死的网站,可是,Bezos对于那些像素不放手,这些页面上的那几百万个显示像素就像是他的孩子一样。所以,他的这些孩子还留着,而Larry没有。

当然,微管理不是第3项Amazon做的比我们好的事。我的意思是,没错,他们微控管理做地非常地好,但我不会把这项列在他们的强项清单上。我这样说只不过是为了我下文做铺垫,帮助你了解我后面要说的事儿。我们现在要说的这个人,是在多个严肃的公开场合说要来Amazon工作就应该付他钱才对的人。当有人跟他意见不同时,他会递出写有他名字的黄色即时贴以提醒那个人“谁是公司的老大”。这家伙是……,Steve Jobs,我想,除了没有品味和设计能力,他们很相似。千万别误解我,Bezos是个绝顶聪明的人,只不过他把那些正常的管控搞得像嗑了药的嬉皮士一样罢了。

所以,有一天,Jeff Bezos下了一份命令。当然,他总是这么干,这些命令对人们的影响来说就像用橡皮槌敲击蚂蚁一样。这个命令大概是2002年,我想误差应该是在正负1年内 —— 这个命令发布的范围非常地广,设想很大,让人眼珠子鼓出来的那种,这种惊讶程度和其他的命令相比,就好像你突然收到公司给你的奖金一样让人惊讶。

这份大命令大概有如下几个要点:(陈皓注:这里是本篇文章的要点!如果这真是Bezos发出来的,那么太赞了,Bezos完全就是一个系统架构大师啊,那可是2002年左右啊。作者调侃Bezos完全是正话反说啊)

1) 所有团队的程序模块都要以通过Service Interface 方式将其数据与功能开放出来。(陈皓注:Service Interface也就是Web Service) 2) 团队间的程序模块的信息通信,都要通过这些接口。 3) 除此之外没有其它的通信方式。其他形式一概不允许:不能使用直接链结程序、不能直接读取其他团队的数据库、不能使用共享内存模式、不能使用别人模块的后门、等等,等等,唯一允许的通信方式只能是能过调用 Service Interface。 4) 任何技术都可以使用。比如:HTTP、Corba、Pubsub、自定义的网络协议、等等,都可以,Bezos不管这些。(陈皓注:Bezos不是微控经理吗?呵呵。) […]

Category

Archives