德鲁克真的过时了吗?

前不久听到Paul Graham的一段演讲,其中提到的几句话把我笑疯了。我觉得他真的描述的太形象了。的确就是这样!他这样描述绝大多数的公司环境:

每个人都需要在工作时间出现在公司里面。后面的逻辑是,虽然公司没法保证每个人都在工作,但至少可以保证每个人不在玩儿。只要你不在玩儿,那你一定在工作,对吧?

在公司的环境里面,真正工作的时候,看起来特别象在偷懒,你在发呆,在踱步!而不创造任何东西的时候,看起来是在工作,比如作为一个非主角的参会者,你只需要窝在椅子里面,表现出专心的样子就好了。时间很容易就这样舒服的过去了。

因为到现在为止,还没有见过真正有什么好办法衡量脑力劳动者,比如作家,或者程序员。因为无法衡量,只能用平均的方法,好的程序员比差的可能好一百倍(准确地说,一个在创造巨大价值,一个在摧毁价值),但工资差别超过5倍就有人叫不公平了。根本是因为连开发者自己都无法衡量自己的价值。

这就让我想到我们现在的公司组织方式。我们的管理大多传承自德鲁克老人家。他是在工业革命之后为了管理生产线的工人开始考虑管理,并由此产生的现代管理学,但这种方式对于2012年后的互联网公司是否还是最佳的模式呢?

谁创造价值谁保留价值

现在的公司结构,包括创业公司,还是使用雇员和雇主的关系为主。是不是现在的投资商和创业者的关系是一种更先进的关系呢?这两天我一直在思考,对于公司里面任何一个工程师写的东西,如果这是一个独立的公司,他的估值将会是多少?我会觉得有的一钱不值,我不会花钱去买这个产品的。有的,可能我愿意花20万,甚至上百万去买。看看现在的移动互联网创业世界,大概也是这样的两级分化。好的作品,它的市场价值是远大于任何人能够拿到的工资的。

如果用一种Investor/Startup的模式去改造现有的公司,会是一个什么样的场景呢?

Developer是创造价值的人。他们写的程序(我是指好的程序)在提高很多人的效率。他们创造的价值如果有好的方式显现,并且让他们可以保留创造的价值,一定会极大的促进每个人的价值创造活动。

但衡量太难了。所谓公司,就是很多人一起做一件事情,因为现在很少能一个人把从程序,到服务器,到财务到销售到市场,到客服的所有事情都完成。一旦很多人在一起工作,就很难分得开HR和Dev的工作到底占得比例是什么,所以只能平均。即使西方资本主义国家,他们的公司内还是相当的共产主义的,基本上是大锅饭。如果一个人比另外一个人多了5倍的工资,大家会喊不公平,但在收购的时候,付给被收购的公司几百万美金,大家觉得很正常。这就是因为被收购公司有市场价格,但内部的员工没有。

Open Source的方式或许可以一试

如何打破现在的公司机制?开源社区的方法或许可以一试。

第一,灵活的工作场所。家里有时其实是比公司更高效的工作场所,至少可以保证有一个可以关起门的房间。开源社区的工作很多是在家里完成的。

第二,结果导向。当一个开源社区的产品发布的时候,没有人在乎作者在哪里,每天是不是“看起来”工作努力。大家要的仅仅是优秀的软件,而且大家可以容易的判断这一点。

第三,署名!!!!我刚刚注意到这一点。为什么在出版领域,作者,记者,专栏作家,甚至blogger,微博,都是署名的,而只有程序员在大多数软件和互联网公司是不署名的?署名是很重要的权力,为什么号称先进的软件/互联网行业没有采纳呢?

第四,公众检验。开源社区的好处是,它让我们不封闭与自己的小环境里面,更好的判断。想想一下,如果当知道自己的代码即将署名的公开给整个世界,作为程序员会有什么心里变化?开源和署名让好的和坏的都一起暴露在公共世界,而这可能是合理的衡量程序的好坏和结果的最好的方法之一吧。

2012年9月6号,我们就会尝试这种方法,开始逐步把一些代码开源,小排Hax的项目将在那个时候开源发布,把我们的代码供大家随意浏览,无偿使用。我会把尝试的结果在晚些和大家分享。

