王辉的博客

热情洋溢的程序员


  • 首页

  • 读书

  • 标签

  • 归档

  • 搜索

比赛失利了以后

发表于 2018-11-01

今年参加了法国最佳程序员(Meilleur Dev de France)比赛,结果第一轮就惨遭淘汰,非常可惜,总结一下失败的教训,希望下一年能比的更好。

之所以止步第一轮,有几个主要原因。

首先,是太在意得失了。第一次取的了不错的成绩,大伙包括自己,都有很高的期待。开赛前,老板还给我说,如果进了前二十就请客吃饭。越是在意得失,就越难集中注意力。

除了心态,另外是解决问题的方法。越是到关键时刻,越不能像无头苍蝇一样乱撞。乱撞的成本太高,这次浪费了不少时间,纠结是大于等于,还是纯大于的一些操作上。越是乱,越要冷静的思考,可以画个图,演算一遍算法,每个细节都要有理论的支撑。

冷静之后,还要提高考虑问题的层面,不要着急的直奔方案,而是要先申清楚所期待的输入输出,避免做一些错误的假设。如果开头的假设,是不正确的,就像盖楼一样,盖得再高,也要推到重做。具体的来讲,就是可以花上一分钟的时间,把题目举得例子都先扫一遍。

最后一个原因,就是生搬硬套。这些年来,大大小小的比赛也参加了不少,自己也积累了一些常用问题的解决办法。可过多的依赖已经写过的代码,也是有风险的。已经写过的代码,往往是经过提炼和抽象,解决一类问题的。如果要重用这些代码,必须把现有的问题转化成既有方案能适用的样子。这个转化的过程,很容易拖慢解题速度。比如这次我遇到的问题,其实是一个很简单的深度遍历的问题,如果生写代码,几分钟也就能搞定了。我却过度的依赖一个已有的框架,做了一些转换,结果转换的过程中,出现了一些差错。

可归根结底,还是平时训练的少,自己如果真的掌握的已经炉火纯青,也不至于在压力的情况下就败下北来。

失败的滋味,很不好受,特别是这种有排名的比赛,就觉得你都工作七八年了,还比不过,那些还没有毕业的大学生,情何以堪!当天晚上回来,就一直懊悔,为什么会犯那么低级的错误。虽然会难过,但也会暗示自己:不能只注重结果,过于的在意输赢,很容易就导致一个人在失败的时候,完全放弃。参加比赛,更重要的是激励自己平时的积累,保持思维的敏捷,学习不能停。失败了,就意识到了不足,继续加油!

推荐文章(由hexo文章推荐插件驱动)

  • Java的枚举和接口
  • 代码洁癖
  • 优化尾部递归
  • 用正确的方法学习编程

再见Murex

发表于 2018-06-05

在Murex工作了七年,到了说再见的时候。在这里,回顾一下在Murex的成长历程,解释一下离开的原因,也对未来做个展望,希望能对大家有所帮助。

成长

七年里,得益于优秀的同事,我一直在成长,回想起来,有几个关键节点,分别是积累的效果,主人翁意识的觉醒,以及对程序员价值的探索。

积累的效果

日积月累,虽然每次进步特别小,但慢慢的,会有惊喜。拿每周四中午的CodingDojo来说,虽然有时候,两个小时,一个问题也解决不了,但慢慢的,从心底领会到了,动态编程的奇妙,优先队列的强大,双指针的无敌搭配。这一点一滴的积累,加深了我对数据结构和算法的理解。注重积累,不仅让认知能更深一层,而且当我们注重点滴的进步,而不是最终结果的时候,我们能更好的克服拖延症,更好的保持长期学习的动力。

除了CodingDojo,还参加了很多其他的活动,当初参加的Scala学习小组,就为我今天找到新工作打下了基础。还有那么多次的CodingGame比赛,HashCode比赛,让我接触到了工作中不可能碰到的离散优化,人工智能,今天没有用,搁一边暂且不说,视野得到了扩展,说不定哪天就用上了。

主人翁意识

主人翁意识,简单的说,就是自己对自己负责。职业规划,工作环境,没有人会为准备好一切,你必须主动管理。

这个意识,工作久了,才容易体会到。起步时,需要学的东西很多,做完,领导会分配下一个,让人应接不暇。上手后,有了时间和精力,观察身边的人和事,并非都如意。可能所在团队目标不清晰,可能代码中测试太少,可能同事间的分享不够多,可能会议效率低。如果你认为这些都和你没关系,或者天真的以为领导们会解决这些问题,那么等待将会是漫长的。

