Archive

Monthly Archives: February 2012

Maslon先问个问题:如果你有几十亿,你还工作么?工作几个小时?

来看看马云的生活,马云的身价早就超过100亿,依然工作超过12小时,他的高管团队也都如此,是不是马云是一个非常严格的人,要求高管团队如此工作呢? 从视频来看,他们似乎是自愿的,因为他们说:马云,感谢你,我从不知道我可以为社会做这么多。

作为一个凡人,有了这么多钱,我首先想的是去阿拉斯加钓鲑鱼或者中非草原打猎,逃避长时间工作貌似是一个最自然的反映,比如这位

成功学,工作态度这样的话题不是我想讨论的,我感兴趣的是,人为什么对于同样时间的工作有不同的态度? 我们可以借用马斯洛的需求层次理论来解释这件事儿,马云和TA看起来在谈同一件事儿,但是做事的内在需求不同,马云追求的是自我实现,这是为什么他提到的得意时刻是让下岗工人有了工作,有了收入,过上有尊严的生活。这也是为什么作为一个商人,马云频频提到的是社会责任。而另外一方谈论的更像是归属感或者安全感甚至更低。谁错了? 他们都正确,它们只是不同的观点,造成差异的因素有很多,比如阅历、比如价值观、比如经济基础等等。

马斯洛的需求层次理论是对事实的一个解释,这个事实是出于各种原因人人都会从不同的角度去解释同一个客观事物,简单的说:

客观事实确实存在,但是我们都是通过信念和价值观的眼镜去观察他们。

我再问下面这句话到底意味着什么?

济苍生以软件,担道义为世范。 凡入我司者皆归三宝。三宝何为?一曰基业永续,二曰止于至善,三曰不为利回不以义疚。

它可能意味着一个扯淡的口号,也可能意味着自律,也可以是自我实现。取决于受众的信念和价值观,这一句话的心理投射是绝对不同的。

在了解了差异的客观存在后,也许需要开发一个差异较小的版本,这种现象可以叫做标语,也可以叫做战略解码,或者司法解释,我称其为P3个人版

我们所说的软件卓越对于个人意味这什么? 我觉得它至少意味着3件事儿:

  • 自己追求卓越软件:学习新的技术,深入理解已有技术,尝试用最有效率、最有效果的方式来解决问题。各种形式的个人学习、个人创新皆属于此列。
  • 帮助别人追求卓越软件:帮助团队的同事/客户理解上面这件事儿,帮助他做到这件事儿。提升自己做教练的水平、辅导同事、公司内部的各种演讲、学习会皆属于此列,郑大夜校学前版和郑大夜校成人版都属于此中翘楚。
  • 帮助整个社会追求卓越软件:帮助整个社会认识到卓越的软件意味着什么,在InfoQ上发表文章,向Open Source社区进行贡献,在大会上进行演讲。各个大会的积极演讲者、组织者、推动者、还有即将推出的郑大夜校校园版都属于此列。

这几天碰到了一些问题,在此一并回答。

问: 为什么不尝试在办公室做一些分享?

答: 没什么好分享的,我会的又不多。

问:那可以尝试做类似于Open Space的形式啊,你可以是提问者和组织者,不一定要是回答者。

答:我不懂自己就找人问了,干嘛要这么做?

因为在大家面前提问,做组织者是一种帮助他人追求卓越软件的行为。更多人没有提问不是因为他懂了,而是这些知识处于他”unknown unknown”的知识领域,拿昨天的技术社区聚会来说,有人第一次听说了PhoneGap,打算回去尝试一下,那这件事儿之前对于他是”unknown unknown”,现在进了一步,进入了”known unknown”的知识领域。

不仅想着自己会了,还想着让别人也会。

问:为什么不参加社区会议呢?

答:我参加过一次,没学到什么东西(他们会的我早都懂了,有木有?),

和大多数西安本地的公司比,ThoughtWorks西安的知识领域是更新(其实也是机缘巧合,碰上了优质客户),做事的方法也更科学,正因为这样,我们才更有义务把这些方法分享出来,帮助社会追求卓越软件。

