透明思考


Transparent Thoughts


  1. 人在职场,做事要主动

    我跟所有的员工,不管是毕业生还是十年经验的老人,都提同样一个要求:做事要主动。当然了,还有一些更基本的东西,比如要有责任心,要结果导向,做一件事就要做成做好,这是在职场立足的基础。立足以后,要做得比别人好,就要靠主动。

    “要主动”这是一个很宽泛的说法,在职业生涯的不同阶段有不同的方式来主动。下面我就讲讲自己的故事,我在职业生涯的几个阶段主动做了几件事,事后证明对自己的发展很有利,希望这些故事对读者有参考意义。

    有事儿我敢抢着上

    2001年我从大学退学,来到《程序员》杂志社做技术编辑。第一天,技术版的老编辑拿排好版的稿子给我校稿:错别字就划个圈,拖一条尾巴出去在空白处写上正确的字;要删除几个字,也是划个圈,再划个打着卷的小尾巴;要添几个字,就在添加的地方划个小箭头,也是一条尾巴拖出去写要添的字。一个月以后,不光技术版,管理版的老编辑也把稿子拿给我校,108页的杂志,我一个字一个字地看了两遍。

    校了两期杂志的稿,我觉得不能再这么被动,不然别人会一直让我干校稿这种枯燥又没技术含量的活儿。正好赶上开12月杂志的选题会,另外两个技术编辑一人报一个技术专题,都被蒋涛总编给毙掉了。我看准情况,鼓起勇气举手说:“我觉得可以做个关于refactoring的专题。”听完我的介绍,蒋涛点了头。

    《程序员》杂志的技术版块总共54页,其中“技术专题”占了12页,用四五篇文章、一万多字的篇幅来讲一个技术,务求讲通讲透。毫不夸张地说,《程序员》这本杂志与其他IT报刊最根本的区别,就在于这种深度与广度兼备的技术内容。这个拳头栏目,我在《程序员》的一年半时间里,主持了12期。

    后来的就是历史了:那期技术专题是重构技术首次出现在中文的印刷媒体上,然后我和侯捷老师共同翻译了《重构》这本书,我离开《程序员》时被看作杂志的首席技术编辑。这些东西给了我一个绝佳的职业起点,而这一切都源自大胆的一举手。

    职业生涯初期,没人知道你有多少能力,也没人会无缘无故地冒险给你机会——说得残酷点,教会徒弟饿死师父,老员工不给你下绊儿你就应该感激了。作为新人,你就得有一种有事儿我就敢抢的劲头,反正最差也就是没抢到而已,你没有任何损失。

    让我上,我就敢上

    2005年我刚加入ThoughtWorks,当时任中国区CTO的郭晓就跟我说:11月底有个演讲,他没时间去,让我帮他讲。我细打听一下才知道,这是要在微软的企业决策者峰会上讲敏捷软件开发,到场的都是微软各家大客户的CTO、研发主管之类的角色,我就跟在微软一个VP后面做第二个主题演讲。

    那时ThoughtWorks刚进入中国,连一个中文版的PPT都没有。而我一介新人,虽然之前实践过敏捷,但都是自己摸着石头过河琢磨的,没有一点理论规范。让一个新人来应对这么高级别的一次亮相,如果是你,你会不会担心?但是既然是郭晓交待给我的,我就没有二话,马上开始准备中文材料,跟同事结对练习演讲,连每句话怎么说、每个手势怎么做都预先做了准备。后来有一张照片,是我在演讲的时候抬起左手数“第一、第二、第三……”,而且是从大拇指开始算“第一”。这个小动作我以前是没有的,就是在练习的时候从同事那儿学了过来,一直到现在说话还有这个习惯。

    演讲本身平淡无奇,没什么特别的反响,也没出纰漏,我就这样完成了代表ThoughtWorks的第一次亮相。后来整个中国区都留下一个印象,觉得我能讲,有亮相的机会就会想到我。

    工作几年以后,积累了一定的能力和口碑,领导有时就会给你一些非常挑战、甚至完全超出你想象的任务。这个时候千万不能怂:你敢让我上,我就敢上。你要相信,领导的眼界比你高,他认为你能搞定,很可能就是你真的能搞定,只是你自己还没看清。这种高挑战的任务往往是难得的机会,搞定了就能让你上一个台阶,你要是不敢上,别人可能正等着抢这个机会呢。

    有困难,我就上

    2011年,在ThoughtWorks中国区管理会议上,已经在中国区总经理位置上坐了几年的郭晓正式宣布:2012年,我们将开设成都分公司。问题在于,还没有成都分公司负责人的人选。管理团队的其他人或是忙于工作,或是家庭羁绊,都无法去开拓成都这片新天地。休会的时候我跟郭晓说:我是四川人,如果没有别人去成都,我就去。

    对于成都分公司究竟要做什么、做成什么样,连郭晓也没有想法。年底时他跟我谈对成都的期望,设定的目标是30人和一个很低的营收数字。我和我的搭档王效珅完全没有在意这个目标,我们在一间公寓里一起制定成都分公司的目标,思考客户、招聘、员工培训等等问题,以及企业形象、政府关系之类以前甚少涉及的问题。结果第一年结束时,我们已经有了60多名员工,营收超出原定目标一倍还多。第二年过半,我们员工数已经过百,取得了若干创新成果,发表了十余篇文章,多次被媒体报道,还作为成都市高新区的形象代表接受哈佛商学院、法国记者访问团等访客访问。

    在公司做到中层以后,一个重大的转变就是由“解决问题”到“提出问题”的转变,毕竟几乎所有中层管理者都是从一线拼杀上来的,是因为出色的解决问题能力才被提拔到现在的位置上。但在这个信息时代,找到解决办法终归不难,你的老板最大的难题是只有一个模糊的愿景,还提不出具体的问题。要真正为老板、为企业分忧,你必须学会面对一个模糊的大目标去提出一系列的好问题,去设定实现这个大目标的路径。你不能再满足于解决别人(包括你的老板)给你提出的问题,因为别人提的只能是一些平庸的问题:规模,营收指标,利润率……你要敢于说:有困难,我就上,我会解决所有困难,我会让愿景成真。

    这只是起步

    现在我个人正站在又一个职业的转折点。我的领导郭晓从中国区总经理升任全球CEO,他给了我一个新的挑战。我现在对于“主动”这件事又有了新的理解:领导很迷茫,我也敢上。不过这事目前还处于现在进行时,也许几年以后我会再来继续讲这个故事。

    读者或许会注意到,我讲的几个故事,跟蒋涛和郭晓这前后两位领导关系很大。很多人不敢主动做事的一个原因是怕捅娄子、怕招领导烦。下一次我会专门讲“人在职场要跟对领导”这事儿。如果你有什么想法,请回复或者私信让我知道。


  2. 非彼无我,非我无所取

    有个小朋友找我说:她要给同事们讲项目中用到的Responsive Design,但是她很苦恼不知道该讲什么。“我就是用了Bootstrap,没做什么特别的,这就是Responsive Design吗?”

    这不是个罕见的例子。很多人,甚至是有多年工作经验、水平相当不错的人,要他分享一下项目里有趣的东西,他会困扰地挠挠头,然后粗略地讲上几句:我们的项目啊,用了AngularJS,用了Gradle,不过好像也没什么特别的啦,反正用什么东西都是写程序呗……最糟的情况下,他工作了几年以后,说不出学到了什么新东西,看不出水平有提高。但是你看看他做过的项目,各种新技术新方法都用到了,为什么他会视而不见?而另一些人从几乎无聊至极的项目中也能写出一篇有模有样的文章,这就让你更加无法忽视前一类人存在的问题了。是什么让我们对每天工作中有趣的、值得兴奋的事情看不见、说不出、感受不到?

    庄子《齐物论》有这么一句话:非彼无我。当我们谈论一个东西,很容易就这个东西谈它本身。但事物的边界不是由它自身(即“我”)决定的,而是由“不是它”的那些东西(即“彼”)来决定的。比如讲AngularJS,至少有两个人给我讲过,都是一上来就讲Controller、Directive。等等,你得先讲它“不是什么”,先讲“没有它是怎样”,然后再来讲它“是什么”。同样的,我给这个小朋友的建议是:如果要理解ResponsiveDesign,你就得先理解什么是“不Responsive的Design”,你得先拿手机去访问几个比较土鳖的网站,看它怎么在手机上撑得超出屏幕无法操作,看有哪些东西会让你作为手机用户感到不爽,然后你再回过头来看一个做得好的网站是怎么处理这些让你不爽的点,你才会明白ResponsiveDesign到底是在讲什么。

    另一种很常见的情况,同样是一些工作多年的人身上也会出现的:他说要学一门技术,然后就开始学了,读了一本书又一本书,试用了一个工具又一个工具,参加了一个讲座又一个讲座……过段时间,你觉得他应该已经学会了,于是你恰好有个项目需要用这门技术,想让他来担纲,这时他怯生生地跟你说:不好意思,我觉得我水平还不行……这时候你就好奇了,之前他学习的那些工夫到底都起了什么效果呢?

    《齐物论》紧跟在后面的一句话是“非我无所取”。我把它理解为学习、认知的过程中,学习者与学习的客体之间的关系。学习者如果没有带着明确的目标和问题去学习,在学习的过程中不管看了多少东西,他是“无所取”的。所以,要学iOS开发,你就做一个应用在自己的iPhone上用起来;要学大数据,你就找一个题目把数据拿出来分析。不要在意这个题目太简单用不到多少高级的技术,不为解决问题而学的高级技术终归是用不上,学了跟没学一样。

    从这个原理出发,我还推导出一个颇为有趣的实践:如果有人说他想学某某东西,我不会给他讲培训,因为听培训的时候他是没有主动问题的,他是“无所取”的;我会叫他自己准备一个培训,他来讲给别人听。事实证明,一个培训做下来,受益最大的总是讲培训的这个人,而不是听培训的任何人。所以大家在参加公司内部的各种分享培训的时候也要有所注意:其实你通过听培训基本上学不到什么东西,这个过程是讲课那个人自己进步的过程,跟你听课这个人其实没多大关系。


  3. 自由的重量

    有这样一些人,生活似乎对他们特别不公平,世界似乎对他们特别残酷。因为某些原因老板低估他,因为某些原因同事排挤他,因为某些原因社会歧视他……要是有机会,他会向你倾诉这个世界、这个世界上的其他人给他带来了多少苦难。

    总之,造成这些苦难的,不是他自己。

    爱的行刑者》讲到给人带来深层次而无法回避的痛苦的四种因素。第一,人是会死的;第二,人是自由的……等等,这里有两个问题:人真的是自由的吗?如果是,自由怎么会成为一种痛苦的根源?

    我们会提出这样的问题仅仅因为我们在谈到“自由”这个词的时候经常忽视它的重量——人可以自由地做事,同时要为自己所做的事承担责任。从这个意义上来说,人确实是自由的,你可以自由地选择做或不做任何事,只不过要接受一切的后果。你可以打人,不过有可能被打回来;你可以抢劫,不过有可能蹲几十年监狱;你可以从楼上跳下去,不过有可能会死。当意识到后果本身就是选择的一部分,自由就开始变得沉重。

    甚至沉重得难以承受。有人在彭萦的微信公众账号“改变自己”上提了这样一个问题:“彭萦老师您又是如何做到一两天就看完一本书的呢?我每天也就地铁上看,差不多两周一本,感觉已经快不了了。”彭萦很残忍地回答:“如何做到看书比你多?唯一的方法就是——我看书花的时间比你多。”其实何止读书,类似的事太多了。为什么他晋级涨薪我原地踏步?为什么她琴棋书画茶我油盐酱醋茶?为什么他八块腹肌我一块腹油?为什么她长袖善舞我不约而同?大部分时候,世界没有对我们特别不公平,只是我们已经自由地选择了做(或不做)某些事,正在承受后果而已。

    人是自由的,自由地行动,并承受行动的后果,这个规律基本上不会变的。如果想要改变结果,还是从改变自己开始吧。

    (广告时间:如果需要一点动力来改变自己,请关注微信公众账号“改变自己”或“wechanger”。)


  4. 生活在别处?

    有这样一些人,跟谁都不特别亲近,做什么事都不特别有热情。如果恰好聊到,他们会告诉你,只是现时、现地的人和事情太没意思了。他们会给你讲在别的某地的精彩际遇,和别的某人的情投意合。讲得兴高采烈眉飞色舞,使你不由不信,他其实是个有趣的人,只不过有趣不在此时、此地。

    爱的行刑者》(Love’s Executioner)的第三个故事“FatLady”就讲到了这样一个人。这位女士因为肥胖而不受喜爱,又因为工作原因到加州出差18个月,无法结识新朋友。在接受心理治疗时,她说自己在老家德州、在多年居住的纽约都有很多好朋友和快乐的生活,是出差和加州人对肥胖者的偏见使她的生活变得一团糟。

    然而心理医师(也是这本书的作者)发现,这位女士是个很无趣的人,无趣到让心理医师要打瞌睡。她的好朋友、快乐的生活,几乎都是她在回忆中给自己构建出来的。她总是在谈论别人、别处、从前、将来,就是不谈现时、现地、身边的人。她“生活在别处”。

    《爱的行刑者》这本书的高级之处在于,它提出了给人生带来最深层次的、无可逃避的痛苦的四个根本原因:

    1. 人都会死。(Mortality)
    2. 人是自由的。(Freedom)
    3. 人是孤独的。(Loneliness)
    4. 人生是无意义的。(Purposelessness)

    这位女士的问题,她的无趣、她的无法与人产生情感连接,当心理治疗探索到最深层次,原因是在于对孤独的恐惧和对自由的抗拒。“自由”的话题先放下不谈,留着下次再单独写一篇。关于“孤独”,这位女士这样说起她在结识新朋友时的感受:

    也许听起来很疯狂……每当我认识感觉不错的新朋友,我就会马上开始想象跟他们道别的情景。

    因为她——从潜意识深处——知道,每个人都是孤独的,没有谁能始终陪伴谁,没有谁能完全理解谁,告别早晚总会发生,所以她从一开始就不自觉地避免与人建立更深的情感连接。如果不去投入感情,那么分别时就不会难过。对一个人、对一个地方、对一件事,都是如此的想法。

    之所以这个故事对我触动特别深(因此我要首先把它写下来),因为我发现自己就是这样“生活在别处”的。有趣的经历,有趣的人和事,似乎想起来经常都是在别的时间和地点,而不是在身边和眼前。但是,没有身边和眼前的精彩、快乐和感动,在“别处”真的就能找到吗?

    所以,这是一本很高级的书。


  5. 回忆:2008年的Code Jam

    经常有人说,编程语言啦框架啦无非就是个工具,这工具那工具对开发软件本身影响不大,就好像厨师不挑剔厨刀一样。但是作为一个从J2EE起步然后又做了很多Rails应用的程序员,我知道这说法是不对的,起码这两个社区的人群就很不一样。Java社区相对保守一点、老派一点,偶尔有个聚会什么的也是传统的一个人在台上讲若干人在台下听的模式;而Rails社区就更新潮、更有互联网范儿,比如说聚会这事儿吧,人家搞的叫“unconference”,一大堆人走进一个空间,也不预设主题,每人三句话介绍自己,然后就说今天我带来了什么可以分享的,然后感兴趣的人就自动聚集起来,或是演讲、或是讨论、或是玩游戏,很是热闹。2007年秋天,我去参加了一次在北京的BarCamp,觉得这种形式真是好玩。

    还有更好玩的,就是CodeJam:一帮人带上笔记本电脑,找个地方,可能是某公司、某酒店、某青年旅社甚至某咖啡馆,短则十二小时长则两天,把一个点子变成一个真实的软件。如果说像BarCamp这样的unconference与RubyonRails还只是因为“互联网”这个共通点而有某种弱联系,那么Code Jam的兴起就跟Ruby onRails有着很强的关联了:如果不是Rails让程序员们的开发效率成倍地提升,短短两天时间里做出一个真实可用的东西,怎么可能?起码我从没见过用C++(甚至Java)来搞CodeJam的。谁说工具不会影响使用它的人?

    2008年,我们也搞了一次Code Jam——主要是李默和徐昊看了别人搞的CodeJam心痒难耐,于是在公司也组织了一个。可是一时想不出该做什么,就连黄亮这成天喊着“做网站赚大钱”的也没有什么好点子,于是李默不知道通过什么关系联系了一个在中国做公益的香港人,听听他有什么需求然后我们帮他做——事后证明,这次CodeJam最牛逼之处就在于此了。

    这位叫Steven Liu——不是“刘”,是“廖”,中文名叫廖元铂——的香港人在给一个叫“乡村教育促进会”的公益组织做CIO。顾名思义,这个公益组织的使命就是“为中国农村地区的学生提高教育质量,使他们能够在未来改善自己的生活与自身所处的社区状况”。怎么提高教育质量呢?现在中国农村地区、尤其是西部农村地区的教育,硬件条件固然是不足的,但至少还有政府和若干公益组织在支援;而教师的质量,往往比硬件条件更加堪忧。乡村教育促进会的网站上这样描述这个问题

    在中国,约60%的小学生在农村小学就读。有研究指出在某些乡村地区,将近一半的学生不会上高中,其主要原因并不是经济上的困难,而是教学所用的方法和学校教授的内容对于学生将来的发展并不实用,引起学生“厌学”的问题。

    要改善农村教育需要高质量的教师,然而最好的教师往往选择去待遇优厚、生活条件好的城市教书。2001年的全国新课程改革提倡培养学生的创造力和批判性思维,但因为农村教师缺乏相应的培训、资源与支持,一直未能得到很好的实施。因此,为农村的孩子提供高质量、有针对性的教育便显得愈发重要。

    Steven想要做的就是一种能帮助农村教师、以及乡村教育促进会在农村里服务的志愿者提高教学水平的IT系统。他想做一个网站,让这些志愿者(以及他们身边的当地老师)可以通过互联网来交流教学经验,这样身在乡村甚至深山里的老师们就不再是孤军奋战,可以从众多同行那里学到教学的方法与心得——更重要的是一种心理上的相互支持,知道还有那么多人也跟自己一样,在困难的环境下仍然在为孩子们的明天而努力。

    这个愿景把我们都打动了。于是,一个周末两天的时间,两个BA、一个QA,八个程序员,我们真的把这个网站给做出来了。郑晔在他的博客里记录了这个过程:有混乱,有纪律,有欢笑,有成就,还有对同事们的惺惺相惜。星期天快到晚上的时候,我们给Steven展示两天的成果,Steven都不知道该说什么好(当然他普通话很差也是真的),只能双手高举过头不停地鼓掌。其实别说是他了,连我们自己都惊讶:原来真的可以在这么短的时间里做出这么多事情。

    我们这几个中国区最早的ThoughtWorker,已经在这家公司三年了。不知不觉中,我们在慢慢地成长、慢慢地承担更多的责任,也慢慢地离彼此越来越远。后来我们发现,这是一个——至少在ThoughtWorks——普遍的模式:每当你欣赏一个人,很快你就不能再和他/她一起工作了,因为他/她自己也会很快成长起来,去独立承担更多的责任。这次CodeJam是我最后一次和徐昊、WPC结对编程,也是最后一次跟李默在同一个项目里工作,我很怀念和他们朝夕共奋战的日子。

    还有一段当时无论如何也料想不到的缘分。四年以后,当我在成都招聘时,Steven坐在了我面前,并最终也成了ThoughtWorker。再见他时,我都几乎不敢相认。不得不感叹,岁月,还真是一把杀猪刀啊。


  6. 我对毕业生的期望 之 要主动

    “主动”这是一件挺抽象的事,我也不讲大道理了,讲故事吧。我自己的故事,讲出来就是十多年前的事,大家也不爱听,今天我讲个近的:王效珅现在是ThoughtWorks成都分公司的总经理,你能不能想象,她两年前还是一个既没做过IT项目也没做过管理的市场部小女生?什么叫主动?下面摘录效珅的一个邮件,看完你就知道什么叫主动了。

    我分享点我的个人体会吧。其实我也曾有这样发现自己很多东西不会的经历(当然不是在技术方向的)。转BA对我来讲也不过是一年半前一个突然的决定。当时对于怎么做BA、敏捷项目管理、什么是迭代完全停留在想象的阶段。大熊拉我进第一个项目,我真的是异常没有信心,因为那会儿自己连第一本《敏捷需求管理》还没读完!在客户现场的时候也非常紧张,加上语言障碍,每天跟活在地狱里一样。

    我那时支撑自己唯一的信念就是(包括到今天都是)- 我不能砸了ThoughtWorks这块牌子!

    所以,只要是我不懂的,没听过的一定会记下来,吃饭的时候问大熊和响哥(北京BA)。因为没有技术背景,我记得当时大熊给我解释什么是model的时候脸都绿了。白天在现场我会偷偷录客户的谈话记录,上下班路上听,里面涉及到的技术词汇会再找响哥问。晚上回去就继续啃书,经常是刚从书上看了怎么写故事卡,第二天就到现场去写了。刚开始手生的很,但写多了就有信心了。

    话说也就是突然那么一个瞬间,觉得自己开窍了。再回到项目里,我会随时留心客户的BA怎么做事,怎么跟业务的人交流;没事的时候就去找QA聊天帮着做测试(主要是让自己对软件有个端到端的认识);遇到一个技术性的问题就会拉着Dev问,直到我能理解;只要是新东西马上就会进入我的学习雷达⋯⋯其实我也不爱看书,我喜欢找人聊。所以我的学习方式就是只要让我知道谁有这方面的经验,我很快就会写邮件约会议,聊完了再找知识点,重点看书查资料。

    如果这个过程中一直有老师带自然是最幸福不过的。但回想一下,我真正跟着学的人可能也就是大熊和响哥,还算是带进门后就撒手不管的那种。那会儿都是抢响哥手上的活干,不让她写story,不让她跟客户聊,一把子拦下来搞完就问她要反馈⋯⋯以至于响哥后来都专心搞团队建设去了。大熊跟我在一个项目里,我找他问问题全都是吃饭喝酒的场合,还真不是在手把手做事的时候。

    恩,再举个最近的例子。我正在写敏捷中国大会演讲的PPT,讲的是个高级货《大型项目的敏捷实践》。刚开始写了四稿,怎么都觉得虚,想想还是因为我把握不了观众的聚焦点,再想想主要是我不了解国内项目经常会出现什么问题⋯⋯想通这点,我马上就知道该找谁了。肖然就是现成的老师!所以下午拉着他过了一遍我的PPT,问了很多场景,果然是胜读万卷。一下子就把我要讲的东西落地了,现在看看就是个很接地气的好例子!而且你要来跟我聊国内咨询什么的,我至少能给你讲出4-5个常见场景和应对方案。恩,其实我跟肖然都现在都没在一个项目上工作过。

    所以米那,我很理解你们现在的心情和困惑。不过还是要老生常谈,只要想学东西,你永远都能找到门道。需要引导的时候,coach is everywhere.

    希望这些对大家有帮助。另外附赠夏洁送我的一句话:在ThoughtWorks,要么学会游泳,有么被水淹死,你唯一能做的就是拼了命的游。


  7. 未来的教育是什么样子?

    昨天师兄在Facebook分享来一张图片,讲MIT几乎所有课都上网了,而且还一毛钱不收,意思是这么好的资源应该让尽量多的人知道,不学都可惜了。我在微博上一发,被几个大V转发,一天之内阅读超过40万次。看来还是很多人保持着一颗向上好学的心。

    所有的转发当中,有这么几条很有意思。北航软院的院长孙伟先生说:“MIT的连续3任校长都把MIT和哈佛大学的联合项目EdX作为其对人类文明的最大的贡献,尽管EdX还没有获得完全成功。这是一场革命,我们必须积极参与。”而另一位貌似是老师的先生就实在得多,他说:“我要失业了。以后上课就是播视频。”大家都知道IT技术肯定会带来很多改变,真正关心的是:技术到底会把教育带到哪里去?如果技术真的是要把老师都给取代了,“我们”当中目前在从事教育的那一部分,可就没法积极参与了。

    另一位叫倪英伟的先生就说:“这更加不会失业哦。师者,所以传道、授业、解惑也。视频是授业,言传身教,面对面的实时具体交流才是传道、解惑的根本。”后面这位倪先生的观点,我深以为然。当然我是不是深以为然其实不重要,美国领先的一些教育改革就是这么做的。简单地说,IT技术不会让教师失业,反而会延伸教师的教育能力。

    这个故事开始于一个我们都很熟悉的场景:上课铃响,老师走进教室,打开PPT,旁若无人地开始照本宣科,讲完整张PPT,下课铃立马响起,拎包就走人,时间把握妙到颠毫。至于有没有人听、听没听懂,对不起,老师不关心这个。这种情况,在大学里尤为严重,中学也不鲜见。好学的同学呢就会下课以后找老师开小灶,或是找其他同学交流。多少年来,上课和学习就是这个样子的。

    如果把善于各种重复劳动的计算机考虑进来,这事情就有意思了:老师上课照本宣科,这事儿是重复的,是没有个人色彩的;课后的小灶和学习小组,是非重复的,是个人的。把教室、老师这些昂贵的资源用来干重复劳动,这不是浪费资源么?于是有个叫“可汗学院”的非盈利教育机构,提出了“翻转教室”(flippingthe classroom)的理念:听讲课(lecture)这部分重复的、没有个人色彩的东西,大家通过网络自己做就好了,还能覆盖世界各地。AndrewNG老师的“机器学习”课,一个学期有八万学生,历史上从来没有哪门课程有这种覆盖面的。但教室还得有,老师也还得有,大家上课的时候就提问、讨论,老师就是来指点方向、解答问题的——恰好就是倪先生说的“传道、解惑”。这才是需要人的智力、创造力和爱心的地方,这才是把教室和教师用在了正途上。

    这么一个转变,可以想象的空间很多。我这想象力比较贫乏,就想到了一个:考试之外,老师打平时的分数就容易多了。大家都说不要光看考试要看素质,可平时分数又着实不好打:评作业吧,作业可以抄;打考勤吧,学生来答个到也未必就会听讲。课堂反转以后,判断学生平时的学习就容易多了,就只看这学生能不能在讨论中提出好问题。提不出好问题的,要么是没学,要么是死记硬背——两种都该挨骂。

    当然也不是全然都那么乐观。比如有位教初中的朋友就说了,课堂这么一翻转,对老师的要求可就高了。很多小地方的老师,自己肚里也没多少东西,硬要“传道”、“解惑”什么的,恐怕有一大批老师要挺不住。再说另外一面,虽然有三千人转发了那条“MIT开放课程”的微博,究竟几多人真会去学呢?说到底,世间万种难,还是一懒二拖三不读书,这恐怕有什么技术也难改变啊。


  8. 我对毕业生的期望 之 有思路

    对毕业生的三个期望,第二样是“遇到问题要有思路”。说得更直白一点,脑子要清楚,不能一团浆糊。

    毕业生进了项目,大家最怕看到的不是这位同学有多少知识不知道不停地问问题——这样的同学都算优秀的了。最怕的是往那儿一坐两眼一抹黑,不知道该干嘛。给讲一段代码,就大概可以照着这段代码抄一抄;稍微遇到个不一样的问题,或者出个异常,立马就手足无措。Java出问题不会搞,HTML出问题也不会搞,数据库出问题还是不会搞。这可急死了带队的老同事:漫天都是不会的,从哪儿教起呢?

    有些同学说,我不是想不明白,是根本不知道往哪儿想,因为我以前根本没做过类似的东西。这都是借口!经验丰富了肯定有助于你把事情想明白,但是经验不丰富不是想不明白的借口,因为思考本身是有方法的。而且我们做IT的人,总是面对未知比较多——某件事情一旦变成已知,你就写程序把它自动化了,不用再想它了。掌握思考的方法,你才能探索未知。所以思考方法实在比知识和技能更重要。

    要把脑子弄得清楚一点,第一条是要学会看事实。我最怕听毕业生说“我觉得……”。网页上的图显示不出来了,“我觉得是JSON出问题了”,然后就去看生成JSON的代码。嘿,等等,你一没知识二没经验,你凭什么觉得?首先要学会看事实,先别动任何代码,尽可能多地把事实列出来:浏览器发了什么请求,得到了什么应答,JavaScript有没有报错,render了什么HTML,全都列出来。当然你也可以猜是哪儿有问题,但是一定要把假设、猜想和事实分开。要是脑瓜儿太小记不下,就拿个笔来记:我看到哪些事实,我假设哪些条件,我做了什么猜想。信不信,很多时候你写到这里,就已经知道问题怎么解决了。

    事实、假设、猜想,你只能相信事实。事实都列出来了,问题还不清楚,怎么办?这就引出第二条:学会设计实验。我们的理科教育有一件很失败:做了N多实验,却没有教人怎么设计实验,只是照着实验步骤一步步做下来,结果还是不知道什么现象证明什么道理。你得学会设计实验来验证你的假设和猜想,把假设和猜想变成事实,或者扔掉它。实验要简单明了,一次实验只验证一个猜想:如果猜想正确,应该得到什么结果;如果猜想错误,应该得到什么结果。最简单的实验是什么?面前有一大段代码,你觉得是后半段出错了,就到正中间去插一句输出语句,如果输出的结果就已经不对,就说明你的猜想错了,事实是前半段有错,你就获得更多的事实了。

    学会看事实,学会设计实验,你还得用逻辑来分析事实。说起来“逻辑”好像很学术,其实只要记住三件事就可以应付绝大多数情况:第一,必要条件,就是没有它一定不行,有了它也不一定行;第二,充分条件,就是有了它一定行,没有它未必不行;第三,排除法,就是去掉不可能的,答案一定在剩下的部分。本来程序跑得好好的,你写了半小时代码,就运行不起来了,你就得去看刚写的那几行出了什么错,这叫排除法。找到一个错是不是就万事大吉?不一定,因为这个错只是程序出错的充分条件不是必要条件,还可能有别的错呢。所以我总是要求毕业生小步前进频繁提交,就是为了排除的时候轻松一点。

    前面一篇我说毕业生首先要把键盘练快,有人就说了,难道键盘快就一定能成为优秀程序员吗?软件的精髓在于设计!——对照我说的这几点来看,第一句话,没分清必要条件和充分条件;第二句话,跟毕业生说就是不了解大多数毕业生的真实情况,假设、猜想毕业生都已经练好了基本功现在需要追求“精髓”,没有验证假设和猜想,脱离了事实。看看,我说这几条,看似简单,仍然是需要时时练习才能得心应手的。同学们,加油啊。


  9. 我对毕业生的期望 之 唯快不破

    上次我说到对毕业生的三个期望,第一样就是“编程要快”。之所以要特别强调“快”,因为绝大部分毕业生真的太慢。

    慢,首先就体现在键盘速度上。我们的毕业生有一天晚上几个人凑在一起比拼键盘速度,在typing.io这个网站上用”Java Guava“这道题目来比。女孩们纷纷报出17、19、20这样的分数(单位是“词/分钟”),有个小伙子打出27。然后小姑娘们硬要拉我试一试,于是我试了一局。57分。

    也许你会嗤之以鼻:我是知识工作者,又不是搬砖的码农,比键盘速度有什么意义?错!大错特错!为什么?我们都知道,编程时很难把所有细枝末节都想清楚,大家都是想好一个大概方向,然后一边做一边展开细节。也就是说,你对一个编程问题的思考,是在编码的过程中不断进行的,细节展开到什么程度,你的思维就延伸到什么程度。所以,键盘速度会决定你思维的速度。你思维敏捷?对不起,没有用,因为问题细节还没展开,你没法对它进行思考,你的脑子就只能等着。

    速度一慢,直接的结果就是时间要拉长。就以这几个毕业生来说,我敲键盘的速度就有他们两倍、三倍快,如果再考虑我对快捷键的熟悉程度,出代码的速度能有他们七八倍甚至十倍——和知识、经验都无关,纯粹就是出代码的速度。换句话说,同样一个简单的问题,大家都理解了应该怎么解决,我5分钟之内把代码写完,这些同学们就要写40~50分钟。这四五十分钟他们要一直保持对这个问题的专注思考,而同样程度的专注思考我只需要保持五分钟。这就是为什么小菜鸟们经常说工作一天很累、经常在解决问题解决到一半时找不到方向:因为速度太慢。键盘速度慢就会成倍地拉长大脑专注于一个问题的时间,就会成倍地增加大脑的负荷。本来小菜鸟们知识、经验就缺,还用这种方式让大脑疲劳,当然很快就倒下啦。

    键盘的速度会决定思维的速度,从而决定你的人生节奏,这绝不是危言耸听。想想看,我们把每天最好的八个小时用在工作上,而在这八个小时里,一个人每小时能思考和解决两个问题,另一个人只能思考和解决一个问题。那么一年过去,这两个人的差距会有多大?答案是,后者要比前者少思考和解决将近两千个问题!你想想这两个人工作一年之后会有多大差距。而造成这种差距的,很可能就是因为键盘速度的差距。

    那么,要怎样提高键盘速度?答案非常简单一个字:练。找一道编程题目,不要太难也不要太过简单,CodeKata(请自行Google)的题目就很不错。先实现一遍,找老同事帮你review代码,把不好的地方重构好。然后就反复练,每天至少练一遍,练的过程中不准动鼠标,所有操作必须用快捷键完成。每练一周,找老同事结对一次,从对方的动作中反思自己的动作是否最优化。

    效果是怎样呢?有一道题目,第一次做是一个小时没做完,练过一周大家的速度是十多二十分钟,再练一周大家的速度是三五分钟,最快的同学两分多钟。总之,最后要练到这样的速度:拿到一个问题,一边嘴上喃喃自语,一边手上就把嘴里说的东西实现出来,这时候你的思维才算不被双手束缚,你才进入一个基本的学习和思考的状态。


  10. 我对毕业生的三个期望(上)

    今年我们在成都招聘了三十个应届毕业生。中国的大学教育给学生们教了些什么我们都知道,简单说来,这三十个毕业生里,大概有一半自己在学校里做过课业之外的事,他们有一点编程基础;另一半是典型的好学生,在学校里没干过私活,于是他们没有任何编程基础。当然了,大家都学过C语言,学IT相关专业也多少写过一点程序。但是你知道,如果你谈论的是开发要跟客户收钱的商用软件,这点“基础”最多最多只能算约等于0——如果不是负数的话。

    (你觉得我讲得很夸张吗?其实,真实的情况是,不用说编程基础了,相当比例的毕业生连计算机都不会用。当然大家都会发微博会用QQ聊天会打网游什么的,这个我爹也会,显然你不会认为我爹在大学IT相关专业意义上“会用计算机”。我是说,如果一个学生读了七年IT相关专业却连在命令行里创建一个目录删除一个文件都不会,你真的很难说他/她会使用计算机。真实事例,毫不夸张。)

    还好,我们有一套培养新人的体系,比如现在痛陈“新人七宗罪”的毛超同学,连我都会经常忘记,他就是两年前的毕业生。所以放在较长时间来说,我倒不太担心新同学们没有成长。但这个职场第一步,从啥也不会的小菜鸟到稍稍像样的程序员,并且让同事们认可你有成长的潜力愿意继续教你,这一步应该怎么走?

    一帮小菜鸟跟我坐在一个桌上,天天挨我骂,又有那么多东西不会,有点战战兢兢了。于是我告诉他们:这个阶段我对你们的要求不多也不高,你有很多知识不会我可以接受,你有很多技能不会我也可以接受。我只要求三件事:

    1. 编程要快;
    2. 遇到问题要有思路;
    3. 要积极主动。

    毕竟我们招人是很严格的,能进来的都是各个高校的佼佼者,基本素质就摆在那里。只要能在很短时间内做到这三样,我就相信这个人是有潜力的、是可培养的。而且这三样,经过我的实践检验,是完全可以通过刻意练习在短时间内有明显提高的。

    怎么提高?嗯,今天先写到这里,下次接着写。