如何开始写一本属于自己的技术书

张开涛

2017-05-23


写书是一个苦力活,笔者最近把自己过去三年的博客文章进行了整理,出版了自己第一本纸质书《亿级流量网站架构核心技术》,花去了自己小半年的晚上、周末和假期。笔者从2012年开始在iteye上也陆续写了《跟我学Spring》、《跟我学SpringMVC》、《跟我学Shiro》、《跟我学OpenResty开发》等电子书,目前累计访问量已经有1200万+。也算是对写书有一些个人心得,在此也分享给大家。本文将从如下几个层面介绍如何 写一本属于自己的技术书:

  • 写书的目的是什么。
  • 应该写什么题材。
  • 如何组织架构书。
  • 如何出版这本书。

写书的目的

写书一定要定位好自己的目的,是想学习成长?帮助别人?还是赚钱出名?
如果想通过写IT书赚钱或出名,那么您可以放弃了,因为这种机会太渺茫了,尤其写IT书!另外写书一般拿版税,比如一本100块的书,版税是8%,卖一本书作者到手8块钱,而IT书太垂直,受众人群少,技术更新太快,卖1万本算是畅销书了!所以赚钱和出名基本是不可能了。
笔者的写书目的是什么呢?笔者不是大神,也不是教授,没有教书育人的职责。作为一名社会程序员,写书目的还是自己需要成长,顺便帮助别人。所以笔者写了很多博客,整理成电子书,一开始并没有出纸质书的想法。
另外,写书是一件非常辛苦的事情,一定程度上会锻炼自己的毅力。比如《跟我学Spring》,笔者要读源码、看官方文档,然后按照自己的思路组织起来。而《跟我学Shiro》,是笔者春节期间写的,整个春节大部分时间就在写这个。还有如《跟我学OpenResty开发》完全是因为外边没有成体系的开发资料,为了培养新人入门写的。还有如《亿级流量网站架构核心技术》是笔者在工作中用过的技术或者遇到的问题总结整理而成的,期初并没有想写书。
相信很多朋友跟我一样,买了大量的书,很多书看完一遍就放起来了,所以笔者不希望也出一本类似的纸质书。如果看完一遍就放起来的,个人觉得写博客就好了,如果内容需要反复读或者作为手册,才有必要写纸质书。当然笔者也不是非常高尚,目前也没有能力进行如文化传承或技术传承,所以还是站的位置较低,是从个人成长角度考虑出书这个问题的。

总结一下:

  • 像我这种社会程序员,不要想着靠写书赚钱或出名。
  • 写书的目的还是自我成长,把自己工作中用到的技术进行系统化的学习和整理,不是有句话是“教会别人,自己才是真的会了”,在整理过程中,会更知道自己哪些掌握的不够。
  • 写书的另一个目的是帮助别人,比如先是帮助自己,还有帮助团队,或者帮助互联网上的朋友;把自己的知识体系开放出来,把遇到的问题共享出来,如果能帮别人成长或者解决问题是多么美好的一件事情。
  • 如果是跟我学类型的书,就写博客吧,然后整理成电子书就好了。
  • 如果内容是可以反复读或者可以作为手册的,可以考虑出纸质书。

写博客和写书(电子书)的区别是什么呢?写博客是随意发挥,而写书一定是系统化、体系化。
写博客和写书(电子书)的共同点是什么呢?整理沉淀知识体系,还有人帮你纠正,帮助别人,提升个人价值,让更多人知道你,让自己得到更多机会。
写书有人骂我怎么办?有人的地方就有江湖,总有人欣赏你感激你,也总有人会骂你。我们写的目的要明确,不违心,别人骂的对的就接受,不对的就忽略吧。所以用积极的心态应对吧!

应该写什么题材

比如Java程序员,可以有如下几种题材:

  • 基础类,如数据结构、算法、操作系统。
  • 工程与方法类,如设计模式、重构、DevOps、持续交付。
  • 实践与经验类,如语言/框架入门到深入、源码分析、性能调优。
  • IT人文与软技能类,如从孤胆极客到高效团队、从0到1、如黑客与画家。
  • 等等。

笔者目前有实践与经验类的写作经验,而且这部分相对也较容易写,当然写好也非常难。实践与经验类的书籍主要教我们某某技术怎么用、某某技术原理是什么和某某问题如何解决等。
因此,如果您想写自己的第一本书,可以从实践与经验类的内容开始,最简单的题材就是跟我学某某技术,这样就开始了写作之旅。
选择从入门到深入的题材,如Spring Cloud非常火,那就可以写Spring Cloud入门及深入系列,教别人怎么用。
选择帮助自己成为专家的题材,如觉得Spring Cloud架构设计的特别好,可以写源码分析,了解为什么之后,您就是这方面的专家了,别人遇到问题第一个想到的就是您。
选择问题集锦类的题材,如果使用某技术踩了坑,或者解决了某些诡异问题,可以写问题集锦。
选择最佳实践类的题材,如项目使用某技术后得到了成功,可以写该技术的最佳实践。
选择差异化的题材,比如现在写Spring的书已经非常多了,除非觉得自己有差异化,否则还写重复的内容就没什么意义了。
选定题材后,书的定位和受众群体就有了,接下来就要根据题材去组织内容了。

如何组织架构书