主人翁意识,就是主动找路子。我曾做过一次尝试,为了营造交流的氛围,办了一个Java技术交流会。不仅结识了很多大牛,还改变了身边的技术环境。

程序员的价值

最后一个关键节点,是对程序员价值的探索。如果说前两个节点,注重的是自身技术的提升,自我意识的培养,那么关于价值的探索,让我跳出了我的范畴,因为我终于体会到,一个人的价值,不仅仅取决于一个人本身的能力,更多的是这个人如何用他的能力,去帮助其他人。

离开

离开一个工作七年的地方,是一件不容易的事情。因为离开的不仅是企业,还有朝夕相处的同事,朋友。究竟是什么原因,让我做了离开的决定,起初的时候,我心里也不清楚,但总有一个声音在暗示我,要换换地方了。后来明白了,原因有很多个,一是为了探索。换个地方可能更好,也可能更坏,没有人能预测未来,这就是探索,有风险也有回报。其次,就是当你欣赏的人,陆陆续续都走了的时候,你留下来的动力就会越来越少了,确实有一些人有这样的魅力,能带你走。

探索

首先是不同的企业所处的阶段不同。Murex,已三十有余,成熟的商业模式,遍布世界各地的客户,毋庸置疑,这是一家成功的企业。还有的企业,可能在竭力生存,也可能在兴奋的扩张中。我想置身于这种环境去体验初创的感觉。也希望在这种多变的环境中,多作贡献。

其次,就是探索一个新的行业。有些人讨厌金融,说玩来玩去都是钱,但金融里能让我们学会管理风险,衡量一个东西的价值,培养投资者的思维。除了金融,还有很多有意思的领域值得尝试,比如电商,我想尝试一种新的行业,也解锁一些新的技能。这里插一句话,我们应该珍惜和利用作为程序员的优势,因为我们几乎可以从事任何行业。

最终,就是探索一种新的做软件的方式。传统的软件行业,软件带来的效应更多的是数字化,自动化,提高效率。而大数据背景下,软件改变的是人们思维方式,以数据为导向。我想探索大数据公司中,数据工程师,数据分析师,数据科学家,还有产品,销售的人们是如何工作的。除了数据导向之外,还有软件交付的模式,传统的交付模式,是把软件安装的客户端,SaaS是一种基于云计算的交付模式,用户不需要安装任何东西,打开网页就能使用,它的好处是软件的交付周期可以更短。

探索,表面的意思,是尝试一些新的东西,初创也好,大数据也好,其实更深次的意思,是一种危机感,怕跟不上行业发展的速度。

欣赏的人走了

我比较欣赏的同事,从我离开的前一年,就有人走了,当走了第一个的时候,我觉得是他有自己的打算,后来,离开了第二个,第三个,第四个,最后就是带领我们往前冲的领导也走了。每走一个,就代表着朋友就少了一个,就意味着能当你老师的人少了一个。直到最后,你会发现能和你一起玩竞技编程游戏的人没了,能和你讨论Clojure的人没了,能交给你如何使用strace命令追踪系统调用的人也走了,留下了一丝悲伤,这时候也基本是自己要走人的时候了。

感谢

说到最后,还是要感谢Murex给我带来的七年美好时光,还有在Murex交下的那么多好朋友。也许有一天,我在外面混久了,发现所有的决定都是错误的时候,还希望能回到这个梦开始的地方。

推荐文章(由hexo文章推荐插件驱动)

  • 不必要的程序员
  • 当过班长的程序员
  • 当程序员老了
  • 最无用的程序员必备技能——代码中英文单词的正确发音

越是老板越友善

发表于 2018-05-07

身边有不少朋友都知道,我正在谋划一款外卖应用。筹备过程中,我请教了好几家餐馆老板。先抛开应用的具体功能不说,老板们,无论男女,清一色的都特别友善,让我很感动,很受启发。

虽然我性格比较热情洋溢,做这款应用也是为了给餐馆带来更多的客户,但是在和老板们打电话之前,心里依然没谱。担心,老板们日理万机的忙,没时间听我瞎白活。可出乎意料的是,他们每人,不仅听我把应用介绍完,还帮我提意见,最后还鼓励我说,“大家都在创业,不容易,希望能多帮助,多合作”。

