忌口之难

离开湖南老家越久,越不能吃辣了。除开单位食堂和家里的饭菜,在其他地方吃饭已经成为我的一种负担,因为在中低档的餐馆里面,川湘口味几乎是具有统治地位的,吃着麻辣口味的菜,喝着啤酒,几乎也就是我的同事朋友们请客吃饭时的常态,而我现在的肠胃面对辣椒、红油、啤酒的组合,几乎是次次悲剧,在别人觉得大快朵颐的时候,我宁愿在家吃水煮青菜。

拉肚子的次数多了,每次都会事后提醒自己,吃的时候要克制,挑一些自己成熟得来得吃,也就是说要忌口,可是几年下来,还是以悲剧收场居多,在食堂和家里吃饭得时候,我控制得很好,一年下来成功减肥五公斤,轻度脂肪肝也消失了,但是在外面三五聚餐的时候,就打破了惯常的模式,一般以迟到饱撑告终。细究原因,首先在外吃饭菜品丰富,没一样尝一口就吃了不少了,二是一般刚开始没有主食吃,啤酒的清爽就着菜的麻辣,相得益彰,不管怎样也是一种简单粗暴的美味。

忌口这回事,看起来简单,实际上也需要很强的自律能力,甚至可以说不能只靠自律,因为可以压抑自己的口味很困难,自控力总有用完的时候。除了自律,更多的需要对自我欲望与特点的理性分析,在点菜的时候,就要考虑自己的需求,吃的时候要提醒自己不要来者不拒,应该只吃自己能吃的,吃进去的种类不宜太杂,就像林语堂吃东西,开始上来多道菜都不动筷子,只有自己最爱的菜上来时,才大快朵颐,这才是懂得生活的人,克制可以带来更大的享受。

说起来我每到聚餐都会忘记忌口,可能也还是因为最近几年在外吃饭太少,当环境突然变化时,不能很好的适应,没有形成一种生活方式,而需要更多的主动的自我约束而没有养成下意识的习惯。

做人想要轻松一点,不时刻动用自己的自控力,首先要选择适合自己的环境,让适应变出一种习惯,但是环境的急剧变化又是人生必须经常面对的常态,所以应对变化时,需要把脑子的自动导航切换成主动的人工导航,带着脑子生活,面对复杂的世界,这样或许会累一些,但是人生不就是这样嘛,宁可清醒而痛苦的活着,也不要做一头快乐的猪。

关闭窗口

我们团队在开发一个算法集成软件的时候,某个成员开发了很多算法,相应的有很多算法的配置界面,一般按照惯例,都会在界面上有两个按钮,确定和取消,问题是,这位同学设计的确定按钮,在点击后没有任何反应,从内部逻辑上看,点击确定后,就按照其他控件的值做了相应的内部设置,一般来说,这时候如果没有任何错误,窗口关闭即可,用户知道自己成功完成了设置,但是没有任何反应,会让用户感到疑惑,到底刚才的设置成功了没,甚至怀疑软件是否假死了。

这自然是一个相当简单的问题,似乎都不值得拿出来一提,这位同学也是个高才生,研究生阶段研究的是密码学,对算法相当有研究,这个窗口未关闭的问题我给提出了两次,但都没有引起他的重视,今天这个问题又被其他人提出来了,他当时还是不以为然,事后我给他分析了一番,他才觉得这个事情有它内在的重要性。

这么简单的一个事,为什么他会做不好的,问题就在于这件事情太简单了,他宁愿去花更多的精力去优化一个算法,也不愿意去写一行代码把窗口关闭掉,这首先是一个站位问题,如果始终站在研究者的角度,就只会去关心一些技术问题,而忽略掉所有的非技术性问题,但现实世界中非技术问题同样重要,这就是为什么苹果公司在很多领域能胜过微软的原因。核心技术固然重要,用户体验也不可忽视,要站在用户的角度去考虑问题,这样才不会出现技术人员的傲慢。其次,这是一个性价比的问题,花很少的精力,就能显著提高软件的可用性,随手就能改的事情,在优先级里面是可以排到最高级的,虽然它可能并没有那么绝对重用,但是性价比却是最高的,这个世界的商品有它的核心价值,但是也免不了有包装,有推销,我不觉得光靠包装和推销可以变出好的产品出来,但是终归好的产品也是需要包装和推销的。