此外,这也是个心态问题,走出去才会发现即便是在西安,社区高手也很多,比如做Android的Alex Xin, 做iOS的张诚,夏炎,GroovyQ的创始人胡健,更别说北京,上海,深圳这样的一线城市。南京大学现在都在学习敏捷了有木有? 我们有什么理由固步自封呢?

这是我3个支柱解码的第一部,接下来我还会谈谈基业永续和不为利回不以义疚。

《生活大爆炸》 是最近很火的美剧,他讲了一个关于这群人的故事:

那些依靠计算机技术结合成的社会性人群,他们把大量社交时间花费在电脑网络上,每天到处寻找新奇的东西,游戏软件、漫画全系列、电影周边等是他们的娱乐。他们不一定呆,但术业有专攻却是必须的。最好是那种前沿科学,天文、地理、昆虫等。使用Linux系统…..

每次看剧时都是傻乐,看完照镜子才发现:啊呦喂,除了没人家聪明,剩下不都一样一样的么?

打视频电话打一半被女友发现在写程序,自以为聪明的万般抵赖,结果女友撂下一句,你眼镜反射的有黑底绿字…..

每次女朋友跟我说星座,我就跟她说巴纳姆效应或者福尔效应,拜托,人家就是图一乐,有这么必要这么认真嘛?

每次女朋友跟我说要吃蛋糕,我就很认真的讲解反式脂肪在食品工业的广泛使用,以及对健康的影响。你看讨不讨厌,人家就是吃个甜的心情好么。

当别人神秘兮兮的给我讲个段子,我就跟人家说小样,杜撰的吧?,本人长年阅读谣言粉碎机诶,你看扫兴么?

还有老跟一帮Nerd出去玩儿,晚上可能在参与Code Jam,周末常常在组织OpenParty西安。

回顾这样的生活,不由感叹程序员找到女朋友太难了啊,有木有?

不知道有多人记得《社交网络》里扎克伯格说的”He is wired in”? 这也就是我在信息轰炸和自律里说的思维流(Flow)模式,极客们都知道,这种状态的进入是会成瘾的,一旦进入会就忘记时间,最讨厌打扰,对待一般的中断都是敷衍了事。你懂的,如果你也干过:

  • 忘记了周年或者纪念日。
  • 忘记了日常关心
  • 只有退出思维流时才查看手机。
  • 接起电话:“嗯、嗯、忙着呢、呆会聊”

哪个女孩儿受的了哦。

我需要一点改变,让工作和生活平衡一点,不仅爱编程,还关心女友。

所以我做了一个能让她感受到关心的东西,不是玫瑰,不是折纸,咳…咳…是个PhoneGap手机应用:

Screen Shot 2012-02-24 at 2.39.38 PM

它每天在早上8点,中午12点和下午5点半都会提醒我,要适时退出思维流,该关心一下女朋友了。当然我也偷了个懒(勤快的程序员不是好程序员),写好了很多短信放进去,只要一点短信就会发出去。

每一个听到我做了这个东西的人都会惊讶:“什么,你要女友和机器对话? 你女友知道么?”

我不仅说了,她还很欣赏,她说这是我当程序员以来做的最有用的一个东西(拜拜, Jez Humble, 神马CruiseControl,Go都是浮云啊)。想想看,每一条短信都是3个星期业余时间的凝结,这是多少心思? 多浪漫。

程序员的浪漫很多人不懂,希望读了这片博客的你懂了。

fork me.(极客,你懂的)

加入了ThoughtWorks,你成了一名咨询师,在接下来的时间里除了要追求软件卓越。你也要学会如何出差,如何在现场与客户一起工作,如何成为一名合格的世界公民。

作为一名软件工作者,以及曾经的背包客,我穿衣风格的主要特征是每年9月以上穿拖鞋。所以我在ThoughtWorks学的第一件事情就是如何穿衣服。

穿衣服的风格有很多,比如休闲,比如正装,比如商务休闲等等,对于技术类的资讯师,我们绝大多数情况下着商务休闲装,简单的说:

  • 上装:衬衣,夹克,毛衣,Polo衫(除周五外,避免T-Shirt)
  • 下装:西裤,休闲裤(避免牛仔、短裤、运动裤)
  • 鞋子:皮鞋

