当前位置: 首页 > news >正文

我对国内软件开发类书籍出版与写作的体会与努力

我对国内软件开发类书籍出版与写作的体会与努力

金旭亮

拜信息时代之赐,这些年来可谓计算机出版业的黄金时间,国内各大出版社都出版了大量的软件技术书籍,原创的、翻译的、影印的,去书店一看,大大小小、花花绿绿地排满了许多个书架,成为每个科技书店必见的一道风景。

书出版得虽多,但就我看来,其中的好书比例不高。

为了经济效益,有些出版社放松了对质量的要求,而某些作者出于利益驱动,走了一条 “短平快”的商业出书之路。于是我看到了一些很无语的现象,某些“牛人”短短几年能出十多本甚至二三十本书,还有些采取了“规模化”、“集约化”的“拼凑”出书方式,……

然而比较吊诡的是,这些质量平平甚至是低劣的书,虽然并不难鉴别,但在国内似乎还真有人愿意掏钱买,本人还真有点看不懂了。由于有市场,就有人继续“写作”这样的书。

作为一名读书人,我对技术书籍的选择原则基本上是这样的:

(1)优先选择国外原版或影印的。

(2)找不到原版,就看国内引进翻译的中文版;或者看国内知名作者写的被读者公认为很不错的书。

(3)凡是看到作者多于3人,或者冠以某某公司、某某工作室的书,提高警惕,这些书有可能是拼凑出来的。

(4)凡是看到一个技术或产品刚出现没几天,就有介绍它的书出现,提高警惕。除非作者是此技术领域的专家,而且一直关注这一技术的进展,否则,很可能就是官方文档的“搬家”。

(5)凡是看到用“XX思想”、“XX模式”、“XX之禅”、“XX之道”等玄而又玄的概念“封装”的书,提高警惕,不是说所有这些书都值得怀疑,而是这种类型的书要写好难度那是相当地大,作者本人没有深厚的积淀,不投入巨大的精力,恐怕写不好这样子的书。另外,虽然本人比较笨,但怎没觉得软件开发有那么多“玄机”在里面?相反,我倒在软件开发中看到了许多人们日常工作和生活中的常识,似乎没什么神秘的。

客观地说,国内的写作和出版环境实在说不上好,因为收益与付出不成比例,国内作者不愿意下功夫写出技术精品书籍,投入不足,平庸之作自然泛滥。另一方面,“上过几次当”的读者开始形成了一种普遍的认识——国内的技术书籍,好的实在少,就更加不愿意购买这些平庸之作,由此构成了一个似乎无解的怪圈。

前段时间,“0 Bug门”弄得沸沸扬扬,而我既是读者又是作者,具有双重的身份,因此对写作和阅读都有亲身的体会,就此谈谈我的看法。

从读者角度,没有人愿意“上当”购买到一本包容着诸多技术硬伤的技术书籍,但在作者角度,除非属于前文所说的那种专为了经济利益而写作的情形,只要写作态度认真,每个作者都不希望自己的作品包容太多的疏漏和错误,但客观事实是:这世界上不存在0 Bug的软件,更不会有0 Bug的技术书籍。我个人深切地感受到,一个人的能力和实践是多么地有限,而软件技术又是如此地复杂,更要命的是,它的发展又在呈现不断加速的趋势,因此,一个人对某项技术产生错误的认识和理解,实在是太容易发生了。

所以我认为,就作者而言,只要他的写作态度是认真的,其作品体现了写作当时他的技术水平与写作能力所能达到的高度,就可以问心无愧了。对于读者的批评,特别是那些点出了作品中确实存在的技术硬伤的评论,作者是应该衷心感谢的,良药苦口利于病,这些直言有助于作者自我反省,反而会得到更大的收益。

今年,我也写了一本书《入室登堂——.NET 4.0面向对象编程漫谈》,为了慎重起见,决定在书出版之前,借助技术社区的力量,面向技术社区征集技术审读和预读者,希望尽可能地将本书中的技术硬伤消除于变成白纸黑字之前。

本书初稿已经完成,其目录如下图所示,套用微软产品发布的术语,这应该算是CTP(社区预览版):

