如何写出高质量的技术博客 这边文章出自http://www.jianshu.com/p/ae9ab21a5730 觉得不错直接拿过来了 好东西要大家分享嘛
如何写出高质量的技术博客?答案是:如果你想,就一定能写出高质量的技术博客。看起来很唯心,但这就是事实。有足够愿力去做一件目标明确,有良好反馈系统的事情往往很简单。就是不停地训练,慢慢地,你自己就能找出规律和技巧。所以,要写出高质量的技术博客,首先要解决为什么要写的问题。
为什么要写
我一直很喜欢的一个学习方法是
Learning by teaching
一个课题,如果你能给不懂的人解释清楚,说明你对这个课题的理解足够深入。把一个课题展开来写,你可能会发现某些方面你还写不清楚,这往往说明你对这个课题的某些方面理解还不够透彻,这样从侧面会给我们一个机会去把这部分补上。所以,写出来实际上是帮助我们发现我们对知识理解的偏差,纠正我们以为自己真的已经掌握了的假象。写的目的不是为了教,而是帮助自己学习。本质上讲,写只是学习的一种手段,本质上是利己的,顺便利他而已。
写带来的另外一个好处是可以让我们有意识地减慢学习速度。减慢学习速度是为了长远意义上的快,即真正地掌握一个课题。我们在看一本书,或研究某个技术的时候,很容易有个错觉:原来是这样,我懂了。但实际上,在遇到一个类似甚至相同的问题,需要用我们学过的一个方案来解决的时候,你就会发现原来这里有一些细节没搞懂,原来只有在某个前提下,这个解决方案才是有效的。这个时候我们不得不倒回去重新研究一遍问题,然而由于上次没有研究透,所以这次研究本质上省不了多少时间。这无形中让学习的效率降低了。所以,有时候慢是为了提高效率。就象不是所有的文章都需要精读一样,不是所有的问题都需要研究透,策略选择的问题是另外一个话题了。
刚学 C 语言的时候,看到书上的 hello world 程序感觉好简单。可真上机在 Turbo C 上写的时候,感觉脑袋一片空白,最典型的就是连 include 怎么写都忘记了。第一次学一门编程语言的人一定对这样的体验印象深刻。
写还有一个好处就是打开了一扇与外界连接的窗户。很多人喜欢程序员这个职业的一个重要原因是人际关系简单。但这带来的一个弊端是社交关系链太少。价值往往都在一些弱连接上碰撞产生的。而写是广泛产生弱连接的一个有效的途径。很多人通过高质量的技术博客,通过 GitHub 上的写出来的一些高质量的开源代码,与更大的世界,更好的平台建立了连接。
怎么写
战略问题想清楚之后,战术问题相对就比较简单了:就是不停地练,不停地写。写得多了,自然就写得好了。
假想读者群
每篇文章都应该有个假想的读者群体。假想一个读者群体有两个好处,一是让你写的时候有的放矢,可以很容易决定哪些详细写,哪些一笔带过。另外一个好处是,增加成就感。因为你内心认可,总会有一群人认为这篇文章有价值,这会带来长期激励。
不少人写的博客,看得云里雾里,象流水帐一样,只有他自己看得懂。为什么会这样?一个简单的原因是没有假想读者群,人家就根本不想写高质量的技术博客,而只是在记技术流水账和技术备忘录而已。假想读者群要求写作者清晰地定义哪些是看懂这篇技术博客所需要的基础知识。虽然这个前置条件不一定写出来,但在写作过程中一定是牢记在心里的。
还有不少人不想写,觉得这个东西写出来没人看。这个想法的错误在于,写的目的不是给人看,而是让自己更有效地学习。换个角度来看,你分享的任何一个知识点,几乎都有读者。因为这个世界上总有人还不懂,需要阅读这样的东西。而总会有另外一群人已经懂了这个东西,所以他们只是不是你的假想读者群而已。还有一些人不敢写,觉得自己文笔太差。我想这就是技术博客的好处,你不需要华丽的词藻依然可以写出高质量的技术博客。
选题
理论上讲,技术博客不需要选题,只要你认为对你的学习有帮助就可以写。但并不是每一个课题都适合写一篇高质量的技术博客。高质量是个外在属性,意味着高价值。什么样的课题价值高呢?有一个很简单的判断标准:你花的时间精力越多,说明价值越高,越值得写一篇博客。这也容易理解,因为别人如果也来学习这个课题,也要花很多时间精力,如果你的博客能帮助假想读者群节省学习时间,就创造了价值。
当你研究了大量的资料才搞懂的一个课题,做一个高质量的参考资料索引就是一篇有价值的博客。但这个方式不利于自己学习。如果把资料消化后,通过自己的语言描述出来。再在适当的地方引用原资料。这就不但有资料索引价值,还帮助自己学习。在哪些地方重点着墨呢?把你学习过程中最难理解的点解释清楚,解释透了,价值自然就出来了。
模仿
另一个技巧是模仿。找到高质量的技术博客,分析它的结构,基础知识铺垫,重点着墨点,然后模仿它写出一篇相同课题的博客,回过头再对比,看哪些方面没模仿到位。怎么判断一个技术博客的质量?一个简单的原则是,你在研究某个课题,搜索后发现某一篇博客把这个课题的所有内容都解释得很清楚。这就是一篇高质量的技术博客,因为它包含足够多的资料,足够合理的解释,让研究这一课题的你看懂了。
结论
有一个结论,说的是在网络上,只有 1% 的用户贡献了内容,10% 的用户比较活跃,会评论和点赞,剩下的都是网络透明人,他们只是默默地在看,即不贡献内容,也不点赞。我无法对这一比例数据进行求证,但从我的简书文章的阅读/评论/点赞数据的统计来看,大致符合这一结论。
这篇文章希望能让你成为网络上贡献内容的 TOP 1%。如果暂时做不到,那就先点个赞吧,成为活跃的 10%。
如何写出高质量的技术博客 这边文章出自http://www.jianshu.com/p/ae9ab21a5730 觉得不错直接拿过来了 好东西要大家分享嘛的更多相关文章
- 100个高质量Java开发者博客
ImportNew注:原文中还没有100个.作者希望大家一起来推荐高质量的Java开发博客,然后不段补充到这个列表.欢迎你也参与推荐优质的Java开发博客.(声明一下:我们的数学不是体育老师教的!:) ...
- 转:100个高质量Java开发者博客
原文来自于:http://www.importnew.com/7469.html ImportNew注:原文中还没有100个.作者希望大家一起来推荐高质量的Java开发博客,然后不段补充到这个列表.欢 ...
- 【伯乐在线】100个高质量Java开发者博客
本文由 ImportNew - 夏千林 翻译自 programcreek.欢迎加入翻译小组.转载请见文末要求. ImportNew注:原文中还没有100个.作者希望大家一起来推荐高质量的Java开发博 ...
- 如何写一篇好的技术博客or技术文档(转链接)
如何写一篇好的技术文档http://yunli.blog.51cto.com/831344/168352 程序员怎样才能写出一篇好的博客或者技术文章?http://www.zhihu.com/ques ...
- 学习:100个高质量Java开发者博客
谷歌关键字搜索:100个高质量Java开发者博客. Java开发牛人十大必备网站.
- 如何写出高质量的JavaScript代码
优秀的Stoyan Stefanov在他的新书中(<Javascript Patterns>)介绍了很多编写高质量代码的技巧,比如避免使用全局变量,使用单一的var关键字,循环式预存长度等 ...
- Mysql写出高质量的sql语句的几点建议
CleverCode在实际的工作也写过一些低效率的sql语句.这些语句会给数据库带来非常大的压力.最基本的表现就是sql语句执行慢,后来逐渐的去优化和尝试. 总结了一些高质量的sql语句的写法.这里C ...
- 如何写出高质量的Python代码--做好优化--改进算法点滴做起
小伙伴你的程序还是停留在糊墙吗?优化代码可以显示程序员的素质欧! 普及一下基础了欧: 一层for简写:y = [1,2,3,4,5,6],[(i*2) for i in y ] 会输出 ...
- 如何组织css,写出高质量的css代码
!如何组织css一:css的API 属于基础部分,这部分的能力用“对”和“错”来评判. 比如说把文字设置为红色,只能用color:red:这种写法是对的,其他任何写法都是错的. 二:css框架 不能用 ...
随机推荐
- 写自己的Socket框架(三)
在通信写完了以后,应用层接收到Socket抛上来的byte[],这个时候对于实际的写逻辑的开发者来说,这样的数据并不友好,我们就需要在应用层统一一个包的规则(应用层协议),处理完以后,然后再传给实际的 ...
- 修改linux的hosts 后提示“无效的参数”
碰到个问题,修改linux的主机名问题. vim /etc/hosts 192.168.154.129 129192.168.154.132 132192.168.154.133 133 本地ip是1 ...
- 锋利的jQuery--编写jQuery插件(读书笔记五)[完结篇]
1.表单验证插件Validation 2.表单插件Form 3.动态事件绑定插件livequery 可以为后来的元素绑定事件 类似于jQuery中的live()方法 4.jQuer ...
- JavaScript移除绑定在元素上的匿名事件处理函数
前言: 面试的时候有点蒙,结束之后想想自己好像根本就误解了面试官的问题,因为我理解的这个问题本身就没有意义.但是当时已经有一些思路,但是在一个点上被卡住. 结束之后脑子瞬间灵光,想出了当时没有迈出的那 ...
- jQuery-1.9.1源码分析系列(三) Sizzle选择器引擎——编译原理
这一节要分析的东东比较复杂,篇幅会比较大,也不知道我描述后能不能让人看明白.这部分的源码我第一次看的时候也比较吃力,现在重头看一遍,再分析一遍,看能否查缺补漏. 看这一部分的源码需要有一个完整的概念后 ...
- new/delete重载
在c++中,有时我们需要在运行阶段为一个变量分配未命名的内存,并使用指针来访问它,这里就可以用到new关键字.另外需要指出的是,new分配的内存块通常与常规变量分配的内存块不同,常规变量的值都储存在被 ...
- request 对象和 response 对象
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象 HttpServletResponse HttpServletR ...
- Navisworks 2014 Api 简单的使用
初次接触Navisworks Api .NET 的二次开发.主要是研究了一下.关于NavisWorks 结构树的加载. void LoadModel() { //清空当前的结构树信息 treeVie ...
- java类的初始化顺序
在java中,当我们new一个对象时,对象中的成员,初始化块以及构造方法的加载是有一定的顺序的,看下面一副图: 一.单类(无基类)下的初始化顺序: public class Parent { stat ...
- 前端渲染利器——JsRender入门
JsRender不少前端人员应该都用过,它是一个比较强大的模板,不牵涉太多技术依赖,使用起来非常舒服.我本人在前端开发中使用React之前,都是用的它了(实际上我感觉React没有JsViewes好用 ...