总而言之,我们有必要收起技术人员的傲慢,把该关闭的窗口都关闭了。

油与火

你是油

一点就着的汽油

散发着迷人的香味

你一点着就成了火

散发着迷人的温度

有人举着你

你就成了火把

火把拿来照明

你就成了白炽灯

灯拿来招虫

你就成了灭蚊灯

有人把你扔向汽车

你就成了汽油弹

你烧的是敌国出产的车

你就成了爱国的油

爱国的火

爱国的白炽灯

爱国的灭蚊灯

爱国的汽油弹

你浑身散发着迷人的爱国主义的味道

变成了一道爱国主义的烟

成为爱国主义的PM2.5

被爱国者吸进他们的肺

当他们死去

你成为爱国主义的骨灰

埋进你最爱的土地

几十亿年后,再变成石油

到那时,如果记得

你还是爱国的油

机器学习与待定系数法

注意,这只是为了加深理解而想到的一个类比,既然是类比,就有它不确切的地方。

在初等数学中,我们就开始使用待定系数法,比如我们知道平面上三个点A、B、C的坐标,相求它们的外接圆方程,由于我们知道这个方程的基本形式,只是有一些系数待定(圆心坐标a、b和半径r),所以用待定系数构建方程,将A、B、C坐标值带入方程可以得到关于待定系数的三元一次方程组,进而得到三个参数。

在这里,我们首先假设了函数的形态,它包含了部分待定系数,然后通过数据带入函数,求解得到待定系数。机器学习,尤其是有监督学习,跟这个过程有相似之处。

在机器学习时,我们首先假设一个分类或回归模型,这个模型包含了一些待定的系数,比如对于Logistics回归,权重是待定的,对于一定结构的神经网络,权重是待定的,然后我们输入数据,让算法学习的过程就相当于求解待定系数的过程。

跟初等数学中待定系数法不同的是,机器学习的没有绝对正确的一个函数,而只是一个针对某个指标优化的函数,模型如果针对训练的数据绝对正确,会出现过拟合现象。机器学习在模型的假设空间里找一组“好”的系数,而初等数学是找一组正确的系数。

只管的看,待定的系数越多,需要的数据也就越多,所有复杂的神经网络能较好的应对大数据样本的学习。而一个模型如果待定的系数很少,给它过多的数据学习并没有多大的作用,就像求一个圆的方程,三个数据点就够了,再多也是浪费。

努力这种幻觉

我在这边厢穷则思变的时候,网上满眼看到的都是华为辞退三十多岁工程师的新闻,简直是刺瞎我的眼睛,让我这三十出头的还想焕发人生第二春的人情何以堪。

这个世界的残酷之处在于,对于我这种无产阶级,唯有努力是我唯一可以依靠的东西,但是努力就能带来美好生活吗?那恐怕只是一种幻觉。

世界上所有的党派和政治思潮,几乎都在试图回答个人与集体的关系,公平与效率的关系,而在中国,从注重公平的幻觉中醒过来,现在似乎又陷入了一个追求效率的幻觉。

一个人生活水平低,都是因为他不够努力,尤其是那些名牌大学毕业的,自诩为精英的,因为互联网等领域蓬勃发展而获得了较好的收入的人,大多是这样想问题的,对底层人民的恶意简直是赤裸裸的。

对一个个体而言,尤其是对自己而言,努力是无产阶级唯一的可以依靠的,但是对群体而言,对他人而言,只用努力这个标准去衡量,会产生“你穷你该死”的思想,而历史告诉我们的是,如果穷的无处可逃,富的大概也就无处可逃了。所以我们每个人在追求自我的努力的时候,不得不去思考公平的问题,基本福利的问题,而在没有基本福利的时候讨论福利多寡,是一件奢侈的事情。

