#代码故事

你们还是喜欢听故事 今天给你们讲我认识十多年的X先生的代码故事 X先生是我2012年的时候招募的,面试时是一个眉清目秀的小伙子,那天问了几个问题,基础技术还是很扎实的,就是有点腼腆 他入职的第一天,我们刚好又又又搬家了,他第一天报道的时候,非常吃惊,你们公司怎么搬到我读书的学校里面来了呀?(对,就是那个寒假需要绳降到一楼最后放假一个月的学校) 最开始,我只是把他当作应届生来看,我那时主要用Cairo在做自己的Linux图形库,我给他安排了一个任务,任何控件右边都做一个浮动滚动条,鼠标晃动的时候才显示,不晃动的时候自动隐藏。这个题目看起来简单,但是如果你没有深厚的图形功底和图形事件循环经验,很难做出来的。当时我的预期就是想考察他一下技术水平,给他一个月的时间。没想到这家伙3天就整出来了,我问他怎么弄的,他说看了一下Cairo API,可以用compose混合器的技术来实现图层显示的时候又不影响控件的事件循环。 嗯,这个小伙子可以啊,比我想想的厉害很多 后面又安排了几个任务,他都在我规划的时间的1/10内完成了任务,那时候我在忙着做操作系统版本发布和开发,X先生的学习速度太快了,我安排任务的时间都快跟不上他搞定任务的时间。 实在没空了,我来了一个狠的,我说现在Gnome在推动Mutter,但是社区的显卡驱动跟不上,每天都有用户反馈花屏闪屏,你写一个窗口管理器吧。我当时想这个任务你不要整个一年?这样我这一年就可以好好的攻克我要做的事情。 没想到这家伙,1个月以后,写了一个完整的桌面环境,Dock、Alt Tab、窗口混合、窗口管理器、登录界面都搞好了,虽然细节差很多,但是原理都没问题,天啊,这学习速度太恐怖了吧? 剩下的故事你们都知道了,当年WebOS,改造浏览器内核引擎,用浏览器技术做桌面环境就是出至他一人之手。 基本上2年以后,他的技术水平已经完全超过我了,而且他不像我这种野路子程序员,科班出身,计算机基础比我好,到第3年,操作系统的研发架构师的工作就从我身上移交给他。 这家伙写代码非常快,极度的专注,科学家的风格,他写代码不用调试器,一般就靠目测,很多工程师搞了半个月没搞定的bug,让他过去,他也不编译不运行,调试器也不用,就过去看代码,看了10分钟以后,手指了一下显示器,说:这行代码有问题。就走了 无数次的神奇bug都是靠X先生目测修好了的,我们所有人都猜测他很少用调试器的原因是,他脑袋就是一个调试器,代码都在他脑袋里编译运行。 当年桌面环境后端之所以用golang就是这位X先生主推的,懒猫微服操作系统的后端也是用golang写的。 这家伙太猛了,平常就手指一下,团队就开始干活。他无聊,就给国产芯片实现了LuaJIT编译器,开发过JIT编译器的同学都知道,从零给一个芯片做这个活有多难,他,3个月就结束战斗了。 在搞LuaJIT的过程中,他还发现了gccgo有一个严重的bug,在多线程竞争条件下软件会随机崩溃,这次他用调试器了,跟踪了半个月,最后发现是gccgo运行时,golang编译器的多线程实现有bug,编译器会产生一个非常严重的线程竞争条件的问题,简单来说,编译器不改,所有golang生成的代码在多线程都会产生很多随机bug, 这家伙,分别给cgo和gcc这两个项目提交了修复补丁。 当时维护golang编译器的大佬Ian Lance Taylor确认bug,但是不知道怎么写测试用例去做CI,哈哈哈哈。 Google的HR还是非常专业的,一旦看到有人给Golang编译器提交补丁,招募邮件就过来了,给X先生发了一封邮件:Google全球的办公室你可以随便选 X先生也挺逗的,他回了一封邮件给HR:我看你很专业,我们团队是做操作系统的,要不你加入我们团队来给我们招募技术大牛? 好了,喜欢听我创业故事的朋友,欢迎点赞转发 喜欢我们团队的朋友,欢迎购买懒猫微服,私信我购买有优惠!