图 1 书的目录

这本书我想写成一种“技术科普”形式的,所介绍的内容有深有浅,引导读者随意地在.NET 4.0技术王国中旅游,不需要从头到尾地顺序阅读。

愿意参与的热心读者可以从上面给出的章节目录中选取您想阅读的章节,将请求以Email的形式发送给本书的小卢编辑。

我特别希望能得到以下两方面的反馈:

(1)本书中存在的技术硬伤。

(2)您对本书的写作内容、风格和方式有何建议,能否帮助起一个好听的名字?

请点此下载“细化到小节的完整目录和《致读者》一文”。

本书卢编辑的邮箱:lispython@gmail.com

为了方便出版社和作者了解不同层次的读者的阅读习惯,希望所有热心读者都能提供以下信息(提供与否完全自愿):

(1) 您的学历:博士、硕士、本科、专科、其他

(2) 您毕业学校:全国重点大学、普通大中专院校、民办高校、其他

(3) 您的工作年限,其中拥有几年的.NET开发经验?

(4) 如果您是一线软件开发者,您所从事工作的具体岗位:程序员、项目经理、架构师等

(5) 您的个人联系方式:QQ、电子邮件和个人博客(通过读您的博客文章,我们可以与您更好地沟通)等

需要指出的是,我无法保证您申请试读特定章节的请求一定能得到满足,这工作由本书小卢编辑负责。另外,强调一下,您所阅读的章节将成为正式出版物的一部分,因此,是有版权的,未经出版社许可,不要将收到的书稿样章在互联网上传播。

本书将由电子工业出版社博文视点公司出版。

我会认真地阅读大家的反馈信息对书进行修改,整个出版周期有多长还真不好说,估计年底前读者应该可以看到“正式版”。

作为一名作者,希望我的这本新作比前面的作品拥有更好的质量和更少的错误,也期望我的作品能对读者更好地理解和掌握最新的.NET软件技术有所帮助,请大家支持一名国内普通作者为提升写作质量的努力。谢谢大家!

相关文章:

  • 『软件周边』ColorSchemer Studio 2.0 注册码
  • 转 如何有效的使用C#读取文件 及如何解决中文乱码问题
  • 说出你的想法,赢取Windows Phone 7手机
  • 读了本书, 发现百度要比想象的有意思多了
  • ArcSDE vs. Oracle Spatial 12
  • 0318 NEEK_VIP_demo_LCD_SVGA_成功修改
  • ArcSDE vs. Oracle Spatial 13
  • JQuery 模式窗口插件
  • 基于Windows Phone的对讲机
  • Cheatsheet: 2010 04.01 ~ 04.07
  • Windows Phone 7开发版手机即将于下月发行
  • 实现Reporting Service2008 的匿名访问(亲测可行)
  • Reporting Service 学习笔记3 2010,0409
  • win7 与visual stdio 不兼容怎么办
  • [转]为DropdownList设置空白选项
  • 【面试系列】之二:关于js原型
  • 07.Android之多媒体问题
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • jdbc就是这么简单
  • JS字符串转数字方法总结
  • Leetcode 27 Remove Element
  • python学习笔记-类对象的信息
  • Spring Boot MyBatis配置多种数据库
  • Twitter赢在开放,三年创造奇迹
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 聊聊flink的BlobWriter
  • 十年未变!安全,谁之责?(下)
  • 数组大概知多少
  • scrapy中间件源码分析及常用中间件大全
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # 飞书APP集成平台-数字化落地
  • ###C语言程序设计-----C语言学习(3)#
  • #QT(一种朴素的计算器实现方法)
  • (10)ATF MMU转换表
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (ibm)Java 语言的 XPath API
  • (ZT)出版业改革:该死的死,该生的生
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (三)模仿学习-Action数据的模仿
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (一一四)第九章编程练习
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .NET中统一的存储过程调用方法(收藏)
  • @EnableConfigurationProperties注解使用
  • [8481302]博弈论 斯坦福game theory stanford week 1
  • [android学习笔记]学习jni编程
  • [ARM]ldr 和 adr 伪指令的区别
  • [Assignment] C++1