技术书是怎么写出来的

2014年4月份,我开始写作《深入浅出Qt on Android》一书,8月份的时候交稿,该书现在正在出版旅途中。8月份我开始了有关QML的入门书籍的写作,经过无数个日夜的奋战,到今天基本完稿了,正在校对中。

我想我能根据自己的经历来说说一本技术书籍是如何写就的。

我以为写书看起来是比较有气场的事情,在上大学时我就有写书的梦想,希望哪天哪个出版社能出版我的小说。那时候混迹于各个BBS、文学论坛与网站,可惜灵性有限,笔力不逮,只在一些期刊杂志上零星发表过几篇,后来就只能看着与我同时期的那些写手们的书如雨后春笋般上市。工作了两三年之后,基本告别了小说写作,文学的梦,终于渐行渐远渐无声,只在某个低徊的夜晚,会偶尔在已麻木的心湖中泛起一丝小小的涟漪。

因为有出书梦,所以有机会可以写,我毫不犹豫的就和编辑谈定了这件事情,只要圆梦之旅可以起航,其它的,版税什么的,随它去。

我一直以为写作是一件充满乐趣的痛苦旅程,当时写小说也有这种感觉。可是我没有想到,技术书籍的写作比文学作品要复杂得多,对我而言,要花的心思、精力比写一篇小说要多了去了,简直不能放在一个天平上来衡量。就让我一步一步来说一下吧。

关于选题

其实当你有打算要写一本技术书籍时,想必一定在某个技术领域有较多的经验较厚的积累较深的感悟,否则,巧妇难为无米之炊,几十万字该怎么来呢,难道像孙行者一样蕴天地之灵气突然顽石暴裂凭空蹦出?所以当我和编辑商量选题时,就锁定了我熟悉的Qt。

2008年开始使用Qt做嵌入式开发,做个各种各样的界面,阅读过源码,裁剪过Qt库,修改过源码,还在Android平台上移植过一个版本,也用Qt做过服务器……总之各种各种的主题都碰过、摸过、爱过,还有什么可畏惧的呢?

而且对于从C、C++走过来的我,深觉Qt是如此优雅可人,她深深地吸引着我,一颦一笑各具风流,当我知道她可以在Android平台上翩翩起舞时,毫不犹豫的就开始研究她,在业余时间花了大量精力来与她交流。当我看到第一个Hello World在手机上出现时,喜悦与兴奋可能不及BogDan Vatra,可也是难以言说的。而在此之前,我已经因为要开发Android产品学习了Java和Android应用开发,对Qt这个我最钟爱的框架不能在Android上迎风起舞一直耿耿于怀。现在好啦,虽然迟到一些,终究是来了。

所以我把写作主题就定在了这个方向:Qt on Android。

关于内容选择

大方向定下来之后,就是选择写作内容了。

其实对于一个应用框架,Qt在Android上的控制能力和其它应用没大的差别,它不能像嵌入式开发那样掌控全局,输入、输出、显示、声音、视频、网络等等都可以由它来发挥。它只能安静地、顺从地在Android这个大框架内来表演,这是一定之理。甚至有时还要借助Android平台的现有功能,这也是必然之事。

那么有什么可写的呢?我的书究竟要涵盖哪些内容呢?

这是个不大不小的问题,真让人颇费思量。

后来我想,作为一本独立成篇的书籍,它应该一骑独行,应该是自成一体的,应该让读者无需参考其它书籍就可以跟着走下来。于是就这么定了,我要重走长征路,先把Qt的核心概念和主题讲述一遍,比如元对象系统、信号与槽、多线程、网络等等,然后是Qt如何与Android喜结连理你侬我侬。当然在此之前,应该解决开发环境搭建的问题以及如何让读者快速体验Android这个问题。等这些都就绪,那就要重点去说说移动开发相关的主题在Qt中如何体现。

有了这些想法,书的目录框架基本就出来了。我拟定了目录,根据博客上的内容完成了样章。这个过程大概花了半个多月。