P.S. 最近我受Paul Graham影响很大,很多的想法直接或者间接受Paul影响,好的想法归他,不靠谱的归我。

用专业语言表达,用通用语言沟通

起因

这几天读文章,遇到一个新词,叫gape。原文是:

I stood there gaping for a few seconds.

啥意思呢?赶紧查字典,字典的解释是:

Stare with mouth widely open.

原来是张着嘴巴瞪着眼睛的意思,是一个stare的动作加上一个张嘴的动作。那什么是stare呢?英文解释为

Look directly and fixedly.

如果自己品味这些词,你会发现语言的定义和编程多么相像。我们有两个函数:

function gape() {

stare();

mouth_widely_open();

}

 

function Stare() {

fixedly(directly(look()));

}

语言就是这样迭代,用简单的词,加上一些修饰词或者加上另外一个意思,组成一个新的意思,并且定义为一个新词。

语言就是迭代的定义

三年级的小学生就把最基本的词学完了,但这远没有到掌握语言的地步。还有大量的基本词定义出来的词,还没有学。这其实并不阻碍表达,但表达得会啰嗦。比如一个小学生不会说stare,但会说:look directly and fixedly。甚至还会说:look directly and fixedly with mouth widely open。他本可以说:gape。前者不但啰嗦,而且很难进一步在此基础上表达,同时一旦表达的复杂性增加,不容易理解。

编程就是这样。如果look directly and fixedly常被使用,程序员会定义函数为stare,stare with mouth widely open足够常用,就会定义函数为gape。如果在一个特定的群体里,一种奇怪的动作 gape with left legs kicking and right hand swinging 要是真的用得多了,他们就会定义一个新的词,比如说gakiswing什么的。这就是术语的由来,也是黑话的起源。

用现有语言定义更加专业的语言,最大的风险在于,如果听的人没有学过这个单词,就会抛出 function undefined 错误,沟通的效果就没有达到,这是高效和准确的定义带来的麻烦。

整个计算机领域的封装,重用就是在定义语言,不得不说,语言是有高级和低级的(不带任何褒贬含义,就是定义的底层称之为低级,由此定义出来的为高级)。为了表达效率的提高,应该不断的构建,致力用更高级的语言写程序,就可以用别人画的时间的零头完成同样的功能。

公司的黑话

对于公司也是这样。多年来我发现一个有趣的现象。一个好的公司,常常是黑话多的公司。为了效率,大家不断的发明缩写,再发明缩写的缩写,说得多了,让外人和新来的员工摸不着头脑。比如麦当劳里面喊的:“墨卷辣堡中薯小可外带” 一样。只要听的人也有同样的定义,这比顾客的语言高效多了。

如果你听到一个公司里面有很多你听不懂的东西,说明他们在努力的创造着些什么。黑话的名词多(如果愿意你可以定义为“黑名”,呵呵),说明他们建造了些东西,可能是系统,工具,场所或者概念(比如百姓网的牧野,官渡,菩提树什么的)。黑话形容词的出现,说明自己在定义标准(“熊猫一样的”);而黑话动词是在定义行为方式。这些定义和积累,是一个公司不同于其他公司的长久的文化基因。

大众沟通

高级语言有一个问题,就是它只能在一个非常有限的小环境使用。它的目的是为了效率和准确。如果对于大众沟通,我们就必须重新回到最通用的语言上来。乔布斯在公共演讲的时候尽量用短句,用小学生都能听懂的词,是为了沟通。再准确的词,一旦受众脑子里面没有定义,还不如用最简单的每人都有的模块。我们必须意识到大众沟通时我们必须妥协的东西,以及在公司内部或者自己一个人写程序时候没有这种妥协多能带来的巨大的便利。

所以,我们应该努力建造自己的词汇系统来表达,尤其是在计算机的世界;而在和很多人沟通的时候,尽量把自己限制在一个通用词的范畴里面。

所谓之,用专业语言表达,用通用语言沟通。

王逸凡的十万个为什么

