朱光耀暗示中国决意忍受短痛来推进改革

今天看到华尔街日报中文版的这篇文章。如果从黄仁宇或其他西方汉学家的角度来看,中国现在的经济问题基本上仍然是封建帝制时期乃至毛时代的遗留问题,本质上是社会下层组织结构的问题,因为大批农民和村落无法以现代货币经济的方法来管理。不过我很好奇朱光耀指的短痛是什么,既然经济学家指出,低通胀和PPI下跌可能造成企业破产潮甚至金融危机,那么这样的短痛能够换来经济结构上什么样的变化?

对近代中国了解的越多,就越觉得在美国待下去意义不大。因为我当年最讨厌的那些事情,比如专制,封闭,落后,这样那样的责任和限制,现在看来也没那么讨厌。当年我最向往的那些事情,比如民主、自由、个人主义,丰富的物质生活(包括夜生活),现在看来也没那么有趣。现代中国的各种问题,并不是像民主进步人士们讲的那样,是一场革命就可以解决的,看伊朗的伊斯兰革命可知;更不像他们所指责的,是政府的无能所致。把今天的整个美国政府,上至奥巴马,下至DMV的工作人员全部迁至中国,他们也未必会做得更好。有些事情,是超越人力的控制范围之外的。了解的真相越多,承担的责任也就越多,因为你清楚什么事情是你没法做到的,但也更清楚,你应该为之努力的事情是什么。

教育者

回想起来,求学时遇到过不止一位给我很大启发的老师,他们的共同特点是不止教了他们任教的那门课,还给了我很多思考方式上的启发,且这种影响是潜移默化的,因而虽然当年或因为羞涩或因为成绩糟糕(这个好像一直都在发生)而没有多和他们交流,现在脑海中却非常清晰地留有他们给我的印象,但却没有具体讲课内容的痕迹。人生中遇到一位这样的老师已足够幸运,我居然还遇到了两位。他们是当年延安中学的陈伟春老师和中山大学的蔡国扬老师。

当然,除了这两位,我还受到了很多并未亲眼见过的老师的启发,比如最重要的Vincent,比如讲秦始皇的吕世浩老师,还有最近发现的Joseph Campbell(其实Vincent很早就提过他,但耽于我对神学的偏见,一直对这位充满智慧的老先生颇不以为然)。一个教育者最关键的能力就在于inspire how people think,我想以上这些老师都对于我今天思维方式的塑造影响深远,也对他们无以为报,唯有希望有一天我也有机会有能力inspire一些走在探索未知的孤独旅程上的小朋友。

What separates a junior Rails developer from a senior one?

Someone recently asked the following question in the discussion forum of the Rubyists LinkedIn group: What separates a junior Rails developer from a senior one?
 
My response follows. Join us at http://www.linkedin.com/groups?gid=120725 to weigh in on this and other topics of interest to Rubyists. As of today there are almost 1,200 members, including numerous movers and shakers in the Ruby and Rails communities.
 
“Distinguishing between junior and senior people in the Rails world is not so different from making the distinction in other web development environments.
 
“Junior Rails people have not dealt with scaling issues to the degree that senior people have. Getting a public-facing Rails application to perform under significant stress is more challenging than doing the same with other building materials such as PHP. Senior people know how to performance-test Rails applications, where to look for bottlenecks, and how to eliminate them one after another until performance is acceptable in real conditions. The Rails community loves to poke fun at the notion that ‘Rails Doesn’t Scale.’ All joking aside, surviving a traffic spike and handling increasing load with Rails is no laughing matter.
 
“Junior people are less experienced with deployment issues. Rails was created to scratch the itch of speeding web development, so its advantages show up in programming tasks, not when it comes time to push to production. Most senior people have used multiple deployment tools and know their limitations and pain points.
 
“Junior people are less disciplined and experienced in regard to automated testing best practices. Testing can be a bit of a trap in that it’s easy to invest too much effort in the wrong places. Senior people have used multiple libraries and DSLs for testing and understand the purpose and relative value of testing at the unit level, the integration level, and the system level. Senior people know the pain points of testing client-side code and why it’s important to do it right. Senior people know the value of clean, well-tested code, and also that testing has to be right-sized for the team and the product being built.
 