这个第一个煎熬人的坎儿,一定要有亮点,与市面上同类书籍不同,因此要有所取舍有所侧重。

我与Qt厮混了这么久啊,人生能有多少个6年呢……我自认对讲到的主题都有清醒的认识,因此自信本书与其它书籍不同,就算是都讲过的信号与槽、元对象系统、网络、多线程等等,我也可以讲出另一个样子来,因为他们就像那些每天与我一起冲锋陷阵的战友,我深知他们的秉性。

写作过程

我没有想到的是,技术书籍的写作其实是相当苦闷的。

因为我决定一个人来完成我的第一本书,没有寻求合作。像写一本书这样的事情,其实是相当浩大的工程。咱们一个一个来说。

抱持什么样的态度

首先我要讲,写一本书该抱持什么样的态度。也就是说,你的初衷是什么?这是非常关键的问题。

记得我在上大学时,就有同学合作出书,比如Office、Flash之类的实作教程,很快啊,几个人把任务一分,一个月甚至不到一个月就可以完成。因为这种数据赶的就是时间,快人一步赚钱无数,而慢一步满盘皆输。类似这种书籍时效性很强,而长尾效应则很短。那时学生也就是要赚个外快,至于书的严谨性、正确性,其实就那个样子,也没人真去仔细琢磨。

这种态度,是我所不取的。

对我来讲,首先我不是要靠这本书去赚钱。你懂的,现在技术书籍也不太好卖,版税也不高,6%到8%,还要交将近20%的个人所得税,你可以计算一下,卖上一万册作者可以拿到多少钱。而写一本书有多大的工作量,起码要三个月以上!而且还是你对写作内容非常熟悉。那像这种已经成熟的技术,它相关的书籍,能不能卖到一万册都是个问题。是吧,如果希望靠一本书来改变、改善我这个苦逼程序猿的生活,那简直是痴人说梦了。

所以呢,不怕您笑话,我是因为喜欢Qt这个框架,又有出书的梦,所以来做这个事情。所以呢,这是我的一个心愿,我希望能把它做好。

这就是我的态度。也正因为这个态度,我的付出不是一般地多啊。因为你想要她好,有谈过恋爱的都知道,爱一个人,是不计较付出与回报的,仅仅是想她好而已,为伊一笑,可以烽火戏诸侯的。

艰辛与幸福

我写小说时,构思好了,一个下午坐在电脑前可以写出一两万字来。天马行空任君发挥啊,顶多你说我行文不严谨,起承转合不自然,故事不精彩,可是我不会因为这个误人子弟哈。

而技术书籍就不一样了,严谨与正确是第一要务。你要保证你写出来的,都是正确的。你提供的示例,都是验证过的、可行的。你选择的示例,也是要经过考量的,可以体现相关主题的。总之你要负责任,对得起拿这本书来看的朋友们。所以呢,写技术书籍自然是没有写小说自由了。

虽然我对写作的主题已经熟悉,可还是要仔细斟酌,每一个概念、每一块内容都要查阅相关资料,它到底是什么含义,哪些内容依赖它,它又依赖别的什么主题,该放到书中哪个章节,示例怎么设计,要在那几个平台上验证,这都是要琢磨的事情。

比如我想写Android手机上的各种传感器,就查阅了很多资料,和度娘聊了无数次,连21ic这么专业的网站和论坛都被我泡了。还有Android在线SDK也被我翻了个底儿朝天(那时天朝还没有把Google弄死翘,访问速度还可以,比apkbus快多了),就是想看看到底Android系统自己支持哪些传感器,都是什么含义,为的是和Qt印证。