这给我心理造成了比较大的反差,后来我突然意识到,也许正是因为他们友善,所以他们才做成了老板。因为对人友善,保持共赢的心态,可以让合作的大门常打开,给别人一个机会,也是给自己多谋条出路。

罗振宇2018跨年演讲,有一句话,颇具深意。说咱们这些传统的小企业,没有开发互联网产品的能力,是不是意味着,就要被这个时代给抛弃了?答案是否定的,我们虽然没有独立开发产品的能力,但我们身处一个好时代,只要略微保持一点开放的心态,像阿里,腾讯这些巨头们,早已给我们准备好了粗壮的大腿,让我们抱!那些将被时代抛弃的人,是那些大腿放在了他们面前,都不愿意抱的人。

后来,我开始反思自己,在平常的工作中,是不是有些时候,我忙昏了头,丢了耐心,听不进别人的想法或建议,是不是做了那个大腿放在面前,都不愿意去抱的人。

非常感谢友善的,捌玖零的郑老板,锅色天香的金老板,京品堂的张老板,和蜀味的张老板对我的帮助。

推荐文章(由hexo文章推荐插件驱动)

  • 执着的创业者
  • 组织了场关于精益创业的演讲
  • 获了一等奖却仍然失败的创业经历
  • 创业故事|市场部门基础设施搭建

如何与初创公司谈期权

发表于 2018-04-02

我曾经与创业公司谈过期权。当时了解的不多。为了搞清期权的来龙去脉,中间做了一些功课,请教了一些明白人,接下来给大家分享一下我学到的关于期权的知识,希望能帮助你和初创公司把期权的问题谈明白。

为什么有期权?

最简单的薪资构成,就只有固定工资。你干的好与不好,都影响不大,只要公司不倒闭,你就能靠它养家糊口。有些企业为了激励员工,会在固定工资上,加上奖金,你表现的越好,奖金就越多。

另外一种比较常见的构成,就是在固定工资,奖金的基础上,再加上期权。这时候,如果你的工资和奖金水平没有因为期权的引入而受到影响,那么公司就是为了更大的去激励员工,不仅要自己表现的好,还要把公司的市值做上去,因为公司越值钱,期权也就越值钱。如果你因为拿到期权,而放弃了一部分工资和奖金,那么,公司的目的就是想用未来可能能赚到的钱,来抵今天工资和奖金。但未来是不确定的,所以公司想让你分担一定的风险。

所以期权既可以用来激励,也可以用来让员工分担公司的风险。

什么是期权?

说完了期权的目的,下面我们来看看期权到底是什么。如果你和公司今天签好协议,双方同意在两年后,不论公司的股票值多少钱,你都有权利以10块钱的价格买入公司100股股票。签了这个协议,就说明你拥有期权了。

今天就定好明天你能买的股票的价格和数量,这就是期权。期权不是股份,只是一种选择的权利。如果公司经营的好,两年后估值翻了一倍,到了20块,别人需要20块钱来买,你10块就可以。如果经营的不好,跌到了2毛,你当然可以不买,也不损失什么。

由此看来,期权相对于股份来说,你承担的风险会小很多,收益也相对没那么大。这也是为什么一般只有公司的创始人和最最早期的员工才拥有股份(俗称干股),他们承担更大的风险,也有可能拿到更丰厚的回报。

期权如何兑现?

既然公司希望用期权来激励和分担风险,就希望你能真真正正的为公司效力。他们不希望你工作短短一阵子,兑现了期权,拿了股票就走,然后坐享其成。所以期权不会一下子全给你,而是采用分期的方式授予(Vesting)。比如公司承诺给你100股的期权,你只能在工作一年(Cliff)以后才可以开始持有,然后每多工作一年,可以兑现25股,干满四年才能兑完100股。

期权真正兑现了有什么用?

如果说,公司一直没倒闭,并且公司的估值也在不断的增长,你顺利的干满四年,拿到了所有承诺的股票,这就代表你一飞冲天了吗?不一定,必须有人愿意出那么多的钱买你的股票,你的股票才真正的有价值。如果公司没上市,股票的流动性就受限制,愿意出钱买你股票的人,也就受限制。所以公司不上市,你手里的股票也是有风险的。

拿多少期权才合适?