“Junior people are less likely to have ventured outside the standard Rails stack. Senior people have used a templating DSL other than ERb, an ORM library other than Active Record, and databases other than MySQL and SQLite. They’ve written secure authentication from scratch as well as having used plugins for it. They have experience with background processes, web services interop (RESTful and/or otherwise), and other aspects of connected application development. Senior people have also dipped their toes in the water of other Ruby web frameworks, and they know something about progressive web server frameworks written in languages other than Ruby.
 
“Junior people generally know more about the Rails framework than they do about the Ruby language. Senior people recognize that the power and beauty of Rails comes from its basis in Ruby. They can explain how Ruby makes possible all the killer features of Rails, and how the Rails clones for other languages and platforms are hobbled by the language they are built on. Senior people have no fear about delving into the Rails source code.
 
“Junior people don’t understand as profoundly all the reasons why Rails is such a huge win. Lots of people have got on the Rails bandwagon in the five years since the first release in summer of 2004. Not all of them have battle scars from diverse experience writing code for the web. Senior people can articulate why Rails has caused a tsunami across the open-source and commercial market space, changing the shape of new frameworks and established ones. Senior people can tell you where the best ideas in Ruby and in Rails come from, how they’ve developed over time, and where they’re going in the near future.
 
“Junior people are more likely to think technology is all that matters. Senior people know that small teams of experienced players, who communicate well with each other and their stakeholders, are the secret sauce to building the right product on time and under budget. Senior people can explain the advantages and drawbacks of various project management approaches and which ones are best suited to a given situation.
 
“This post is starting to feel a little curmudgeonly with all the talk about ‘senior’ vs ‘junior’ — sorry.”

2014新年志向

今年是2014年的第一天。回顾2013,非常惊讶的发现过去的一年里发生了很多事情,远远超乎我的意料。在我的印象中,2013年是非常平淡也没有亮点的过去了的,好像什么事都没有完成。但仔细总结一下,其实发生了很多事情,现在回首来看,颇为感慨。

1. 换了工作
6月底,我被裁员了,结束了为之努力了两年的project。在这两年中,我学到了很多东西,从一个Ruby菜鸟,成长到可以教别人Ruby和Rails,也可以颇自豪的称自己为Rubyist。但其中最重要的转变,可能还是我从一开始的羡慕敲出100行代码迅速解决一个问题的能力,到逐渐意识到,一个项目要真正给别人创造价值,有卓越的编程能力是远远不够的,你需要对这个行业有充分的了解,你需要了解你的用户,你需要了解如何去market你的价值。如果没有这些,一个项目非常容易失去方向。而这些东西,都是需要投入很多时间去与人交流,学习和实践,而不可能在短期内获得的。也是因此,我意识到自己要学的东西还有非常,非常多,所以把一直以来非常强烈的创业的念头放到一边。而现在这一份新工作,恰恰能够让我近距离的观察到,一个项目的方向是如何结合对行业的了解而确定下来的,同时,也可以有足够的机会试验各种新的技术,比如最近,我们开始用Coffeescript来代替Javascript了,而我也有了机会自己在项目里加了AngularJS,接下来还打算升级到Rails 4。我想,我还挺幸运的。

2. 开始freelancing
在被裁员而没有找到工作的这段时间里,我尝试了很多新东西,其中一项就是接了若干freelancing的project。在这样的project里,你的技术能力可能不是最重要的,反而是如何有效的与客户交流从而更好的理解他们的意图更重要。相对于工作,这些project里你不需要写tests,也不需要保证没有bug,很多东西只要能工作就行了,是实用简约到极致的体现。但相对的,你会有很多机会试验很多更新的技术,Rails 4 + AngularJS + CoffeeScript基本上是标配,正好可以把这些东西反过来在工作中使用,于是我目前为止在这些新技术上领先同事们一点,也算是物尽其用。在freelancing以外,很多时候你还要保证找你来做这个project的人明白你在做什么,所以这实际上还是一种tutoring,对交流能力是非常大的提高。

