序三
听说包猪猪的第二本书要出版了,很为他高兴,作为一个旁观者,眼见着本书由一个想法萌芽逐渐充实,颇有感触。我脑海里就像过电影一般,浮现这几个月中包猪猪的种种状态:为解决一个bug而连续工作十几个小时的苦闷,第二天一早起来灵感触发迎刃而解的喜悦,一边照顾父母一边因书的进度被某一难题阻滞而焦灼……身边的人会跟他说:“事情这么多,歇歇再写吧,别让自己太辛苦。”可是一个想快点跟业界分享自己想法和成果的程序员又怎会因琐事耽搁?曾是微软MVP的他,入行十几年,仍然秉承着刚入行时的激情与热忱,吭哧吭哧地调bug到凌晨,这本书或许是这个“内心有团火”的家伙希望送给读者最好的礼物——智慧的分享与教学相长的领悟。
我是学中文和法律的,作为圈外人在本书前作序,多少有班门弄斧之嫌。如论代码,各位读者在自己的领域各有所长。不过我这种对技术一窍不通的人,竟在看一本技术书时捧腹大笑,足见本书的吸引力。比如说,书中调侃张勇和任玉刚是插件化领域的男乔峰女慕容,以至于我一直想亲眼见一下这两个人。比如说他在前言中拿娃娃开涮,连着感谢了霹雳娇娃、赵越和Dinosaur,殊不知那却是一个人,可能是为了看上去人多一些,以壮声势。
程序员的世界我不太懂,尤其是包猪猪,他经常做出一些令人啼笑皆非的事情。比如说,情人节他第一次给我送花,却阴差阳错地寄来了两束。晚上的时候他跟我说,两束花别浪费了,另一束花就快递给邓凡平吧——据说那也是Android行业内的一位大神,他因为伺候老婆坐月子而忘记准备情人节礼物了。于是,作为情人节只收别人礼物的我,在这一天,第一次给别人送礼物。
他做饭很好吃,有很多招牌菜。用他的话讲,炒菜是设计模式中的装饰器模式。比如说西红柿炒鸡蛋,放锅里炒了几分钟后,加点糖,就是味道甜甜的西红柿炒鸡蛋,再加些盐,就是酸甜可口的西红柿炒鸡蛋,也许还会再加些其他调料,但这道菜永远都是西红柿炒鸡蛋,只是味道不同罢了。技术做到这一步已经接近于完美,但他后面的奇葩行为,却颠覆了我对他的认知。
他研究做鱼,第一天没做好,第二天再买条鱼继续做,直到他认为完美。把钻研计算机技术的执着用于烹饪,结果就是我一连吃了5天鱼汤,上火,满嘴都是泡。
第一次见包猪猪是在酒吧,一边听着不知道是哪里的古老而嘈杂的乐队嘶吼,另一边是他给我讲关于五个海盗分赃的小故事。隐约记得故事是这样的:“5个海盗抢到100个金币,他们决定依次由A, B, C, D, E五个海盗来分,他们订立了如下规则:当由A提分配方案时,剩下的海盗表决,如果B, C, D, E四人中有一半以上反对就把A扔下海,再由B分……如是这般,那么A海盗如何分,才能既保住性命又能获得更多的金币。”这是个有意思的小故事,轻松而又暗藏思维逻辑,我们可能有很多种解决方案,但是最优方案最后一定是“博弈与制衡”的平衡。此前,我一直以为程序员的世界充斥着代码,那是一套拥有独立计算机语言的系统,难以接近跟理解。可是包猪猪有种能力将难以理解或者比较复杂的事情用一种有趣的方式表达出来,诙谐有趣、通俗易懂又能在嘻嘻哈哈的氛围中有所感悟。
本书讲插件化,从插件化的历史讲起,说了不少这行的人跟事,还有八卦。接下来由基础知识开始讲起,后来又介绍了插件化解决方案及周边技术。文字所限,本书内容结构不赘述了,各位可以凭目录了解。代码方面我虽然读不懂,不过并不影响看书的心情,这是本书颇为神奇的地方。没有高深莫测的理论,没有艰深难懂的词汇,就像包猪猪站在我面前娓娓道来,举一些他觉得有意思的例子,让你觉得调皮又生动。对于对插件化不熟悉的读者,可能本书提及的有些词汇是新的,不太容易理解,感谢本书的编辑在成书过程中从旁指引,因而本书在前言部分增加了名词解释,并在各个章节多加了一些描述性的文字。
关于本书前言所提及未展开描述的部分,其实作者在写作前已经预留了位置,但是在成书前两天犹豫再三还是有所删减,因为总觉得讲得不透、不彻底是不好意思呈现给读者看的。因此,我跟很多读者一样很期待包猪猪过段时间能将那些本书没说透的东西再写本书好好讲一讲。比如说Small,他半夜说梦话时经常念叨这个词。
谨以此书献给奋斗在一线的程序员们,作为家属深刻了解程序员的辛酸,希望本书对读者能够有所启发,运用到工作中可以提高效率,多一些休息时间陪伴家人、朋友,少一些熬夜加班、拼命赶工。
郭曼云,2018年6月于北京