假如说,你的期权可以让你用10块钱的价格买100股,表面上1000块,可和其他人比起来,你是拿得多还是少呢?这时候,你需要知道公司一共发行了多少股票。如果发行了100万股,那么你占公司的不过万分之一。所以当公司已经有上百人的时候,你所占的比例肯定要比百分之一少很多,甚至少几个数量级。

实例

我曾经拿到过两家初创公司的Offer,一家刚经过B轮融资,融了4200万美元,一家A轮融资,融了500万欧元。他们对期权的态度,完全不一样。

融了4200万的公司,规模大概200人左右。他们不发期权,薪资的构成中,只有固定工资和奖金,期权只有达到了一定级别的时候才会有。公司发出的信号就是,我不需要你分担公司的风险,我当前有足够的现金流,来招你,如果你真想从公司的发展中获得额外的红利,就要表现的更突出,提升到一定的级别。这家公司,虽然我来来回回强调了三次我想持有期权的意愿,人家还是闭口不给。只是让了一步,说如果你干的好的话,我在一年以内给你升级,到时候再派发期权。

融了500万的初创公司,只有15个人,他们的薪资构成相对复杂。除了固定工资和奖金,还有入伙时的欢迎期权,以及接下来每年都可以获得的新期权。但这家公司在固定工资上,和上一家有差距。他们的信号是,我现在资金状况没那么好,不能给你发很高的固定工资,但是我愿意让你分担公司的风险,用期权弥补你,如果我们发展的好的话,你的期权会特别值钱。他们还尝试说服我说,公司的估值会在三年内翻十倍,所以你今天的牺牲是值得的。

结语

所以期权有没有,要看公司发展到的阶段,你如何选,要看你承担风险的能力。写这篇文章,最重要的目的,就是要告诉你,期权是一种激励和分担风险的手段,真真正正做到公司上市,股票翻翻,需要很长的一段路要走。最后给在法国工作的朋友发个福利,法国的期权叫做BSPCE(Bons de Souscription de Parts de Créateur d’Entreprise)。

推荐文章(由hexo文章推荐插件驱动)

  • 执着的创业者
  • 组织了场关于精益创业的演讲
  • 获了一等奖却仍然失败的创业经历
  • 创业故事|市场部门基础设施搭建

操作系统对CPU的控制权

发表于 2018-03-25

感谢《Operating Systems : Three Easy Pieces》这本书,我终于看透了操作系统是如何控制CPU的。很久以来,我都有一个疑惑:操作系统是代码,应用程序也是代码,同为代码,凭什么操作系统对CPU有控制权,这种控制是如何实现的。

第一个问题,凭什么操作系统有控制权。当资源有限的时候,大伙对资源的使用,必定会出现分歧。如果没有人控制,就没有秩序。有的人抓住资源不放,有的人等到花儿谢了也轮不上。各自都只给各自着想,公平无从谈起,更分不清个轻重缓急。所以,我们需要一个管理者,让资源的使用更加高效,更加公平,更加灵活。

第二个问题,操作系统如何保证对CPU的控制,如何阻止不法分子钻空子。下面大家会看到,所谓的控制权,就是看CPU跑的是谁的代码,如果跑的是应用程序的代码,应用程序就决定CPU做什么,如果跑的是操作系统的代码,操作系统就可以选择,下一步把CPU交给谁。

第一招,叫系统调用。大概意思就是,应用程序,你用吧,我让你用,但你不可能只用CPU吧,如果你需要内存,文件,网络等资源,你就得调用我。如果你调用了我,CPU就跑了我的代码,我就可以把控制权拿下。可这一招,有漏洞,有的程序,对CPU的需求特别大,对其他资源的需求少,所以它就可能长时间占用CPU。

第二招,时钟中断。就像大圣打妖怪,打不过,就找菩萨,找老君。操作系统也一样,权利再大,它本身也是代码,遇到解决不了的问题,就求救硬件。时钟中断就是一个例子。你的主板里,会有一个时钟,滴滴答答的走着,每隔一段时间,它就会给CPU发信号。CPU收到信号,就会执行预先设定好的操作系统的代码,一旦这些代码被执行了,操作系统就有控制权了。

这两招合在一起,操作系统就实现了对CPU的控制。后来我体会到,更多的权利其实意味着更多的责任和义务,操作系统虽然会强行执行自己的代码,但它做的事,都是为了别人,让大家都有使用资源的权利。利人不利己,所以大家信任他。

推荐文章(由hexo文章推荐插件驱动)

  • 对数据结构的同情心
  • iOS 如何优化app性能