3. 我不害怕公众演讲了
在12月,我第一次参加了一个hackathon,在最后,pitch了我和一位designer合作的一个小app。我发现,我居然不害怕公众演讲了,从初中以来就困扰我的紧张和结巴,在我面对着上百号人阐述着我们做这个小app的初衷的时候消失了。虽然这个app最后不能算是做得很好,虽然这个pitch最后因时间因素被打算其实很短,但这个意外之喜,还是让我感到这个hackathon没有白去。

4. 我重新学会了骑自行车
这个夏天,还是在被裁员而没有找到工作的这段时间里,我重新开始学自行车。其实小时候父母不止一次的教过我,但每次都因为我的任性不愿学而中途作罢。这一次正好借着Bike New York普及自行车的东风,我趁机去了很多次他们的骑行,沿East River Park骑了一次,甚至还去了一次自行车比赛,叫Hudson Valley Ride,骑了15迈,骑下来到最后连车把都没办法握住。

5. 开始早起
从11月开始,我开始尝试晚上10点睡早上6点起,实践证明,这样做的效果非常好,在早上我的学习效率很高。这是一个让古今中外很多有成就的人受益的习惯,李鸿章就曾经提到,在曾国藩的幕府时,曾要求的早上很早起床让他受益终身。我也发现这样做之后早上工作状态的变化,本来每天早上乘地铁上班时都很没有精神,到办公室之后的一段时间都是头脑不清楚要靠咖啡来提神的,现在地铁上别人都睡眼惺忪的时候我可以很精神的看书,到办公室之后也可以马上精神振奋的开始工作了。这要非常感谢Vincent的“晨起仪式”这门课,没有他的讲解,我可能根本不会这么做,还是每天1,2点睡,早上一直萎靡不振。

6. 和女朋友分手了
合不来则分,感情的事,多说无益。

7. 我喜欢上了一个女生
这是分手之后的事情了。其实我还没有想好要如何处置自己的感情,可能不处置顺其自然是最好的处置吧。

8. 开了一个英文twitter
其实一直有人说我的英文很好,但我最终的目的是,把“英文很好”变成是像中文很好一样,自己身上不需要去刻意关注的部分。这仍然需要一点时间,不过用英文写作可能是我接下来要尝试的。那,就从英文twitter吐槽开始吧。

9. 把bartending这件事情发扬光大了
第一次有机会服务众人给大家调酒,博得不少赞扬,颇感激励,虽说发现妹子们觉得只要好喝就行了,所以一直在尽可能多的给她们塞Irish Cream。

总结写完了,下面是2014年的新年志向:

1. 多读书
翻了一下豆瓣,发现我整个2013年才读了4本书,其中The Road Less Travelled是2012年就开始读的,居然到2013年的最后几天才读完。有好几个月的时间我的kindle都被丢在一旁。豆瓣读书和goodreads的想读清单都越来越长,有太多书该读了,2014年争取每天早上或下班后读书2小时。

2. 重新捡起长跑
整个2013年都因为脚踝的伤势而非常缺乏运动,年末因为滑雪时的糟糕表现终于认识到了自己的体能不济,原本能一口气跑完的Prospect Park一圈现在要停下来休息3-5次。看来是时候继续2012年的half marathon training了,目标是每周去三次健身房以及周末去一趟Prospect Park。

3. 继续增强专业技能
Javascript仍然是我的弱项,不过HTML和CSS应该暂时不需要花太多精力了。在学习AngularJS和新的framework的同时,可能还是要花时间了解Javascript这个语言本身。过去一年虽然学完了大部分Code School的Javascript课程,还是不免觉得只触及了皮毛,往深处挖掘Javascript这个语言本身,于此同时花点时间研究一下各种framework,是我接下来要做的。在Ruby和Rails方面,可能要看稍微进阶一点的东西了,尤其是testing方面,找找best practice patterns同时争取向Test-Driven Development转型,多了解Rspec和cucumber。

4. 了解相关领域的知识
我觉得自己现在很需要了解的知识包括,user interface design,web performance optimization,business foundation和marketing strategy的基本知识。时间只有那么多,可能会更多的关注user interface design和web performance optimization吧。

5. 多学几次滑雪
离纽约近的山就那么几座,好在有很多去Hunter Mountain的one-day trip,在滑雪季结束前争取去几次。以前都是一年只能去一,两次,结果下一年基本是从头学起,每次都摔得七荤八素。不能这样下去了!!!