又比如JNI,记得当时年纪小,郎骑竹马弄青梅也不知君意。又跑远了。记得当时初接触JNI,只知道Java可以这么调用C,哪曾想Qt也能够回调Android还能得到通知。BogDan大神在KDAB上说他要写一篇文章专门来介绍这个,到现在也没兑现承诺,人家实在是太忙了呢。既然如此,我只好自己瞎琢磨了,写作时Qt 5.2在这方面只有个Notification示例,真真是太捉襟见肘了,书到用时方恨少啊。幸好,幸好,我用Java开发过一阵子Android APK,反正最后被我给弄明白了。但这中间花的力气,费的心思,真不是一句两句话可以说得清的。

还有如何去讲一个熟悉的主题?这也是个问题。因为当你已经熟悉时,就忘掉了初学时的情景,恐怕多数时候会这样想:这么简单的事儿,你咋就不明白呢?而对于初学者,恰恰就是这样的。这是技术的两极。其实也是生活的两极,比如我经常觉得女儿有些事情怎么就不明白,其实忘了当初,我也是这么不明白、不明白着过来的。这里面有同理心在、有各种心理学范畴的东西在。当然我不懂心理学,所以就只能尝试着把自己再扔到初学的位置上来体验。有没有做到位,现在还很难说。

因为要工作,我基本上是在晚上和周末写作,晚上经常要到2点左右,早上6点多起床。我媳妇说我成铁人了,而我的体重,也终于可以下降到130斤以下了,那段时间,一直保持在123斤左右。你懂的,亲,对于176厘米身高的男性来说,这样算是相当苗条了。而早先我的体重在140以上啊。

满纸荒唐言,一把辛酸泪。都云作者痴,谁解其中味?

就是酱紫的。写作的过程一点都不潇洒,白衣飘飘那是看不到的,胸容枯槁面目无光倒是比较常见。

因为你总是对书心无旁骛,那对其他的事情就浑浑噩噩了,甚至会因为家人向你诉说生活琐事而不耐烦、发脾气,恶语相向,这对她们是不公平的啊。你在家庭生活中隐身了,而她们需要你,你也有你的责任在。

幸好,老婆孩子都理解都支持。哈哈,不支持也没办法啦。

有时候需要哄孩子睡觉,她还没睡着我就睡了,等她睡着了,我又惊醒了,啊呀,快12点了,赶紧开始工作,于是强自睁眼下床开电脑,眼睛是刺痛的呢。可是我不得不如此。记得我设计了局域网语音聊天的实例,需要录音、需要实现聊天界面、需要应用既做客户端又做服务器,还要解决相互发现的难题,整整调试了将近两个星期,一天不调通,一天不能松开这口气啊。这些事情没有人为你买单,你需要自己对自己负责。其实在一个只有你一个人能为自己负责的情景之下,我想如果你不愿意放弃,那唯一的出路就是:Fighting 啊。

我早年混文学论坛时的签名档是:我在极端的苦闷中因幸福而哭泣,生活对于我既轻松而又艰辛。那时候虽有小小苦痛,但更多是为赋新词强作愁,写书时的体会则又是另一番天地了。

如果一件事情只有痛苦没有幸福,那恐怕很少有人会坚持做下去,除了彪悍的西西弗斯。

写作的过程其实也是有很多快乐的。每当完成一章,就会长出一口气,有一些些成就感。每当完成一个示例,能在Windows和Android上都运行正常,也会哇一声。每当写就得意的一个段落,一个章节,也会傻傻地笑上一会儿。

就这么着,一个一个知识点,一个一个小示例,一章一章,一个主题一个主题,书渐渐成型了。可是心却开始惆怅、空虚,那种写作过程中简单的小快乐都已不能再让我感到欣慰,我被一种巨大的失落和空虚击中,感觉就像灵魂被抽离了身体,自己只剩一个驱壳,失重了……哎呦喂,接下来干什么呢?我多希望这个孩子还在自己的肚子里,这样我还可以天天有个盼头……

这就是没有追求没有信仰的我哈,必须找个事情来寄托我无处安放的心神。

叔本华说,看一个人精神是否强大,就看他一个人等待时做些什么,是故意发出些声响,还是来回踱个不停,还是禁不住不断地张望,还是可以安静地冥想……