今天晚上又是一个十万个为什么之夜。早早的就和他一起在床上聊天,他开始问我问题,从9点一直问到了11点多。当我想起来拿手机纪录他的问题的时候,已经过去一个多小时了。我很惊讶于5岁的小孩子对于世界的敏感。等小家伙睡着了,我根据剩下一个小时的录音整理了一些他问的问题。看完你就会发现5岁的孩子的世界是多么丰富,思维多么跳跃,视角多么宽广。

  1. 扫描仪扫描的时候为什么有亮光?
  2. 复印机是怎么工作的?
  3. 为什么打印的时候纸是一跳一跳的出来的?
  4. 出了A4,A3纸还有别的纸吗?
  5. 是不是号码越小纸越大?为什么这样编排?
  6. 名片那么大是几号纸?
  7. 那里可以看到A1纸?
  8. 电脑里的照片是怎么转到纸上的
  9. 为什么家里的打印机打出来纸湿湿的,你们公司的那个是热热的?
  10. 我说话你为什么能听到?
  11. 声音是怎么从嘴里发出来的?
  12. 为什么那次去你们公司你的们的音箱响的时候摸起来一振一振的?
  13. 为什么电脑里存着音乐的名字,音箱就能变成声音?
  14. 今天游泳为什么游泳圈能浮起来?
  15. 游泳圈为什么要充气?
  16. 我这么重游泳圈为什么还能把我托起来?
  17. 大轮船那么沉为什么也浮得起来?
  18. 我们的灯这么大为什么一根铁丝就能吊起来?
  19. 灯为什么会亮呀?
  20. 灯是工人来安的,灯泡是我们在家乐福买的,为什么他们能装在一起?
  21. 为什么灯泡得放在灯座上才能亮?
  22. 灯为什么这么热?
  23. 为什么电线不热灯会热?
  24. 为什么那么烫绷不断电线?
  25. 为什么打牌的时候两个一样才能出?
  26. 为什么跑起步来就会出汗?汗是从什么地方出来的?
  27. 出了汗怎么一会儿就不见了?
  28. 电是用什么做的?
  29. 是什么东西到电工厂变成电的?
  30. 为什么空调一开外机就会转?里面有什么?
  31. 车里面的发动机为什么会转?
  32. 空调里面的风是从哪里来的?
  33. 为什么车里的通风口里的风是冷风,空调外机的风是热风呢?
  34. 为什么空调里面要往外流水?
  35. 为什么喝水我的嗓子也不疼了,用加湿器吹风我的嗓子夜不疼呢?
  36. 为什么今天我们吃火锅的时候把锅往那个板子上一放就会热?
  37. 为什么我们在家里煮饭的煤气灶和火锅的煤气灶不一样?
  38. 为什么吃的要放在冰箱里呀?
  39. 为什么在冰箱里就不会变坏呢?
  40. 那为什么豆瓣酱刚买回来放在柜子里,后来又放到冰箱里了呢?
  41. 减速带是干什么的呢?为什么会减速呢?
  42. 为什么公交车和地铁的门最低下有一排扫帚,就是一排毛?
  43. 为什么公交车每站停下来就放个屁,就是嘁。。的一声?红灯的时候也嘁的一声。
  44. 为什么公交车走一段就颠一下,我们大白车就走好久才颠一下?
  45. 为什么地铁二号线没有屏蔽门,3,4好线都有屏蔽门?
  46. 为什么二号线的车头是平的,其他的车的头都有一个斜坡?

我暗自得意,幸亏都是物理方面的问题,我就物理好,什么电呀,力呀,声呀什么的。我跟他妈妈炫耀说,小家伙的所有的问题我都答上来了,还好没问化学问题。逸凡立刻问:“什么是化学问题呀?”

 

Python的确是非常棒的语言

早上6点半爬起来,花了几个小时学习Python。

只能感慨我来晚了,晚了12年。在我在微软做工程师的时候就应该学习这种语言了。显然Python有很多优于PHP的地方,就像PHP对于写网站有太多因为“幼稚”而优于Java的地方。

一句话形容Python和PHP的区别:

PHP去掉所有的额外输入$ ; { }, 把function改成def, => 改成点,基本上就是Python了。

哈哈。只是开个玩笑,但Python的很多设计还是如此的一致和简洁。比如class里面就是没有从天上掉下来的$this,处理帮助也都用函数help()。

语言本身是有高下差别的。只要看一下开发社区在“自己的时间里”用什么语言,就大概能够猜出来些门道。好多程序员在工作的地方必须用Java或者PHP,或者.NET,但的确有很多程序员选择了Python来写自己的项目。说明这里一定有一些东西在发生。不去看看是不知道的。