写书其实和看源码类似,理脉络,定目录。目录一定要多斟酌,这是书的灵魂。当然有的朋友会说不知道怎么定目录啊!其实这是因为素材积累不够,需要进行大量阅读、搜集整理(思维脑图)、沉淀,我相信之后目录就出来了。如果是第一次写书,可以参考类似书籍的目录或者官方文档目录。
有了目录,其实书的系统化、体系化就出来了,这就是写书和写博客的不一样之处,写博客随意没有章法,写书一定是成体系、成系统。
目录有了,就开始组织内容了。每一个章节都需要进行内容积累,比如文档阅读、源码阅读、碰到的问题踩过的坑、最佳实践、思考、替换技术等。写每一个章节时也需要组织目录,每一个章节对内容进行取舍、排列组合,一气呵成。
语文学的实在太差,我写作只能口语化,所以写的也不啰嗦,简单直接,也符合一些人的口味。
其实写书和做架构类似,先见森林,后见树木!这也是对是否真的学明白了的一种检验手段,本质上受益最大的还是自己,先提升的是自己,然后对读者有益。
当然有些朋友一开始无法完成正向流程(目录到章节),那也可以走逆向流程(章节到目录抽象),不冲突。

如何出版纸质书

如果你觉得这本书看完一遍就不会再看了,请仔细斟酌下是否有必要出这本书,是不是写博客就好了。
出版纸质书需要找出版社编辑,比如我是找的电子工业出版社侠少,大体步骤:

  • 内容初稿,有整体的目录,写了部分章节就够了。
  • 跟出版社编辑初次沟通,确定出版的意义(书的定位、读者的定位、销量预估),出版计划(什么时间上市)。
  • 如果涉及到公司内容,在给出版社之前记得送公司公关内审,防止一些对外数据口径不一样造成不必要的麻烦。
  • 跟出版社签定合同(主要是版税、版权),定出版时间。
  • 全部书稿完成后需要进行校稿,校稿到印刷中间差不多需要3~6个月时间。
  • 在整个校稿过程中,记得保留好各个版本,因为和编辑沟通对接过程中难免会出错;还有出版社会对内容进行口语化转书面语,这个过程还是很痛苦的;出版社编辑会一章章挨着看,不清晰的或者不明白的都会跟作者沟通。
  • 印刷出版,出版社在各个渠道铺货推广售卖,有些书会提前一个月进行预售。
  • 出版社一般半年左右跟作者结一次版税。
  • 收集勘误,在新的版次中修订。

有很多作者较忙,初稿完成差不多要花1-2年时间,而我的《亿级流量网站架构核心技术》是我三年博客内容的整理和加工,差不多从整理到出版也花了一年时间。所以我是那种不太着急的人,书稿差不多完成后才找的出版社。因为都是利用业余时间,不确定自己是否能按时完成。
出版书了,并不代表我的技术有多强,很多时候我只是个知识搬运工,或者知识的组织者,因为网络上已经有很多类似的文章或者内容,只是没多少人愿意去把它们组织成体系,让读者按照体系阅读学习。
最后,在我成长阶段,写书一定是对自己成长有帮助,写书是写给自己的,自己都不认可还是算了吧,写书是一种刻意学习,快速的完成一万小时理论的捷径。还有最重要的就是要坚持写完,这是最难的!
写一本书,作者是赚不到多少钱的,还要花费掉自己所有的业余时间,所以不要问作者要纸质书或者电子书了,买一本是最大的鼓励!即使这本书是网络内容的组织,这不正省去了我们搜索整理的时间嘛,不也是一份诚意嘛!

读者评论

  • 写的非常好,确实是这样。。我也看过开涛的好多系列,写的非常棒!

    abel533发表于 2017/7/10 11:45:42
  • Nice

    liixj发表于 2017/6/18 23:15:23

相关博文

  • 聊聊高并发之隔离术

    聊聊高并发之隔离术

    张开涛 2017-04-21

    隔离是指将系统或资源分割开,系统隔离是为了在系统发生故障时能限定传播范围和影响范围,即发生故障后不会出现滚雪球效应,从而保证只有出问题的服务不可用,其他服务还是可用的;而资源隔离有脏数据隔离、通过隔离后减少资源竞争提升性能等。我遇到的比...

    张开涛 2017-04-21
    1797 0 0 0
  • #小编推书#解秘亿级网站!

    Jessica瑾妞 2017-04-21

    提前看到这部《亿级流量网站架构核心技术:跟开涛学搭建高可用高并发系统》的人这样评价—— √ 经历618、双11多次大考,是保证大规模电商系统高流量、高频次的葵花宝典。 √ 集中火力讲述作者构建京东大流量系统用到的高可用和高并发原...

    Jessica瑾妞 2017-04-21
    387 0 0 0
  • 回滚机制——《亿级流量》

    回滚机制——《亿级流量》

    张开涛 2017-05-31

    回滚是指当程序或数据出错时,将程序或数据恢复到最近一个正确版本的行为。最常见的如事务回滚、代码库回滚、部署版本回滚、数据版本回滚、静态资源版本回滚等。通过回滚机制保证系统某些场景下的高可用。 事务回滚 在执行数据库SQL时,如果我们检...

    张开涛 2017-05-31
    776 0 0 0