对数据结构的同情心

发表于 2018-03-11

我们在设计上层数据模型的时候,要对底层的数据结构抱有同情心,不要硬把关系型的数据模型,裹挟到只支持key-value的NoSQL数据库里。否则,就像是牛最爱吃的是草,你非得让它尝尝巧克力一样,不对口。

对数据结构抱有同情心,就像Martin Thompson在设计软件的时候,同情计算机中的机械硬件,是一个道理。Martin主张,要想开发出来高性能的软件,不要一味的追求流行的技术,而是深入理解底层硬件的工作原理,实现软硬的和谐。比如说,为了解决False sharing问题,他在设计队列的时候,故意给队列的头和尾指针加上填充,来保证他们不出现在同一个缓存线里。

基于key-value的NoSQL数据库,说白了就是一个Hashmap。Hashmap的最大特点,是能够快速的实现数据的保存和读取。假如我是一个使用hashmap的数据库,然后你告诉我,你们全校每个同学的颜值(假设大伙的颜值都不一样),只要你说个值,我只动一下手指头,就能告诉你它对应的人名。可是如果你的问题是,我们学校里谁颜值最高,我算起来可就麻烦了,得一个一个比一比。这时候,如果我用的不是hashmap,而是一个对有序数据更友好的Treemap,找到颜值最高的人,基本动一下手指头就行了。

除此之外,key-value数据库还有一些常见的其他因素值得注意。比如,每插入一对数据,除了主数据以外,往往还得加上一些辅助数据,比如主数据的修改时间。如果辅助数据所占的比例很大,数据库的使用效率就会很低,这时要尽量提高主数据的占比。你开一个动车,只送一个乘客,必定赔本,所以要尽量每趟多拉一些乘客。

只有理解底层数据结构的特点和局限,并且同情他们,在设计上层数据模型的时候,把它们考虑进去,才可能开发出一个和谐,高效的系统。

关于牛的事,我没有做过实验,万一你家的牛喜欢巧克力,只能祝福你能挤到巧克力味的牛奶。

推荐文章(由hexo文章推荐插件驱动)

  • 程序员最好的投资:数据结构
  • 动画解释如何求单链表环入口点
  • 操作系统对CPU的控制权
  • redis数据结构

一股令人感动的学习热情

发表于 2018-02-10

亲情,友情都可以感动人。今天,我被一股炽烈的学习热情所感动。

这么多年来,无论是在学校,还是在企业,亦或是各种会议上,我从来没有看到过,有这么一群人,他们渴望,听到老师说的每一个字,看到老师演示的每一个动作,然后忘掉时间,全神贯注的沉浸在学习与创作中。这群人,是自费参加Ferrandi法国甜品师资格认证的学员们。我在他们的开放日现场感受到了这份渴望学习的热情。

起初,作为旁观者,我只是观察他们如何工作,后来,听到他们的老师回答一个观众的问题,说道, ”我们学校有两种学习班,一是针对年轻的孩子们,他们的父母给交学费,希望孩子们能在餐饮业发展;另一个是资格认证班,学员都是有过职业经验,然后自费来学习的大人们,都在30岁左右。和教那些孩子们不一样,我们这个班的目的,是整理学员们已有的但是比较零散的知识和技能,然后帮助他们系统化自己的知识体系。对他们讲授的内容,都比较难。但是他们吸收起来,却很快,因为他们学费是自己交的,都特别有学习的动力。“

听完这段话,我意识到,眼前的这群人,不仅仅是在学着如何搅拌巧克力,而是一群,从事过不同工作之后,发现了真心所爱,追求梦想的人们。他们中,有的是法国人,有的中国人,有的是墨西哥人;有的是工程师,有的是律师,有的是空乘,有的是餐厅的厨师,有的是家庭主妇;有的在巴黎,有的从外地搬来了巴黎;有的人单身,有的人生了小孩,还有的人孩子都可去旁边的孩子班了。

这么多拥有不同背景的人,在一个基本上不允许你再犯任何错误的年纪,非常坚定的走在了一起。他们所迸发出来的学习热情,如火焰般炽烈,我看到了他们的勇敢,他们的执着,和他们对生活深深的热爱。

站在他们身边,我自己都感觉到生活特别的美好,因为这里流淌着一股让人感动的学习热情。