而不想把努力变成一种幻觉,最应该注意的或许是你和雇主的关系,对雇主而言,你始终只是个工具,你可以去要求他给基本保障,要求他有温情,但始终要有被当作工具,被兔死狗烹,被一脚踢开的觉悟,只有这样,才能置之死地而后生。我们为了雇主出卖自己的时间,完成雇主的要求,在生产环节中当好自己的角色,这是这个交换关系的根本,但是,如果同时你在工作中没有得到任何成长,那么被人取代是迟早的事。得不到成长可能有两个原因:

  1. 工作本身有问题,有一些工作在学会后会陷入简单重复,看起来是脑力劳动工作的,也可能是脑力劳动中的体力劳动,这种工作不能长干;
  2. 缺乏在工作中从成长的能力,我们有作为工具的自觉,但并不代表在工作时以交差为最高目标,这样不去珍惜工作带来的潜在的挑战,即使工作时间再长,获得的经验也会很有限,而现实中,确实有很多人陷入了这种麻木工作状态。

所有的工作选择,都应该在待遇和成长性两个方面考虑。努力应该是努力提升自我,而不仅仅是努力的重复自我,或者说,不但要有战术上的努力,更要有战略上的努力。

如果,五年工作就有五年经验,甚至十年经验,而不是只有一年经验,那么自然也能在雇主面前卖个好价钱,或者多走一步,自己也许也能当个有产者。

努力这回事,既然是唯一的依靠,那么就不得不多思考一下如何努力的事情了,否则只能沦为一种幻觉。

投资的两条路

自从我开始玩投资后,我的手机号就不知道被哪家公司卖了,每天都收到想带我发财的短信,各种内幕消息,选股大神,连上微博也会给我推荐无数个荐股师,他们的台词甚至都是一样的,都是再最低点买入,最高点逃出生天,看着这些骗人的玩意儿,我不禁感慨,股市对不同的人就是不同的东西,有的人天天盯盘,看K线图,也有的人买了股票后几个月不看一眼。

股市可能是最复杂的系统之一,影响一个股票价格的因素太多太多,以至于任何对短期股价的预测都是及其困难的,这是一个二次混沌系统,对股价的预测会带来买入卖出的动作,反过来影响股价。如果做的功课足够,可能我们能预测一下股价的长期走向,因为这主要取决于公司的成长性。

面对复杂的股市,大概有价值投资和趋势分析两个流派,我觉得着两个流派做到极致都能挣钱,但都要剔除人性的弱点,直觉往往还不如随机有效。

价值投资做到极致只要对公司做彻底的分析,然后定出两个目标价,一个买入价,一个卖出价,只针对公司的运营状况做调整即可,无论资金大小,这都是一劳永逸值得考虑的大道至简的方法。

趋势分析做到极致就是量化投资,最好是高频交易,只要我们的胜率大于50%,通过重复小的收益获得大的的收益,然而很多人的趋势投资带入了太多的感觉,甚至用一些玄学式的东西来解释,如果放弃分析基本面,而仅靠价格信号来操作,那么只有程序才能快速、剔除人的情感因素。在韭菜遍地的A股,广义的量化策略大有可为,甚至能无风险套利,然而这需要投入大量的精力去研发策略。

对我个人而言,两种方法其实都还谈不上,基本上还是凭感觉居多,以后的投资之路还是要慢慢回到理性的道路上来,要学的东西还很多,这是一场天长日久的战斗,有意思的是,这是一种学好了直接来钱的知识。

程序设计中的概念一致性

如果你写的程序是个简单的学生作业或是界定清晰的算法问题,那是值得恭喜的事情,但更多的时候,程序员要面对用户、产品经理、或是领导的模糊的需求,尤其是那些行业相关程序,需要和领域专家合作时,程序员需要从领域专家的脑子里挖掘知识,将其表达为代码,这就会牵涉到专家和程序员的理解是否一致的问题,而在程序员团队合作的时候,同样存在类似的问题。程序中的概念是现实的不同角度的抽象,同样的一个人在购物软件和博客程序中是两个范畴大不一样的概念。