哈哈,谁知道这是怎么回事儿!

昨天看《一个》里的问题,有个人这么说:我们来世是偶然,唯一的意义就是要过好这一生,哪里幸福往哪里去,这是我所能想到的唯一的人生意义。其实说得也相当不错。人类一思考,上帝就发笑。还是少费点脑细胞吧。

那么我的问题还在:我该如何面对完稿之时的这种失落与空虚?

我决定写第二本书!

哈哈,修复感情之伤的良药就是开启另一段新的感情。万物之理都是相似的,只有更大的欲望才能填满不断被拓宽的欲壑。弱刺激多了就需要强刺激,螺旋上升。

没事儿找事儿,就这么简单。可你说我一边儿说着辛苦,一边又开新篇,可真是犯贱。没错,人么,就是这样,做很多事情在别人看来都是在犯贱。那只是因为:你未曾这么做过。

我还是要说:总有那么一些时候,总有那么一些事情,会让你不计付出与回报,全身心地投入,只因为你喜欢这样,只因为你愿意。

关于出版

其实这个事儿我不太清楚,总之有编辑流程,需要若干时间,然后返回给作者修改,设计封面,然后排版,印刷,样书,备货,发货到零售商,总之是一长串的过程,会耗时较长。我关注的焦点是如何把书写好,之外的事情,自有专业人士负责。

因为我不了解这个过程,以为出版合同上签的日期就是上市日期,结果无意之中拿这个时间忽悠了几个群里的技术同仁,实在是不好意思。感谢各位对我的百般支持,世界因你们而美丽。

OK,就这样打住吧,QML的书这几天也可以完稿了。写两句话在这里作为总结吧。

我想说:爱过,写过,失落过,高兴过,低徊过,迷惘过,兴奋过,不管怎样,我从未对那些流过的汗水、付出的精力后悔过,如果还有机会,我还愿意再这样走上一遭。

时间: 2024-08-01 17:33:40

技术书是怎么写出来的的相关文章

写给产品经理的技术书:客户端、服务端和交互相关技术

产品经理有三大领域的技术是需要去攻克的,分别是:客户端相关技术.服务端相关技术.交互相关技术 一.客户端相关技术 1.iOS和安卓产品差异 1.1 应用的设备不同: IOS和安卓最大的区别在于本身所应用的设备不同.IOS系统主要是应用在iPhone.IPad.itouch设备上的操作系统,安卓系统主要是应用在安卓智能手机上的操作系统. 1.2 面向人群不同: IOS系统面向的是中高层收入的人群,有人称它为"高富帅"系统,而安卓系统则是面试中低层的大众人群,有人称它为"屌丝系统

奔跑吧2015:推荐给程序员的技术书

时光飞逝,不知不觉,走过了 2014,在 2015 年加倍努力,与大家一起分享好书. 2015 年,首月,好多技术书的付印计划摆在面前十几本,筛选一再斟酌,最后敲定以下技术书给大家.如果喜欢这一期的技术书,就分享给更多的小伙伴们吧! 特别推荐 1.第一本 Docker 书 Docker 公司前服务与支持副总裁力作 全球第一本 Docker 技术图书 学习 Docker 必备的第一本书 <第一本 Docker 书>由 Docker 公司前服务与支持副总裁 James Turnbull 编写,是权

四个月技术写作,我写了些什么?

从去年国庆节开始,我连续更新了 4 个月公众号,累计发布原创文章 40 篇. 按照大多数个人订阅号的优良传统,号主应该在跨年的前后作年终总结.然而,一来我反应比较迟钝,没跟上节奏,二来当时我正在写比较重要的系列,没时间分心,所以还是慢了半拍. 现在,创作出现了空档期,而身体也出现一种魔幻性的跨移--从几千里外的城市回到分别了几百天的农村.这仿佛就在营造一种仪式感,逼使我要把这未完成的任务做个了结. 因此,现在我就来梳理梳理写出来的东西,说说我的想法吧. 1.Python猫的故事 这是我的主打系列