推荐文章(由hexo文章推荐插件驱动)

  • 积累的效果显现了
  • Murex的程序员学习氛围
  • 学习如何学习
  • 创业故事|有专业的人在为什么我要学?

影响力

发表于 2018-02-04

作为程序员,我曾经困惑过,怎么说服领导采用我的解决方案?带着这个问题,我读了誉满全球的说服大师,西奥迪尼,写于1984的经典著作《影响力》。读完,与其说是我学会了影响别人,倒不如说如何不受他人影响。虽然没有找到我想要的答案,但这本书依然教会了我很多,尝试影响你的人永远都不可能告诉你的秘密。从中找几个对我触动别较大的分享一下。

如何让孩子下水学会游泳

前一段时间见一个朋友,他感叹孩子长大了,说话都开始像大人了。有一天,朋友带着孩子学习游泳,孩子怕水不敢下,朋友试图说服孩子,说水没什么好怕的。可孩子还是不愿意,像大人一样说,“你就不要再强迫我下水了”。

听到朋友给我讲这个故事,我就立刻想到了《影响力》书中所阐述的社会认同原理:我们会根据他人的行为来判断自己怎么做才合适,尤其是在我们觉得这些人跟自己相似的时候。书里的一位家长,也是无法说服孩子游泳,后来孩子在参加过一个夏令营之后,突然敢下水了,孩子告诉家长,“我都三岁了,小明也三岁了,他都敢下,我想我也可以!”。孩子们也会像大人们一样,通过别人的行为来衡量自己,只不过,他们更愿意看别的孩子是怎么做的,而不是家长。

长得好看又不能当饭吃

这两天,看新闻,说一个女孩相亲,嫌对方长得丑,不愿意。后来,女孩她妈告诉她,你都这年纪了,就别挑了,长得好看能当饭吃吗。

没读《影响力》之前,我也觉得,长得好看没什么用,还是得看真本事吃饭。可读完之后,就不完全这么认为了,因为光环效应:我们会自动给长得好看的人添加一些正面特点,比如有才华,善良,诚实和聪明等。而且我们在做出这些判断的时候,并没有意识到外表魅力在其中发挥的作用。研究表明,就连长得好看的犯罪嫌疑人,比那些丑的,入狱的概率都低。看吧,陪审团,法官也会不知不觉的以貌取人。

除了上面说到的,还有互惠,承诺和一致,喜好,权威,稀缺等提高影响力的武器。这些武器的共同点,就是它们利用了人类的条件反射。我们有时就像音乐娃娃一样,只要一按播放按钮,我们就开始唱歌。像所有的武器一样,看使用他的人,是出于好意,还是另有所图。对于那些另有所图的人,我们要学会如何辨别,如何防止让人操纵。以免买了自己根本都不愿意买的东西,还有苦说不出。

推荐文章(由hexo文章推荐插件驱动)

  • 数学之美:不能再凑了
  • 《浪潮之巅》读后感(二)—— IT 定理

服务精神:服务下属的管理者

发表于 2018-01-28

这已经是第四篇关于服务精神的文章了,前面谈过如果通过培养服务精神来超越自我,建立反馈循环,做职业规划。这次我想谈一谈,程序员进入管理层后,如何升级服务精神。我得出的结论是,在管理层上走得越高,所要服务的人就越多。

在我接触到的管理者中,有些人对自己位置的解读很耐人寻味。我曾经问过一个管理者,你觉得当上管理者以后有什么变化,他说他可以找更有意思的Bug来修,那些无聊的Bug就扔给手下了。

我觉得以上的反映,主要关注在了,能从权利中获取的利益,而忽略了服务的对象。管理者的服务对象,有两个方向,一是更上一级的管理者,一是下属。服务于上一级的管理者,这是自然而然的事情,很多人都不会忽略。然而服务下属,就没那么显而易见了。

我接触过很多程序员,有的人兢兢业业,只求靠写代码能过上衣食无忧的生活。还有一个程序员,真事,他为自己拿到的报酬感到羞愧,因为他觉得自己做的东西不配拿那么高的工资。我觉得作为管理者,应该服务好这种会感到羞愧的程序员。并不是所有的下属都会有很强烈的诉求,但有的人心中确实有需要,需要的是一个舞台。这种情况下的管理者,就应该给下属们找到最适合的战场,给他们施展拳脚的机会。

开头的时候我说,管理层越高,需要服务的人就越多,其实写到这我觉得话说反了,应该是服务的人越多,管理层才会上的越高。