愿意学习一种新的语言是一个好的程序员身上带有的很特殊的味道。Hacker本身就是不遵循任何规矩,自己动手丰衣足食的那种精神,而语言作为作重要的一种工具,是一个好的hacker不断寻求的。对于语言的追求,可以当作选择好的程序员的一种标准。

入静和入世

本文受Paul Graham的Maker’s Schedule, Manager’s Schedule启发而作,建议大家有空去读一下。

人有两种思考状态,我将一种称为入境,另一种称为入世。

入静

程序员和作家需要的是一种入静的状态。他们需要整段的,不被打扰的时间才可以工作。一个下午三点种的会议,哪怕仅仅持续15分钟,一个下午就会因此废了。问题不是会议占据的时间,关键问题是会议把一个下午分成了两块,让每块都不够大,都不足以入静。因为对于下午废掉的担心,上午的工作也受到影响,不太敢开始解决真正困难的问题。所以整天都在一种心神不宁的状态。

人的大脑远没有我们想象的那么简单。那是非常精密的,需要我们细心体会的工作状态。一个典型的程序员的一天是这样的:

早上想到今天有一整天的整块时间,能够躲在一个不受打扰的地方开始写代码,想想就是件高兴的事情。然后开始打开代码,开始看,开始象电脑一样处理,慢慢的,世界安静了,问题浮现了,头脑里的问号产生了。怎么解决呢?怎么解决呢?怎么解决呢?。。。。开始思考了。开始发呆了。。。开始写点东西,跑一跑,又引入了一个新的问号。。。这就是入静的状态。

在足够长的思考这件事情的空余,或许要上一下厕所,在路上遇到同时打招呼,但脑子还在那个状态,打招呼的是谁不记得了,也不想去注意,以免思路被打乱。然后回到座位上,脑子里其实彻底没有去过厕所的记忆,而继续思考。。。中午吃饭的时候,如果一个人最好,接着在那个状态里。。。或者随便聊点轻松的话题,并没有大碍,只要不是动脑筋的东西。这样下午可以相对容易的回到短暂离开的状态。因为我们的明意识在放松,潜意识其实还在连续的工作。

这种入境的状态就像睡觉。需要足够长的时间才能进入状态。我想大家都能理解凌晨三点的一个电话对于睡眠意味着什么吧。

在会多的公司,程序员会自己觉得效率特低,归罪于会多,其实不是会多,而是打断。

入世

还有另外一种人,姑且叫做入世的人。他们的时间是按小时划分的,每个小时总要换一个会,在哪里和谁开会不重要,重要的是过一个小时一定有会。如果在两个会之间空出来一个小时,这一个小时反而是浪费时间,一定要想办法填满。找谁聊聊呢?给谁打个电话呢?旅游者是这种工作方式的极致表现。到一个地方仅有的几十个小时,一定要用活动填满,每一个小时一定要换一个地方,才能够不辜负大老远来一趟。经理,商人,投资人,甚至服务员都是这种状态。很难想象一个卖菜的不和人打交道而仅仅静思会有生计。一个证券交易员哪怕十分钟不和另外的人发生交易就会亏钱,商人必须不断的和人打交道,认识其他的商人,才能有足够的消息。经理们更多的是在协调资源,而不是创造新的东西,他们,需要用入世的方式工作。

两个处于入世状态的人很容易约会,甚至容易约一些没有特别目的的会,“好久不见了。聚聚?” “好呀,喝杯茶吧。”这种会议常常能产生意想不到的产出,主要原因是,切换思维状态,对于入世的人来说,成本太低了,而对于入静状态的人简直就是灾难。

入世和入静

我们其实都需要两种状态。读书就需要入静,需要相对长一点的时间。沟通就需要入世,需要高效的和人打交道。不同的工作需要不同的状态。我们需要明了这种区别,不要在两种状态频繁切换。一个礼拜可以把会集中在一起,好让自己定期给自己些完全没有会的闭关时间,这样才会平衡。

最后,要给身边有程序员的同学们和经理们提个醒:请大家一定要理解程序员的工作状态,不要在一天的中间安排会议。当看到一个程序员冥思苦想的时候,不要过去打扰,甚至在极端的情况下,一句友好的问候都是多余的。