传统的瀑布流软件工程过程,试图通过需求分析,概要设计,详细设计等一系列过程,先将概念厘清,但是如果问题本来有一定模糊性,需要探索时,这种努力几乎是徒劳的,因为写文档的人就不清楚所有的问题,或者他以为自己清楚所有的问题,但实际上概念不清,甚至自相矛盾,很多地方有二义性理解。虽然需求分析的书上都告诫要消除二义性,但是现实是丑陋的,几乎没有人能做到。

真正的问题不在于文档的多少,而在于所有的人,所有的过程中,对一个概念是否具有一致性,如果需求中是一个概念,到了程序中的包或类中这个概念变了样,那么最终的程序很可能是不满足需求的,如果程序员对一个概念的理解不一致,由此造成的bug虽然没有纯技术上的难度,但却可能是最难消除的。

我想对程序员而言,在概念方面,有以下几点需要注意:

  1. 充分重视概念的建立,用合适的词语表达(从这个角度看,程序中的命名问题怎么强调重要性都不为过),仔细思考概念的内涵、外延及其和其他概念的关系,在新建一个类的时候,在给类设计功能的时候,要慎重,不能以大致能表达需求为目标,而且应当能够简洁优雅的表达需求;
  2. 和用户、领域专家、团队成员,保持良好的沟通,时刻求得理解的一致性,必要时充分讨论、反复确认,要建立一个一致的词汇表,尽量让领域专家也理解设计思路;
  3. 如果有文档,时刻保持文档、代码、和头脑中概念的一致性,这一点也提示我们,太多不更新的文档,只会起到负作用,浪费时间造成误解。当然,由于人员的流动性,文档还是有很大的存在价值的

选择难走的那条路

这可能是一碗毒鸡汤。人生就是一个个的选择构成的,当你处在人生的岔路口,不知道选哪条路好的时候,是选那条看起来走过去会轻松的,还是选那条看起来走过去会困难的呢?可能大多数人都选择了轻松的路,毕竟没有人会喜欢吃苦受累,人们都喜欢待在自己觉得安全舒适的区域。但也会有少数人会选择难走的路,去主动的吃苦受累,创造不一样的生活。

所以,选择难走的路的人,需要一个比较高的目标,高过自己的懒惰与及时享乐。如果简单的鼓吹选择难走的路,不过是一碗鸡汤,而鼓吹选择轻松的路,认为不这样做的人都是傻逼,那么也是一碗鸡汤。问题的关键在于路通向何处,你想在路上看什么样的风景。

路通向何处?问的是目的性的问题,这应当是一个精神体验问题,而不是物质性的问题,因为如果紧考虑物质性,人的最终归宿在当前的科技条件下,仍然都是死亡,如果认定这种目的,结论是认为人生无意义的虚无主义。在精神上,我们可以走向不同的目的,按宗教的说法,你可以选择上天堂还是下地狱,这是人的最根本的自由,所以如果通向你要的目的地必须要走一条难走的路,那么你责无旁贷。

你想在路上看什么样的风景?这个问题强调过程重于结果,更好的风景可能在轻松的路上,但也可能在难走的路上,你可以根据各种前人经验去推测,南走的路可能有更大的惊喜,但也有一无所获的风险,理性分析可以降低这种风险,所以智慧与勇敢是共生的。过程的魅力很大程度上就来自于它的不确定性,就像那些爱情剧的魅力在于男女主角感情试探的过程,一旦情比金坚时,反而没什么乐趣,只能大结局了。

最后的问题就在于轻松和难走的判别了,有时候轻松是真的轻松,但也有时候轻松是一个假象,就像当年一直在国企中的很多人一样,可能直到被下岗的一天才意识到这一点,这时候容易的路引向了一个陷阱。而看似难走的路则还有一线生机。