2014年,有很多的想法希望实现,结局如何,拭目以待吧!

Demagogue

今天看到一个非常有意思的词,叫做Demagogue。这个词在字典里的意思是,a political leader who seeks support by appealing to popular desires and prejudices rather than by using rational argument,大意就是一个政治领袖通过煽动底层人民的不满情绪,来寻求暴力行动满足自己的政治需求。

 
这出戏码自古希腊以来就有了,在任何推行民主的国家都屡见不鲜。而且,这出戏码会一直存在下去,因为:
1. 不管在什么国家,底层人民是一定会有不满的
2. 不管是在什么国家,没有独立思考能力的人是一定占多数的
3. 民主决定了,不管你有没有思考能力,决定权是在多数人手里,这是按人头记的

 
这意味着,如果一个政治领袖能够很好地利用这样的不满情绪,他可以利用底层民众来达成任何他想达成的目的,一般来说,这就是推翻政权,自己上位了。当然,在历次改朝换代的过程中,很多政治领袖都会用这样的手段来让自己上位。否则,你拿什么实力来推翻现有政权呢。但取得天下之后做什么,则完全会暴露他自己的动机了。毛泽东和朱元璋就是例子,不过是反面例子。所以,真正一心为天下苍生的人是很少的,非常、非常的稀有。这除了需要你有济世之才以外,还要把天下百姓的福祉置于个人福祸之上,很多时候甚至是个人安危性命之上。所以自古以来的有道明君是很少的,而且其中早死的很多,但是好坏对半开的并不少。随时随地做每个决策以天下苍生为己任,是会消耗很多能量,体力和健康的,是非常累的,这个平衡也非常难以保持。我可以理解这样的有心无力,因为其实其中最困难的部分是,作为一个有道明君,你一定明白不管你做了什么,天下的百姓大多数是不会理解你的,反而不管你有多么鞠躬尽瘁,要是发生旱灾第一个想的就是抱怨你不给力。你给他们解释你为什么无法给力,会发现你完全无法跟他们沟通——认知程度远远不在一个水平上。在这个基础上,就是:人完全没把你当自己人,你也很难跟他们有效沟通的基础上,居然要求你凡事为他们考虑,这是需要多么宽广的胸怀和坚定的内心才能做到的事情。

 
不知道为什么,这个词让我想起了六四。自从看到一个记者断章取义了马云对六四的观点之后,我就一直在思考他所谓的做困难的决定。其实更年轻的时候,我对六四当中发生的流血事件一直是非常愤慨的,觉得怎么可以这样枪杀手无寸铁的学生。但是现在想一想,六四是Demagogue的一个经典例子。当时学生和政府,是没有任何有效沟通可言的,学生们会提出非常理想化、非常不考虑人性阴暗面的条件,你可以去执行这些条件——那政府就剩不下几个人了。在完全无法沟通,但如果不让学生们从天安门广场撤走,全国各地的抗议会有如星火燎原的情况下,武力是一个政府能做出的最迅速,见效最快的反应,虽然远期来说,后患无穷。但这就像你得了某种绝症,只有一种药能治,但这药副作用很大。你当然可以等等看,说不定过段时间研究药物的人把副作用降低了呢?但也说不定过段时间你就挂了。这,大概就是马云所谓的做困难的决定。回过头来看,这并不是最好的决定,但在当时这个能够让所有人都起码丧失部分理智,处在极大压力的环境下,这是邓小平能做出的最好的决定。他,只是一个普通人,不是神仙,不是圣人。

 
那么什么是最好的决定呢?其实纽约市政府处理Occupy Wall Street抗议的方法就并不太差,不管天安门广场上有多少人,你都可以派出更多的军队和警察请他们离开,然后24小时封锁让他们不能回来的——当然,这个过程中,如果士兵和警察人身安全受到威胁,是绝对可以还击的,也绝对可以逮捕动用武力的抗议者。主动派出士兵武力镇压和受到威胁反击的区别在于,后者即使发生,抗议者事后也会觉得自己理亏,而万不会整上十几年的天安门母亲。过上6个月,抗议者中的很多人就会发现,天天在广场上待着并不能使自己的生活变好。于是他们又会回到原来的考试,读书,工作中去,要再组织他们冒着被逮捕的风险来一次这样无用的抗议活动,就要难得多了。只要天安门这个极具象征意义的地点不再有抗议者,抗议还会持续一段时间,但终究会归于平静。

 
最后我想说说天安门母亲。知识分子最大的缺点大概在于,他们太有骨气,太坚持自己的价值观,来不得半点扭曲,牛角尖钻到底。如果我出了车祸然后挂了,完全是对方的责任,我会希望我的父母能够尽最大努力争取到最多的赔偿金以后,好好活着,用这些赔偿金去安享晚年,而不是天天追着肇事司机要他不得安宁终身忏悔。因为,如果我已经挂了,而他也是一个正常人,这已经会是他一辈子的阴影,一定要求他忏悔又有什么意义呢。不过,对中国人来说,白发人送黑发人可能是人间最大的痛苦之一,所以大概你很难真的这样去要求他们继续自己的人生。能够平静面对苦难并且最后从苦难中走出来的人,大概比有道明君还要少吧。

