如何写出高质量的技术博客?答案是:如果你想,就一定能写出高质量的技术博客。看起来很唯心,但这就是事实。有足够愿力去做一件目标明确,有良好反馈系统的事情往往很简单。就是不停地训练,慢慢地,你自己就能找出规律和技巧。所以,要写出高质量的技术博客,首先要解决为什么要写的问题。

为什么要写

我一直很喜欢的一个学习方法是

Learning by teaching

一个课题,如果你能给不懂的人解释清楚,说明你对这个课题的理解足够深入。把一个课题展开来写,你可能会发现某些方面你还写不清楚,这往往说明你对这个课题的某些方面理解还不够透彻,这样从侧面会给我们一个机会去把这部分补上。所以,写出来实际上是帮助我们发现我们对知识理解的偏差,纠正我们以为自己真的已经掌握了的假象。写的目的不是为了教,而是帮助自己学习。本质上讲,写只是学习的一种手段,本质上是利己的,顺便利他而已。

写带来的另外一个好处是可以让我们有意识地减慢学习速度。减慢学习速度是为了长远意义上的快,即真正地掌握一个课题。我们在看一本书,或研究某个技术的时候,很容易有个错觉:原来是这样,我懂了。但实际上,在遇到一个类似甚至相同的问题,需要用我们学过的一个方案来解决的时候,你就会发现原来这里有一些细节没搞懂,原来只有在某个前提下,这个解决方案才是有效的。这个时候我们不得不倒回去重新研究一遍问题,然而由于上次没有研究透,所以这次研究本质上省不了多少时间。这无形中让学习的效率降低了。所以,有时候慢是为了提高效率。就象不是所有的文章都需要精读一样,不是所有的问题都需要研究透,策略选择的问题是另外一个话题了。

刚学 C 语言的时候,看到书上的 hello world 程序感觉好简单。可真上机在 Turbo C 上写的时候,感觉脑袋一片空白,最典型的就是连 include 怎么写都忘记了。第一次学一门编程语言的人一定对这样的体验印象深刻。

写还有一个好处就是打开了一扇与外界连接的窗户。很多人喜欢程序员这个职业的一个重要原因是人际关系简单。但这带来的一个弊端是社交关系链太少。价值往往都在一些弱连接上碰撞产生的。而写是广泛产生弱连接的一个有效的途径。很多人通过高质量的技术博客,通过 GitHub 上的写出来的一些高质量的开源代码,与更大的世界,更好的平台建立了连接。

怎么写

战略问题想清楚之后,战术问题相对就比较简单了:就是不停地练,不停地写。写得多了,自然就写得好了。

假想读者群

每篇文章都应该有个假想的读者群体。假想一个读者群体有两个好处,一是让你写的时候有的放矢,可以很容易决定哪些详细写,哪些一笔带过。另外一个好处是,增加成就感。因为你内心认可,总会有一群人认为这篇文章有价值,这会带来长期激励。

不少人写的博客,看得云里雾里,象流水帐一样,只有他自己看得懂。为什么会这样?一个简单的原因是没有假想读者群,人家就根本不想写高质量的技术博客,而只是在记技术流水账和技术备忘录而已。假想读者群要求写作者清晰地定义哪些是看懂这篇技术博客所需要的基础知识。虽然这个前置条件不一定写出来,但在写作过程中一定是牢记在心里的。

还有不少人不想写,觉得这个东西写出来没人看。这个想法的错误在于,写的目的不是给人看,而是让自己更有效地学习。换个角度来看,你分享的任何一个知识点,几乎都有读者。因为这个世界上总有人还不懂,需要阅读这样的东西。而总会有另外一群人已经懂了这个东西,所以他们只是不是你的假想读者群而已。还有一些人不敢写,觉得自己文笔太差。我想这就是技术博客的好处,你不需要华丽的词藻依然可以写出高质量的技术博客。

选题

理论上讲,技术博客不需要选题,只要你认为对你的学习有帮助就可以写。但并不是每一个课题都适合写一篇高质量的技术博客。高质量是个外在属性,意味着高价值。什么样的课题价值高呢?有一个很简单的判断标准:你花的时间精力越多,说明价值越高,越值得写一篇博客。这也容易理解,因为别人如果也来学习这个课题,也要花很多时间精力,如果你的博客能帮助假想读者群节省学习时间,就创造了价值。

当你研究了大量的资料才搞懂的一个课题,做一个高质量的参考资料索引就是一篇有价值的博客。但这个方式不利于自己学习。如果把资料消化后,通过自己的语言描述出来。再在适当的地方引用原资料。这就不但有资料索引价值,还帮助自己学习。在哪些地方重点着墨呢?把你学习过程中最难理解的点解释清楚,解释透了,价值自然就出来了。

模仿

另一个技巧是模仿。找到高质量的技术博客,分析它的结构,基础知识铺垫,重点着墨点,然后模仿它写出一篇相同课题的博客,回过头再对比,看哪些方面没模仿到位。怎么判断一个技术博客的质量?一个简单的原则是,你在研究某个课题,搜索后发现某一篇博客把这个课题的所有内容都解释得很清楚。这就是一篇高质量的技术博客,因为它包含足够多的资料,足够合理的解释,让研究这一课题的你看懂了。

结论

有一个结论,说的是在网络上,只有 1% 的用户贡献了内容,10% 的用户比较活跃,会评论和点赞,剩下的都是网络透明人,他们只是默默地在看,即不贡献内容,也不点赞。我无法对这一比例数据进行求证,但从我的简书文章的阅读/评论/点赞数据的统计来看,大致符合这一结论。