所以,最后的结论只能是没有结论,选择永远是苦难的,只是,我们应当永远要去看一看想一想那些荆棘之路,而不要把它们过早的忽略,而失去了人生的机会,然后艳羡他人的人生。

学会说话

说话这件事,除了聋哑人,人人都会,即使是聋哑人,也可以使用手语。说话这件事,我们在学龄前会比较认真的学习,然后就似乎成为一种本能了,少有人再去学习怎么说话,然而又会有很多人被自己或他人定义为不会说话的人,包括不能准确的表达自己的想法,不敢和陌生人讲话,不敢当众讲话等种种症状。

说一个人不会说话,这里面包含的意义看似正常,实则很奇怪。其实人人生下来都不会说话,而又几乎人人都学会了说话,只是大部分的说话的水平在长大后增长得越来越慢,进入停滞状态。学习是一个人与生俱来得能力,也是一项一直持续的能力,通过学习,说话的能力也应当是可以不断提高的。然而,很多人,包括多年前的我,都被内向、宅、不善于和人沟通等等标签化了,我们这类人,只不说是不喜欢跟人乱哈拉,自来熟罢了,性格偏内向一点本也不是什么缺陷。一旦我们不去接受这种标签化,就会发现所谓不会说话根本就是个伪命题,不会可以学,水平低可以提高,其实我们并不需要成为一个演讲帝,无非是能够向其他人较为准确的传达自己的思想即可,而内向的人,本应该是善于形成自己的思想的。

从深入一点的角度看,说话即思考,只要勤于思考,说话不会是什么难事,要注意的只是不要把那种推销员式的口才当作了会说话的唯一标准,当感觉自己达不到或者没有必要达到时,就放弃了对自己好好说话,把话说好的努力,接受了自己不会说话的设定,而一旦放弃了好好说话,也就放弃了很多思考的机会。

有很多像说话一样的知识或能力,它往往是生活的必需品,却一般不被人当作一门严肃的学问来看待,在这些事情上,只要你付出比别人多20%的努力,可能你就能脱颖而出,当然你无法成为这方面的专家,但那往往也不是我们的目的,我们想要的是把话说好,传达好自己的意思,而不是成为说话的专家,类似这样高收益的学习,正因为它太过于稀松平常,而被大多数人所忽略,因为学习往往被错误的定义为成年前在学校进行的活动,而学习的普适性则被长久的忽略,乃至产生反智主义。

论高度重视

看过陈云的《中文解毒》后,在现实生活中开始能够发现一些以前没太注意现在觉得很奇怪的用词,比如最常见的一个让我觉得奇怪的用法就是“高度重视”。

“重视”一次的“重”本来就有强调的意味了,但是在当今广泛的用法中,“重视”一词简直是没有能力独立使用了,但凡重视,必然十分重视,高度重视,而这个带着几分虚指的动词,其主语一般都是领导。所以高度重视,是一种约定俗称的官样文章,我几乎能想象出第一个这么去写的某个秘书的得意之情,但是不幸的是,它的同行们迅速像感染感冒病毒一般感染的这个词,这就像国家之间的军备竞赛,谁也不敢停下来,谁也不敢示弱,因为别人都高度了,你要安抚民心,得到上级赏识,在遇到问题时,怎能不高度重视呢?

然而,且不说高度重视,重视本身就是一个虚指意味很浓的词,如果没有强有力的可见的措施,何以谈得上重视,而高度的滥用,进一步把这个词虚化了,反正只要做出了一点点的反应,就是高度重视了,所有的等级都是最高级,看文字的人也就逐渐麻木了,难以去分辨究竟是不是采取了及时有效的措施。

类似的说法还有“大力提倡”,“着力推动”等等,看看新闻联播,这类加强语气的词的滥用简直触目惊心。这就像一个男的对女朋友发誓:我爱你,我真的爱你,我真正的很爱很爱你。如果没有平时的润物细无声的表现,这种台词说出来只有肉麻加恶心而已。