超越

当年刚到上海读高中,印象深刻的是,每次课间休息全班叽叽喳喳的讲着上海话,只有我们几个外地生,小心翼翼,不知所措,听着同学们的话题半懂不懂。现在想想,那时候一举一动都很害怕自己“不上海”,被哪个大妈看出来是“乡哦宁”然后坑了。因为自己的格格不入,所以分外仇恨上海,恨不得秒秒钟逃回家去——虽然就算能逃回家去,出去买早饭跟推餐车的大妈讲平阳话,大妈也是要回我普通话的——基本上,我就是到哪里都会被认为是外地人。

包括现在。公司里的同事工作间隙聊的乐队啊,明星啊,电视剧啊,我通通插不上话。越插不上话,越想要插上话。越刻意的想要插上话,讲起话来就越脸红脖子粗,本来英语就离native speaker很远,一脸红脖子粗就更讲不清楚了。还好同事们对我都很照顾,如果有什么难懂的俚语,都会注意一下我是不是能够明白,如果不能,还会耐心的给我解释。还有一个女生,会非常耐心的听我描述夜礼服假面这个角色——他们叫Tuxedo Mask——由于不知道他英文叫什么,我可是绕了很大一个圈子好不容易给描述出来的。他们对我,就像当年在上海的同学们。但现在的我,也就像当年在上海,生怕哪个大妈看出来我是外国人然后坑了。

但是现在让我回到上海也好,香港也好,我会害怕被看出来是外地人或者大陆人么?我记得三年前到香港,在机场的万宁买东西,刷银联的卡,好像是有效期过了没有成功,店员一脸不爽。然后我就刷了BOA的卡——接着,我就能感觉出店员明显的态度不同。现在想想,换了我是店员,我保不准也会这么干的,起码大学时的我,看到外国人还是跟看到珍稀动物似的,恨不得凑上去跟他们“练口语”的。只是真的轮到自己,在若干个华人很少的场合被外国青年/中年/老年当做珍稀动物打量或用“nee hao maaa”搭话之后,才明白这是多么二逼的一种心态和行为。现在的我,大概会微笑着面对这些充满小市民气息的举动。因为,我早就过了需要借助自己因为是”上海人“或者”香港人“的身份而牛逼的阶段了。如果一个人最自豪的地方在于他是上海人或者是香港人,并且很喜欢拿这个出来说事,那么你知道,这个人自己并不那么牛逼的可能性很大。包括学校也是一个道理,如果你目前为止最自豪的成就是从某个学校毕业了,那么,恐怕你目前为止的成就并没有多少。奥巴马绝对不会觉得,自己一生中最大的成就是从哥伦比亚毕业了。

这也是为什么,虽然现在很手足无措,但我明白自己总有一天会超越自己作为中国人的身份认同的。起码我现在的目标,是英语讲到接近native speaker的水准——是的,就是大山的中文水准。这是我很多年以前就应该去做的事情,拖到现在,真是太惭愧了。不像很多人自己学不好英语自我安慰的借口,你并不需要是一个天才,才能够在成年之后把英语讲到接近native speaker的流利。