摘要:
我一直认为,程序员应该多写技术博客…
Fundebug经授权转载,版权归原作者所有。
我在刚开始写技术博客时,感觉是无从下手,相信很多朋友都有相同的感受。经过不断的总结和实践,更在一些朋友的帮助和指导下,目前我至少有能力写技术文章。
我发现,写技术文章不仅能帮助我提高学习的效率,少走学技术的弯路,更能让我清晰地描述出针对某个技术的体会。利用这些在博客园里学到的技能,我还出版了两本书。Java Web轻量级开发面试教程 和 Java核心技术及面试指南,在工作中我也受益匪浅。
为了感谢大家对我的一贯支持,也为了让更多的朋友快速掌握“通过写博客高效提升能力”的技巧,在这篇博文里,我将分享下关于构思选题,搭建文章结构,组织代码和文字等的技巧。更重要的是,我还将分享通过学技术写博客提升自己能力的感受。
1. 先给自己指定一个学习的目标,一定是先学技术再写文章
目标非常好定,大家思考下,最近学好什么技术后,你就可以通过跳槽等方式提升收入。比如针对3年java开发,掌握分布式框架或大数据分析或机器学习,一定能提升自己的价值。如果大家感觉找不到学习方向,就去看招聘市场上,你从事的方向,哪些技术比较值钱。
我就拿分布式框架举例,其中包含缓存,消息代理中间件,反向代理,数据库架构等方向,就据此给自己制定一个计划,以半年为大目标,每一个月制定一个小目标,比如半年后,就可以出去面试,每一个月,深入了解其中一个组件(或至少面试时不会被问倒)。
制定好目标后,大家就可以各显神通地学习了,比如看博客,买书,看视频,甚至参加培训班都行,但关键一点是,得投入大量时间。这里我的体会是,这个目标最好和钱有关,比如学好后能跳槽,或者学好后能出去培训讲课,这样学习动力就非常足了。
2. 当你感觉大致了解某个技术时,就可以写一篇初级的文章
一般学习分如下几个阶段:
-
知道这个技术是干嘛的
-
通过运行代码了解这个技术的基本要素。
-
通过一个小型综合性的项目了解这个技术的开发步骤。
-
通过实践了解实际项目中用这个技术会有哪些坑。
我一般在达到第3个阶段后,就出去通过面试去检验学习成果了,毕竟如果在公司里没机会,很少能达到第4个阶段。
这时,如果你学到第一个阶段,就可以开始通过写初级的文章来归纳总结了。我就拿Spring Cloud里的负载均衡组件Ribbon来举例,在初级阶段,大家可以按如下的思路来写。
上述内容由于不涉及到代码,所以初学者在经过一定时间的学习后也能写,如果再按如下的要求写的话,这篇文章绝对会有质量,比如可以留在博客园首页不被移除了。
要求1
别大段摘录网络上现成的资料,比如大段摘录关于Ribbon的介绍,如果真的要介绍,先自己看懂,然后用你自己的话写出来。一篇技术文章最低的标准是,随便拿一句话到网上搜,应该是搜不到雷同的(别人抄你的除外),这点要求可能对刚开始写文章的人有些难度,但如果你要提升,这一定要做到。刚开始的话,大家甚至可能无法组织文字措辞,写出来的文章可能质量也不高,但只要写几篇,文字能力的提升就会非常快。
要求2
必要时,可以放些框架图或者接口图,同样道理,别直接摘录别人的图,如果可以,你用各种制图工具画出来,实在不行就用Excel里基本形状的图画出来。如果再不行,你可以用一些现成的图,但在图的下方,得加上你对这个图的说明。
要求3
得讲清楚这个技术的最基本的要素。比如之前写语文议论文,先亮出一个观点,再通过若干论据来证明。在写技术文章时,先不要求有多么深入,但在这篇初级的技术文章里,得讲清楚如果要项目里用某个技术(比如Ribbon),我们至少得用哪些组件(比如负载均衡器和策略组件)。
要求4
这也是最重要的一点,一篇文章里,多少得有你自己对该技术应用的体会,否则,你文章里的内容完全是你搬来的,你就没进步了。比如Ribbon,大家可以写,Ribbon可以给大家带来哪些便利,你安装配置Ribbon时解决了哪些问题。当然,你首先得学习别人的文章,不过,在你参考多篇别人的文章后,多少会有些自己的体会,这时一定要写下来。你的体会其实就是这篇文章的精髓,积少成多,你多写几篇文章后,体会自然就多了。
3. 当你运行通代码时,就可以分享步骤了
学技术一定不能停留在理论阶段。如果仅知道理论,或看了别人的代码但自己不去实践,别的不说,在面试时,这方面一定过不了。
话说回来,目前网上信息太多太多,要找某个技术的可以运行的代码也不是难事。我还是拿Ribbon举例,说下我如何运行代码,再如何据此写技术文章。
-
第一,多找些书或视频,我知道RIbbon里有哪些组件,以及实际项目里,会和Eureka等组件整合。
-
第二,我就找些各组件(比如负载均衡器或iRuler等)的代码,运行通,并从效果里体会这些组件里常用方法的参数的含义。
-
第三,找个和Eureka的整合案例吧,并运行通过。
至此,我就可以写关于运行步骤的代码了,具体的文章大家可以按我相关的博客内容,比如,Spring Clould负载均衡重要组件:Ribbon中重要类的用法。
在这里,我是通过贴代码加针对代码说明的方式,讲述针对Ribbon重要类和接口的说明,自认为讲得比较清楚。而且,写这类带代码的文章绝对要比写刚才提到的初级文章收获大。
4. 但别仅仅停留于此,多想下,在实际项目里,该怎么用?该如何避免坑,这类文章最值钱
我经常在博客园里看到有大牛把解决实际问题的经历写下来,或者写如何在项目里避免一些坑。这类文章是经验的凝结,其实是最值钱的,我也尝试写过关于线程和OOM等的文章。
这类文章往往要是技术大牛才能写,而且写这类文章很费经历,往往一个月写一篇此类文章就很好了。对于像我这类在学习阶段的人,或许写不出高质量的技术文章,但不代表没法写点击量高的文章,比如,如下几类文章同样可以获得高点击量,而且不难写。
5. 总是先学习先调通代码再有技术文章
台上一分钟台下一年功,哪怕是大牛,不通过学习积累,不调试代码,不去看底层的代码,也没法写技术文章,或者写出来的技术文章会很肤浅。所以如果大家感觉没东西可以分享,那么根源是最近学习少了体会少了,这才没分享的资源,这时候首先要做的是学习。
比如最近有人要我写大数据方面的文章,刚开始我一定不知道该写什么,这时候就会按之前讲的思路,通过看视频或别人的技术文章,调通若干个python大数据的案例,然后再从网上找些实际的企业级的大数据项目,也运行通,随后写技术文章。当大家运行通企业级的大数据项目后,可以写题材就很多了,比如如何搭建大数据环境,python开发大数据有哪些重要组件,它们该怎么用,或者可以把自己在调试时遇到的坑写下来,照这思路,一定能写出高质量的文章。
6. 技术文章的写作思路:总分总结构
之前讲的是选题材以及写作方面的一些技巧,这里就详细讲些技术文章的具体操作思路:总分总结构。
在语文里,还有其它结构,但就用这个最基本的结构,其实就可以写好文章了。
在技术层面怎么用总分总结构?(以Hystrix组件为例)
-
第一,在文章开始,写一下该组件是什么,可以干嘛,最好配上图。这是第一个“总”。同时,列出该技术至少可以包含哪些要素。
-
第二,在文章的后面部分,逐一讲述Hystrix的重要组件,比如回退保护方法,缓存,同步异步返回等技术,这所谓“分”,而且,在介绍各部分时,最好结合代码说明。
-
第三,在文章结尾,总结下上述组件如何有效地整合到一起工作的。这是第二个“总”。