Fork me on GitHub

黄博文的地盘

我是一个程序员.

敏捷的写博客

| Comments

为什么写博客

写技术博客对于程序员的提升是不可估量的。只要你坚持一段时间,你就会发现它给你带来的各种积极的变化。思考问题更加深入了,更容易关注细节了,表达能力也增强了……

  1. 不断的总结自己。程序员面对的世界是非常复杂的,未知领域也很多,在解决问题时第一次的方式并不一定是最完美的,只有通过不断的总结,不断的反思,才更容易抓住事物的本质。随着程序员的水平提高,需要思考的问题就开始变的更深度,更抽象、更复杂。这个时候就会遇到瓶颈,而通过写博客的方式能将自己的经验整理成型,形成一个完善的体系。

  2. 能够认识到自己的进步。编程是枯燥乏味的,持续学习更难坚持。而写博客能激励自己,让自己看到自己的进步,并逐步建立信心。

  3. 加强记忆,方便回顾。对自己在平时的实践中的收获以博客的方式发表出来,本来就是一种记忆的强化。失败本身不能让人进步,而对失败的反思才能让人进步。使用博客记录下这些反思,才能保证不会在同一个地方跌倒两次。

  4. 强化发散思维,跳出局部看问题。其实各种技术都有相似或想通的理论作支撑。这些如果只看别人博客,只从google上搜素一些得到一些只言片语是很难领悟出来的。而自己写作的过程中随着对自己思路的梳理,更容易提升看问题的高度,以观全貌。

  5. 扩大个人影响力,获取更多机会。程序员从业有些年头以后,如果是喜欢技术的人,总会想与别人做些更深入、更高层次的交流,但毕竟水平越高,能进行这种交流的人就会越少、越分散。写作、演讲、著书立说,这都是让自己进入一个更高水平的交流圈的方式。进入了这个对话环境,你才发现:原来还有那么多可学、可发展的方向。很多人到了三十岁上下就开始惰怠、看不到发展方向,在我看来一个重要的原因就是眼界不开,没有进入一个更高水平的交流生态。(这一点感谢@JeffXiong的总结)

写博客要端正心态

很多人之所有不写博客,有各种各样的原因。有的说时间不够,有的说自己的积累不够,有的说没有文采…..

其实写博客就像一项业余爱好一样,看似不是工作中的分内事,但却更有助于自己的工作。

一个极端是怕写的幼稚,不敢下笔,不敢面对别人的评价。博客其实首先是写给自己看的,如果自己能有所收获,那就是值得的。

另一个极端是总想着不写则已,一写惊人。老想着自己的每篇博客都能博来大家的大量关注。其实再牛逼的作家总有几篇作品不尽如人意。但是没经历这些作品的历练,是无法揣摩出更深的意境。更何况我们是普通人,只要写出自己所感所想,虚心接收别人的意见、建议,就是巨大的进步。

敏捷的写博客

每个程序员都喜欢编码,但不是每个程序员都喜欢写博客。如果我们将写博客的过程与敏捷流程一一对应起来,使用编程的技法来写博客,那么能提起你的兴趣吗?

本人在写博客的过程中与敏捷手法结合起来,受益良多。

在一个敏捷团队中,一个典型的用户故事的声明周期是这样的。

其实我们可以将一篇博客看做一个用户故事。你既是IM(迭代经理),又是BA(业务分析师),DEV(开发者),QA(质量保证),而阅读你博客的人就是你的产品的最终用户。你的目标是让你的产品大卖(有越来越多的人关注你的博客)。

  1. 扩充你的Backlog。 创建backlog的要点就是随时随地的记录你的idea。这有个一个很有趣的理论,大脑有两个工作模式,线型模式(L型)和富模式(R型)。L型在工作的时候经常被用到,其按部就班,抑制了发散思维。而工作之余大脑得到充分休息,更容易进入R型工作状态,更容易得到好的idea,这时候要赶快的记录下来。所以这就是我喜欢evernote原因之一:随时随地记录idea。比如我的backlog里面现在有很多打算完成的博客,其中有《重构手法解析》一篇。《重构手法解析》这篇是我在上班骑自行车的路上想到的idea,并在到办公室的第一件事就是把这个想法记下来,放到backlog中去。

  2. Analysis。 要点:先写大纲,再进行补充完善。对于某个idea,大概确定要写什么,想表达什么样的意思。无论是技术文章还是平时的一些反思总结文章,都要有一定的骨架。我们可以先将这些骨架确定,然后再填充内容,这就像软件的设计一样。比如《敏捷的写博客》这篇,我确定一个骨架就是:1,写博客的好处。 2,敏捷流程。 3,如何让写博客变得敏捷。有了这个大纲作为支撑,写的时候就不会漫无目的。

  3. Development。 要点:采用自由写技术。何为自由写?即针对当前的博客主题及大纲想到什么就写什么,而不用太纠结于用词造句。这就像你要修建一面墙壁,事先不需要计划收集特别的材料,只需要到处走走看看,捡一些好看的时候备用。直到准备造墙时,就从石头堆里面挑出匹配的石头安放。写一篇2000字的文章容易还是将4000字的草稿整理成为2000字的文章容易?相信大多数人会选择后者。

  4. Testing。 要点:斟酌语句,最后的检查,将草稿转化为定稿。

  5. Done。发表。

是不是发表了以后就完了? NO。我们缺少了敏捷实践中最重要的一环,那就是retro(回顾会议)。我们需要吸收读者的评论,修正自己的观点,再对博客进行加工。

我的同事@IM_ZhangYve使用evernote来管理自己的文章。他将category建成了这个样子。

evernote category

这样evernote就成了一个故事墙,每个用户故事就是一篇博客,当前那些处于backlog,那些处于WIP,一目了然。你所需要做的就是尽量把用户故事往done里面挪。

使用敏捷的博客工具

以上只是用敏捷的方法来管理博客,那有没有相应的工具来支持像敲代码一样的写博客? 有,那就是octopress。使用octopress博客框架写博客与写代码没什么两样。 具体如何使用octopress,请自行google或者直接去其官网。 下面简单讲下如何使用octopress发表一篇博客。

  • 创建一篇博客。
1
2
3
:~/sourcecode/octopress$ rake new_post['敏捷的写博客']
mkdir -p source/_posts
Creating new post: source/_posts/2013-04-01-min-jie-de-xie-bo-ke.markdown
  • 编辑博客。

    使用任何你喜欢的编辑器打开2013-04-01-min-jie-de-xie-bo-ke.markdown文件,比如vim、emacs、sublime等。甚至编代码的ide都行。然后使用markdown的语法来编辑你的博客。设置标题、设置列表、加粗、加下划线、代码高亮…一切根本无需借助html编辑器就可以轻松实现。

  • 发布博客。

1
2
:~/sourcecode/octopress$ rake generate
:~/sourcecode/octopress$ rake deploy

不过毕竟将博客host在githubheroku人气没有博客园这么旺。我们可以通过同步的方式将博客同步到博客园中。只要将screen.css文件引入到博客园中,就可以共用生成的html元素。我最喜欢的是github显示代码的效果。

最后再推荐我们公司部分大牛的博客。

Comments