推荐文章(由hexo文章推荐插件驱动)

  • 服务精神:超越自我
  • 服务精神:反馈循环
  • 服务精神:职业规划
  • 川普与黑帮精神

赖以生存的算法:过拟合

发表于 2018-01-14

本文深受《Algorithms to Live By: The Computer Science of Human Decisions》一书启发

同系列文章

  • 赖以生存的算法:缓存
  • 赖以生存的算法:过拟合

过拟合(Overfitting),是机器学习里很容易犯的错误。观察琢磨之后,发现,不仅是在机器学习里,在生活,学习,工作,特别是创业中,也需要我们多加小心。

什么是过拟合

什么是过拟合?让我们举个考试的例子说明,我敢保证,如果你是学霸没经历过,你身边的吃瓜群众肯定有过。

说快要期末考试了,大辉有点慌,因为整个学期把功夫都用到了小微身上。临考前几天,他搜集到了过去五年的期末考卷,疯狂的刷题,背答案。经过通宵达旦的训练,终于把五套卷子烂熟于心。考试的日子到了,大辉脚步轻盈的走进教室,扫了小微一眼,信心满满的坐下,心想,一定要第一个交卷,让小微崇拜一下。可当他拿到试卷的时候,发现失策了,之前的五套试卷都白背了,一个题都没能再现。这就是过拟合,你把全部精力都放在了过往的数据上,而当不确定的未来真正来临的时候,你惊鄂的发现,在猛虎面前,你拿了个苍蝇拍。

考试的例子,通俗易懂。在机器学习里的过拟合,看起来高深莫测,也是同样的道理。说你要做一项研究,预测一个人的幸福感和婚龄的关系。你做了很多调研,统计了很多人在结婚前三年和后三年的幸福感,然后用了很多参数画了一条美妙的曲线,把大家的幸福感都准确的圈到了,你觉得你发现了史上最重要的幸福定律。然而当你拿着你的曲线,去问一对在一起四十多年的夫妇的时候,你发现,你的曲线就其实是个笑话。

不过话说回来,过拟合也不是你想办就能办的到的,只有像诺依曼那样的人才能说出这样的话,“用四个参数我可以拟合出一头大象,而用五个参数我可以让它的鼻子摆动”。

为什么会出现过拟合

为什么会出现过拟合?因为你太天真了。还拿考试的例子来说。过去五年的试卷,先不说你收集的是不是假试卷,即便是真的,出题的教授,今年也很有可能被勇敢的女学生举报。然后,新老师为了学生的前途负责,把题换了。机器学习也是同样的套路,不要天真的以为,眼前的训练数据,都是出淤泥而不染的青莲,它们很可能都沾上了污泥,你得用清水给冲净了,再用,即便表面冲净了,可你能确定它们的心是红的吗?

所以,当你根据已有数据,做决定的时候,一定要考虑到他们的不确定性。如果你明明知道,帮你做决定的数据,本身就存在不确定性,你还会在他们身上浪费大量的精力吗?感谢巴黎大数据从业交流微信群,从业界的最前线给我分享了,在深度学习里使用贝叶斯方法来处理模型不确定性的论文,这让我深受鼓舞,说明我们找到了数学的方法,来解决我们过于天真的问题。

过拟合的危害

如果,你只是因为死记硬背往年试卷,挂了科,那么你还有补考的机会。可如果你在创办企业,过拟合,会让你花光所有的钱,用尽所有人的耐心,做出一款没人用的产品。说白了,过拟合的危害,就是造成没必要的浪费。

在创业的过程中,你有一个令人魂牵梦绕的点子,初期在朋友中的调查也反响特别好,你觉得这个产品能改变世界。如果你握着这个点子和朋友的鼓励,闭门造车,那么你很可能就是在天真的过拟合了。而明白过拟合危害的创业者,会时刻提醒自己,所有的点子,所有的反馈,都存在不确定性。我的目的,是在漆黑的道路上,不断的摸索,利用这些不确定的微光,在所有的资源耗费殆尽前,找到一条可以盈利的路。

推荐文章(由hexo文章推荐插件驱动)

  • 保龄球计分
  • ES6模拟布朗运动
  • 二分法:擦肩而过的美好瞬间
  • 区块链学习备忘录之共识算法
12…8
© 2011 – 2018 王辉
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Gemini v6.4.0