一本书的诞生
零、背景
今天(2022-01-12)对我来说应该算是一个特别的日子,自己花了小半年撰写的《Flutter内核源码剖析》终于出版了。
思来想去,还是应该写点什么。毕竟,这件事情倾注了自己不少心血,一条简简单单的朋友圈是说不清楚的;另一方面,写书也并非什么高深莫测、遥不可及的事情。所以,最好的方法还是用最真实的文字记录下过去一年在这件事情上的投入。功过是非,自由他人评说,如果能对本文读者产生一些帮助和启发,自然是最好的。
一、契机
2020年下旬的时候,我因为工作内容调整,开始接触Flutter,当时可供系统研究的资料并不多,加之遇到问题时感觉自己总是囿于局部而不见整体,于是便梳理了一个Flutter相关知识点的脑图,并开始逐步研究:
图1: 2020年底发表的几篇文章
没写几篇文章后,出版社的一位编辑就通过微信公众号后台找到了我。由于我之前已经梳理了一个Flutter相关的脑图,于是写书的计划我们算是一拍即合。
图2: 和编辑一拍即合,决定写书
其中,要着重说一下关于选题。市场上关于Flutter的书当时已经有了不少,每年技术领域新出的书籍也可谓汗牛充栋。但客观来说,大多数书籍都存在 同质化问题 ,书和书之间的内容同质、书和官网上、技术社区里的内容同质,等等。
对于我个人来说,撷取部分这样的内容来写一本书当然也是可以的,但这样就背离了初心。所以,我一开始就明确了定位,就是往深了挖,因为我非常确定,当时市面上(现在依旧如此)没有一本系统讲述Flutter源码的书籍。
二、历程
大概在2020年底的时候,我签订了合同,开始写作。由于之前多年的博客写作经历,以及个人对技术问题的表达颇有研究,所以在大的方向上基本没有问题。主要挑战集中在三个方面。
2.1 时间
我当时的的工作节奏并不清闲,但幸好是双休。从2020年12月到2021年4月底交稿,我所有的周末和假期都用来写书。
这几个月,也算是深刻体会到了鲁迅先生的那句“时间就像海绵里的水,只要愿挤,总还是有的”。
但是,客观来说,这种节奏是非常折磨的、不适合长期维持的。所以我当时赶着在五一前交稿,好让自己安心度个长假。
2.2 内容
另一方面的挑战是内容,因为一开始我并没有计划写那么多,但是对于书籍的宏观设想已经决定了有些内容我必须得写,否则留下的遗憾可能是更长久的。
由于这些计划外的内容,自己除了写作本身,还要去调试、写Demo验证等等,有些主题自己得保证先消化透了才能动笔写。
2.3 体力
不得不说,写作也是一项体力活。比如画图,一开始自己计划用graphviz画图,好处是一旦定型,后面的修改管理都很方便。但是,我发现很多图由于过于复杂,用结构化文本描述的效率其实比手工绘制还要低,于是我统一换成了draw.io绘图,差不多50多张图,一张一张手绘~
图3: 各种手绘的配图
此外,由于出版社要求交稿用Word,而自己平时习惯用Vim,最后交稿的时候打字也是异常痛苦,时不时 i
、 :w
就打进去了。
三、影响
3.1 对工作的影响
客观来说,写书让自己在工作之余的恢复时间几乎没有了。但另一方面,自己在工作上遇到的问题,也得益于写书期间的积累,而得以逐一攻克。
图4:工作期间解决的一些问题
3.2 对成长的影响
个人觉得,这是写作这本书最有价值的一部分,写作这本书,让自己从一个“不知道自己不知道”的阶段过渡到了“知道自己不知道”的阶段。
在此之前,自己多少对未来有点恐惧和迷茫,在写作的过程中反而渐渐释怀了。努者,奴之力也,与其被绩效、他人的评价等种种外部因素驱使驾驭,不如回归自己内心,专注在事情本身上。
此外,在等待出版期间,我还将本书的核心内容提炼成了一门课程:《Flutter源码导读》,讲了几次,效果都还可以,自己也从学员的反馈中受益匪浅。
图5:一些课程反馈
四、关于本书
图6: 本书的目录大纲
我可以很负责任地说:我尽力了。 如有纰漏不足,大概率不是我粗心大意,而是我彼时彼刻水平真的只有那样 。
多年以后,我希望自己回头看这本书的时候,能把它作为一部不够完美的作品,而非自己技术生涯的顶点。
五、关于未来
Peter Norvig有一篇闻名遐迩的文章 Teach Yourself Programming in Ten Years ,而我的技术生涯显然还缺乏更多的历练。
这本书为我带来的是毁是誉,可能还得让子弹飞一会才知道。
但无论结果如何,我都会按照惯例,引用路遥在《早晨从中午开始》中的一段话作为我今后的注脚:
…..是的,只要不丧失远大的使用感,或者说还保持着较为清醒的头脑,就决然不能把人生之船长期停泊在某个温暖的港湾,应该重新扬起风帆,驶向生活的惊涛骇浪中,以领略其间的无限风光。人,不仅要战胜失败,而且还要超越胜利。
认识到自己的不足,然后去超越它。
六、写在最后
放个链接(如果需要或者感兴趣就支持一下 ^_^):
图7: Flutter内核源码剖析