• 要上进总会有时间的,要放松也总会有理由的——记录2年出版2本书带给我的改变,同时分享写书和写博客的技巧


        2年前,我其实是很开心的,人在外企,加班不多,晚上下班后就躺在沙发上电视或刷连续剧。周末除了出去讲课挣外快,一般也时玩游戏为主,经常会一个下午加晚上,先玩游戏再下棋再看片再听歌。结果发现我的能力脱节了,大概比互联网公司里的同龄人落后了3年技术。具体表现是,我当时出去面试,面一个失败一个,而且有些问题里涉及到的框架技术我根本没听说过。而且,我的工资水平也要比同龄人要低。

         于是,为了不继续颓废,我最近两年写了两本面试书:Java Web轻量级开发面试教程Java核心技术及面试指南,而且在扩展其中的一些内容的基础上,在博客园里写了若干篇博文。当时仅仅是想用空闲时间写书挣个外快,但没想到通过写书,不仅提升了我的技能,更提升了我的管理时间的本事,更重要的是,让我也拥有了更多上进的动力。所以现在,我其实也很开心,或者说是充实:换到了一家技术含量比较高的公司,虽然感觉自己能力和大牛有差别,但至少有机会弥补上。虽然工资水平依然落后平均,但至少也能通过提升能力来赶上。

        我写本文的目的绝不是自我夸耀自吹自擂,因为一方面,我离开大牛水平还有很大距离,我无法骄傲,另一方面,我更得保持谦逊的心态从而让我更多地提升技能。本文不仅将激励大家的上进动力(鸡汤文),更多地会和大家一起分享写博文和写书的技巧。好了,开场白结束,正文开始。

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    1 杜绝借口,合理利用碎片时间

        如果在标题里所说,要放松总是有理由的,比如今天加班晚了,今天累了,或者今天没心情,或者其它。

        对此,我的体会是,只要我们还存有上进心,那么总有时间。比如我现在,平时一般是9点下班到家,周末有时候得出去,而且公司里的活也比较多,但目前我还能保证每周一篇博文,大概20天左右一个新书的章节,外带一些零碎的活,这在2年前是不可想象的。

        这里我的感受是,在不同时间段,人的接受能力和疲惫程度是不同的,可以在不同的时间段合理安排不同的事。具体的一些做法如下。

        1  上班如果稍有空闲,可以看些将要写的章节的技术点,以便回家上机调试,或者看些学习资料。

        2  下班后,回家的地铁或公交上,就可以想下博文该写什么,怎么构思,怎么措辞,或者新的章节里,该放哪些内容。

        3  回家后,如果还有精力调代码,那就准备稿件的代码,如果累了,就针对已经调通的代码写稿件,或者写博文。

        4  干好活后,可以适当放松,但别睡太晚,准备第二天早起。

        5 第二天利用上班前脑子好的时间,可以调代码,或者准备新书章节里比较关键的措辞(比如每个章节的综述性文字或每章小结)。

        这样的话,碎片时间都能用上,不过实施起来,一定得给自己定若干个大的目标,然后根据每天可以利用的时间,把目标拆分到每周每天。  

    2 没目标,再高效利用时间也是白忙

        就好比干家务无法达到锻炼的效果,平时的工作最多让我们能在某个行业和某些技术领域成为熟练工,如果要提升,只能靠平时学习。

        我的体会是,如果漫无目标,那么有可能本周学python,下周学大数据,再下周学AI,这样每个方面都有涉及,但都不深入,最终学习效果一定很差,个人提升速度一定很慢,要提升,要学习,一定得给自己定个目标。

        比如给自己2018年定的目标之一是,利用10个月的时间,从架构角度深入学习Spring Cloud微服务,并在这方面出版一本书。对此,我再拆分若干小目标,比如:

        1 用1周联系出版社,准备选题报告和大纲     2 把书拆分若干个章节,比如Eureka,Ribbon,每个章节里,用1周准备代码,1周写文稿,平均1个月2章,全书用7个月完稿    3 用1个月录制视频。 等等。

         有了目标,可能最终会进度慢,但至少不会让自己迷失。其实Java零基础学完能到企业干活的初级开发的基本技能,学习时间最多也就一个月,按平均每天1.5个小时学习来算,最多也就50个小时。对于初级开发而言,学习能升级到高级开发的技能,一般来说是2个月,学完后就能出去面试高级开发的岗位了。如果单学一个技术,比如Python,或大数据,或Spring Cloud,入门级学习一般也就1个月,面试级学习(运行通各重要组件的案例,知道一些开发细节)的用时一般也在2个月。

        换句话说,用一年的时间学习,能帮我们脱胎换骨(我的真实体会),学好以后的,按目前市场的行情,至少能让我们的月薪涨3k。

    3 能留在博客园首页的博文写作模式(包括构思方式,写作方法和写作题材)

        上述都是一些技巧,这里就开始给些干货。

        写博文能记录下自己升级过程中的心得,也能记录下自己在提升技能时解决的问题,更重要的是,如果能把写博文当成一种习惯,那么还能促使自己不断进步,比如不断学习新的技能,乃至不断提升自己挣钱的效率。

        如果自己写的博文能不被移出首页,或者进入各种排行榜,那么自己写作的动力就会更足。其实大牛们的文章不需要什么技巧,所谓一力降十会。这里列些一般的人能做到的,而且能吸引多点击量方法。

        1 写作的内容和自己学习的节奏保持同步

        比如我在spring cloud,那么每当我学好一个组件,比如负载均衡的Ribbon组件,我就可以开始构思博文里,一般一个组件可以写2到3个。

        2 怎么搭建文章的脉络?

        先个每篇文章定个主题,比如我要写Eureka和Ribbon整合,实现负载均衡,每个主题其实就是我阶段性学习的目标。然后列每部分的内容,(这对于书而言,就是大纲),比如第一部分写概念,第二部分写Ribbon实现负载均衡的基本组件以及用法,第三部分写和Eureka整合的代码,第四部分写你在调试代码时遇到的坑,如果可以,再加上你的心得,比如对负载均衡的理解等。

         博客园首页的标准是,有一定的篇幅,原创而且有质量,上述一篇文章的话,由于分了部分,所以篇幅一定够,原创不用说了,而且有你自己调试通的代码和心得,质量也能有保证,至少能留在首页了。 之前的博文里,我列过用总分总的方式写每个部分的内容和解释代码,这里就不再重复了。

        3 叙述概念一笔带过

        给出概念的篇幅以能讲明白为止,不能大段摘录,最好是你先看明白,再用你理解的话说出来。如果有现成的流程图或架构图,你可以在贴出来,但一定要给出说明,如果有时间,你也可以用UML工具或Excel的方式再画一遍。

         4 代码解释部分是关键

         一篇好的博文,乃至合格的书的稿件,一定是基于代码的,如果一篇博文能有一个能运行通的案例,然后针对这个案例解释,那么博文的质量一定不会差。比如我讲Ribbon和Eureka整合,那么我就给出一段代码再解释,那么对其它想学的人一定就有帮助。 

        那么怎么准备代码呢?在初学阶段,自己通过看API等说明自己搭建,估计也不现实,所以一般可以看3个左右别人已经实现好的项目,先运行通,自己先理解,然后一定得改写,小到改写方法名变量名,大到改写代码的结构,比如重构方法,随着学习的深入,可以再自己加些功能。

        很多朋友想写博客,但在写的时候无从下手,其实博文乃至图书不是凭空码字得来的,一定得有代码案例,然后在此基础上外带些概念流程图,再针对代码案例进行说明,这样博文的篇幅想少都不行。

       初学的朋友在写博文时,一般会采用如下的思路,列出来给大家参考。

        1 比如写设计模式系列,每个模式写个案例,外带自己的解释。

        2 找个工作中用到的,或者自己为了跳槽一定得学的技术,比如Python,或redis分布式组件,找本书,或者找个系列视频,刚开始阶段不建议自己到网上搜内容,因为书里和视频里已经包含了学习步骤(该学什么不该学什么),如果自己去探索的话,一定会走弯路,比如学了用不到的技术。

        在这个基础上,针对每个内容,比如Redis实现缓存等,调试通人家的代码,再按我之前提到的方法自己理解下,然后针对这个内容写博文。

        3 解释底层代码。因为在面试时,如果能解释通一些底层代码,这绝对是个加分项。底层代码,小到ArrayList等集合的实现类, 再大一点的可以是ConcurrentHashMap等复杂对象的实现方法,再大一点可以是Spring IOC, AOP,MVC的底层实现。

        这类文章,代码不用自己准备,但最好Debug跟踪进去看下关键性流程,同时针对流程上的重要类和重要方法做解释,如果讲透彻了,一定是个深度好文。

        4 或者写一些平时针对技术和职场方式的感悟,比如我经常写如何面试,也可以写你对你当前用的敏捷开发模式有什么想法等。这类文章只要内容能引起大家共鸣,比如写的事是程序员平时一定会遇到的,那么也一定也能收获不少点击。 

    4 写书的门槛比想象中要低很多,要出版图书,更多的靠的是毅力

         写博文能给大家带来的收益是间接性的,未必能直接来钱,但写书的话,就有钱了,当然要求就高了。

         我这里无意为出版社或者图书出版公司站台,虽然写书的挣钱效率不高,刚开始平摊到一个月也就2千,但对于初学者(也包括我)而言,可能未必有其它挣钱的途径。

         记得我写第一本书的时候,是毕业一年后,很多人在大学阶段就出书的了,所以写书最大的阻力不是能力,而是毅力。

         出版书需要多少技术积累呢?大家可以想象下,比如要写本Oracle SQL优化,或者SSM框架的书,或者Python大数据,其中会全面性地用到该技术里的组件,但哪怕是大牛,绝对不可能是都懂了以后再写,一定是边整理边写,往往书也出了,能力也上一个大台阶了。

        写完一本图书需要多久?一般来说,一个章节估计20到30个小时,包括调通代码写稿件,一般书就以12个章节来算,估计400个小时左右,如果按每周最低10个小时来算,一般10个月一本,我知道的人里,能在保证质量的同时,做到6到8个月出一本。

         但一旦出了书就不一样了,至少在这行业就可以说比较少熟悉了,面试时底气就更足了。而且,你出了书以后,就可以去做些挣钱效率更高的活了,比如跳槽进个大公司,如果不跳槽,也能凭这个去外面讲课了。  

        钱还是小事,更重要的时,在写书的时候,还能到各个技术社区里接触到各位大牛,和他们交流,得到他们的指导,绝对能少走弯路。   

    5 版权说明和欢迎交流

        本文欢迎转载,转载前请和本人说下,请全文转载并用链接的方式指明原出处。

        本人最近一直在想如何做畅销书,但出于工作和视野的局限性,想到的方法也是有限的,欢迎各位大牛告诉我一些写畅销书的选题方向和技巧。在此谢过。

       

  • 相关阅读:
    Notes 20180308 : 语句
    Knowledge Point 20180308 拔下forEach的外衣
    Notes 20180307 : 运算符
    Notes 20180306 : 变量与常量
    Knowledge Point 20180305 Java程序员详述编码Unicode
    Knowledge Point 20180305 十进制转换成二进制浮点数
    Knowledge Point 20180305 补位的两种方式
    老式浏览器支持html5与css3
    浏览器内核总结
    koa常用api文档整理
  • 原文地址:https://www.cnblogs.com/JavaArchitect/p/9749803.html
Copyright © 2020-2023  润新知