闲话不多说,上图片:

female

美眉穿正装很有杀伤力吧?特别是认真工作的美眉,特别是认真工作的ThoughtWorker美眉….

me

见过穿衬衣、皮鞋的在下么?

work

穿戴整齐的ThoughtWorker们在客户现场工作起来是这样子的。

穿于穿衣服打扮的一些小诀窍:

  • ThoughtWorks Polo衫让你穿的舒服又专业。
  • 洗澡,每天都换衬衣。
  • 买一双质量好的皮鞋,你就不会象一样,出差中途鞋跟断了
  • 买深色的袜子,另外按照温伯格的说法,你所有的袜子都应该是一样的,节省咨询师思考穿什么袜子的时间。
  • 去国外出差带两幅眼镜,你就不会象我一样,一阵风把眼镜吹掉摔碎了(这叫什么事儿啊,国外的风都厉害些)

此外国外住在service apartment的咨询师周日都不出门,因为他们在干这件事儿:

iron

这几天在澳大利亚出差,何飞问我,在ThoughtWorks做了这么多项目,哪个项目对你的提升最大? 我当时第一反应是Cruise,但我又问我自己,为什么是Cruise? 它带给我什么? 仅仅因为我在这个项目呆够长(呆了两年半)所以对我影响就大?

我仔细回想了我到底从中学到了什么?

  • 08年我们从SVN切换到了Mercurial,开始对版本管理和团队的组织形式之间的关联有了感觉,还发表了一篇文章: 为什么我们要放弃Subversion
  • 团队用了半年时间把单元测试都用Mock做到了真正的隔离,然后又用了1年半的时间去掉了几乎所有的Mock测试,我也写了一篇文章:为什么Mock不是测试的银弹
  • 从追求测试覆盖率到追求安全感,当一个项目够大,做的够长测试覆盖率是不会给你安全感的,良好设计的domain,真实的测试(不管多慢)才会给人写程序的安全感,我们当时在测试Cruise的时候,单元测试真的会从文件系统启动一个subversion或者git来真正的提交或者回滚的,因为太多的失败告诉我们这样才是真的有安全感的测试方式。因为这样的经历,后来写了测试覆盖率强迫症
  • 持续部署真的很爽,从一开始的手工给一个项目做Cruise的部署,到一年以后点一个按钮就给全公司2个用Cruise Agent最多的项目(Trainline同时也是咱们公司最大的敏捷项目)做部署,感觉很爽。
  • 用了内存数据库,经常和教授还有Derek二半夜给客户通过log修复内存数据库,赌咒发誓这辈子都不在严肃的项目里面用内存数据库。
  • 做L3的支持,经常在客户发来的残缺信息里面试图定位问题,没有严肃的打log的下场就是要远程debug几天来发现问题。

尽管这些点都很离散,出现的也很偶然,但它们都有一个共性:

我之所以有收获有沉淀是因为看到了是事情是怎样变好或者变糟的

换句话说,出来混总是要还的,因为项目够长,所以我看到了”还“的那一天,我了解了一个选择可能的后果,以及学会了承受这个选择带来的结果。

新项目,新技术、新客户,一团和气谁不爱? 很多人都最爱新项目,然后做不了两天热情尽了就发脾气打滚要求调动到另一个项目。这样带来的结果是自我感觉太好,没有看到过自己的决策也让焦泥坑变的更黏,自己也并不是一个比任何人高明的程序员。活比较糙,对”魔鬼在细节中“没有感觉,因为不了解为什么要把log写好,error message写好,从不承受选择的后果也让人心智不能很快的成熟。

此外,往往是大而复杂的项目才能够催生出真正的创新,做Cruise的时候因为build的时间太长(2小时),一天两天也就忍了,当面对的是一个永无尽头的项目,我们就必须鼓起勇气想办法把问题解决了,忍无可忍之下,用了几个周末,我和教授、Derek一起作出了test load balancer把build的时间缩短到20分钟。

从这个角度看,PwC, REA以及未来的Sun记正是最好的舞台。