读枯燥的技术书时怎么集中精神?

/** * 得到汉字字库的集合 * @return */ public static Map getChinaWordStorage() { BufferedReader bu=null; try { Map map=new TreeMap(); bu=new BufferedReader(new InputStreamReader(new FileInputStream(getPropertiesByKey("chinaWord")),"UTF-8"));//文件

技术领导要不要写代码?

技术领导要不要写代码?这是一个问题. 我刚工作的时候就听说,程序员(那时候还没有“码农”的说法)是吃青春饭的,到 30 岁就熬不了夜写不动代码了,所以要尽早转管理岗.相应的,如果你走上管理路线成了技术领导,自然就不必干写代码这种低级重复的体力劳动了.所以当时自己代码写得很多,技术能力增长很快,但总感觉有点别扭.那感觉就像,你能把车开得又快又熟练,最终只是为了能按时到达机场赶上飞机.然后,你就再也不用开车了. 不过无论如何,赶上飞机看来是更高级的选择,为了它,放弃苦心修炼的车技也可以接受罢. 但是

已读的, 在读的, 想读的技术书.

代码大全 重构:改善既有代码的设计 重构与模式 修改代码的艺术 实现模式 深入浅出设计模式(First head) 企业应用架构模式 分析模式* 代码整洁之道* 编程珠玑* 程序员的职业素养* 别闹了,费曼先生!* 测试驱动开发TDD* 验收测试开发ATDD* Cucumber:行为驱动开发指南BDD* 设计原本:计算机科学巨匠Frederick P.Brooks的思考* 对象设计:角色责任和协作RDD* 领域驱动设计DDD 实现领域驱动设计* 领域驱动设计和模式* 敏捷软件开发原则.模式与实践

IT人的前沿技术书单:学不到老,就活不到老

IT人作为这个互联网时代的弄潮儿,我们天生就处于技术浪潮的中心地带,技术的变革让我们不得不掌握终生学习的能力和多元化的知识领域,技术的浪潮时而冲天而起,时而又归于平静,但是始终在推动着人类社会向前发展.你我,在这场技术引发的世界改革浪潮中,都置身其中,我们必须时刻准备好站在浪潮之巅的准备,准备迎接技术新世界.本文为大家选取了一些有关云计算.大数据以及人工智能的书籍,我相信,你我都能够成为这个世界的改变者. <云计算:概念.技术与架构> -- Thomas ERL,Zaigham Mahmood

如何读技术书

好久没有认真的看过一本书了,现在来分享一下个人读后感. 自从参加工作后了,4Y+了.现在开始重新拿起书本来读书,各种不适应,看一会就开始头疼,各种奇葩问题,总想走捷径. 工作期间,都是通过百度,谷歌这两个搜索神器,来完成不少工作. 真理,莫过于,Ctrl+C   Ctrl+V.就两种操作. 最近在给自己充电,程序猿,技术其实往白点说:你会“增删改查”就可以完成大部分工作了.如果要深入,就要下工夫了. 5.1在看一本angularjs的书,发现一个问题,知识点多,记不住怎么办?别跟我说,人的大脑有

编程语言教程书该怎么写: 向K&amp;R学习!

原文地址:Lax Language TutorialsAndrew Binstock 每年在评审Jolt Awards图书的时候,我都会被一些语言教程类图书弄得心力交瘁.从这些年的评审经验来看,这些语言类教程的写得都不错,但除此之外,少有亮点.换句话来说,这些书都很严谨.很精密,如果读者有足够的定力,通过它们掌握一门语言的编程技术还是不成问题的.可是,即便对那些卖得最好的书,除此之外我都想不出来还能多说几句什么样的赞美的话了. 这些书普遍存在的一个缺点就是把简单的任务复杂化.最大的或者说最常见的