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