这篇文章希望能让你成为网络上贡献内容的 TOP 1%。如果暂时做不到,那就先点个赞吧,成为活跃的 10%。

如何写出高质量的技术博客 这边文章出自http://www.jianshu.com/p/ae9ab21a5730 觉得不错直接拿过来了 好东西要大家分享嘛的更多相关文章

  1. 100个高质量Java开发者博客

    ImportNew注:原文中还没有100个.作者希望大家一起来推荐高质量的Java开发博客,然后不段补充到这个列表.欢迎你也参与推荐优质的Java开发博客.(声明一下:我们的数学不是体育老师教的!:) ...

  2. 转:100个高质量Java开发者博客

    原文来自于:http://www.importnew.com/7469.html ImportNew注:原文中还没有100个.作者希望大家一起来推荐高质量的Java开发博客,然后不段补充到这个列表.欢 ...

  3. 【伯乐在线】100个高质量Java开发者博客

    本文由 ImportNew - 夏千林 翻译自 programcreek.欢迎加入翻译小组.转载请见文末要求. ImportNew注:原文中还没有100个.作者希望大家一起来推荐高质量的Java开发博 ...

  4. 如何写一篇好的技术博客or技术文档(转链接)

    如何写一篇好的技术文档http://yunli.blog.51cto.com/831344/168352 程序员怎样才能写出一篇好的博客或者技术文章?http://www.zhihu.com/ques ...

  5. 学习:100个高质量Java开发者博客

    谷歌关键字搜索:100个高质量Java开发者博客. Java开发牛人十大必备网站.

  6. 如何写出高质量的JavaScript代码

    优秀的Stoyan Stefanov在他的新书中(<Javascript Patterns>)介绍了很多编写高质量代码的技巧,比如避免使用全局变量,使用单一的var关键字,循环式预存长度等 ...

  7. Mysql写出高质量的sql语句的几点建议

    CleverCode在实际的工作也写过一些低效率的sql语句.这些语句会给数据库带来非常大的压力.最基本的表现就是sql语句执行慢,后来逐渐的去优化和尝试. 总结了一些高质量的sql语句的写法.这里C ...

  8. 如何写出高质量的Python代码--做好优化--改进算法点滴做起

    小伙伴你的程序还是停留在糊墙吗?优化代码可以显示程序员的素质欧! 普及一下基础了欧: 一层for简写:y = [1,2,3,4,5,6],[(i*2) for i in y ]       会输出  ...

  9. 如何组织css,写出高质量的css代码

    !如何组织css一:css的API 属于基础部分,这部分的能力用“对”和“错”来评判. 比如说把文字设置为红色,只能用color:red:这种写法是对的,其他任何写法都是错的. 二:css框架 不能用 ...

随机推荐

  1. 《深入理解Java虚拟机》内存分配策略

    上节学习回顾 1.判断对象存活算法:引用计数法和可行性分析算法 2.垃圾收集算法:标记-清除算法.复制算法.标记-整理算法 3.垃圾收集器: Serial:新生代收集器,采用复制算法,单线程. Par ...

  2. ABP源码分析三十九:ABP.Hangfire

    ABP对HangFire的集成主要是通过实现IBackgroundJobManager接口的HangfireBackgroundJobManager类完成的. HangfireBackgroundJo ...

  3. .NET 基础一步步一幕幕[方法、结构、枚举]

    方法.结构.枚举 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值,写void 方法名:P ...

  4. SQL Server 动态生成数据库所有表Insert语句

    一. 背景 SQL Server,如果我们需要把数据库A的所有表数据到数据库B中,通常我们会怎么做呢?我会使用SSMS的导入导出功能,进行表数据的导入导出,无可厚非,这样的导入非常简单和方便: 但是, ...

  5. 高性能JavaScript--数据存储(简要学习笔记二)

    1.JavaScript中四种基本数据存取位置:字面量,本地变量,数组元素,对象成员. 一般来说:[字面量,局部变量]运行速度>[数组,对象成员]   2.内部属性包含了一个函数被创建的作用域中 ...

  6. 6.LibSVM核函数

    libsvm的核函数类型(svmtrain.c注释部分): "-t kernel_type : set type of kernel function (default 2)\n" ...

  7. Handler系列之原理分析

    上一节我们讲解了Handler的基本使用方法,也是平时大家用到的最多的使用方式.那么本节让我们来学习一下Handler的工作原理吧!!! 我们知道Android中我们只能在ui线程(主线程)更新ui信 ...

  8. 翻唱曲练习:龙珠改主题曲 【Dragon Soul】龙之魂

    首先这是个人翻唱曲: 这个是原版(燃): 伴奏:  翻唱合成为动漫AMV 出镜翻唱: 全民K歌链接: http://kg.qq.com/node/play?s=aYpbMWb6UwoU&g_f ...

  9. C#基础-MD5验证

    一.前言 MD5验证主要用于更新文件功能方面,服务器告知客户端要下载哪些更新文件并提供给客户端其MD5值,客户端从服务器将更新文件下载到本地并计算下载文件的MD5值,将本地接收的MD5值与服务器提供的 ...

  10. python入门-python解释器执行

    最近由于公司需要,接触了python这门神奇的语言,给我的感觉就是开发快速和代码简洁. 开始还是先罗列一下解释性语言和编译性语言的差别吧0.0!   编译性语言:是在程序运行前,需要专门的一个编译过程 ...