我是如何写一篇技术文的?

简介: 大家好,我是三友~~今天咱就不卷技术了,来跟大家伙讲一讲我是如何写一篇技术文的其实这个问题也是之前一个兄弟问我的,我当时只是简单的回答了一下后面想了想,觉得还是值得去好好总结分享一下所以这里我就把这差不多两年写作时间里踩过一些坑和一些经验,总结成了一些小小的心得分享给大家也算为一些想要写技术文的兄弟提供一点小小的帮助整篇文章我会分成写作前、写作中、写作后三个大方面共16个小点来跟大家分享

大家好,我是三友~~

今天咱就不卷技术了,来跟大家伙讲一讲我是如何写一篇技术文的

其实这个问题也是之前一个兄弟问我的,我当时只是简单的回答了一下

后面想了想,觉得还是值得去好好总结分享一下

所以这里我就把这差不多两年写作时间里踩过一些坑和一些经验,总结成了一些小小的心得分享给大家

也算为一些想要写技术文的兄弟提供一点小小的帮助

整篇文章我会分成写作前、写作中、写作后三个大方面共16个小点来跟大家分享

公众号:三友的java日记

image.png

写作前

1、选题

首先在写一篇技术文之前我大概会了解自己想写什么内容,也就是选题,这一点很重要

在选题的时候,我会思考下面几个问题:

  • 这个选题能为读者带来什么价值,有没有可写性
  • 大概写到什么程度,深入还是简单的剖析

而选题的灵感我一般来自于以下几个方面:

  • 日常工作中所遇到的问题
  • 日常学习之后的一些总结
  • 一些兄弟提的问题,就比如这篇
  • ...

2、查资料

有了选题之后,我会对这个选题所涉及到的技术点进行充分的了解

比如我会通过以下途径去查找资料:

  • 书籍
  • 一些技术网站的博客
  • 开源项目的官网
  • ChatGPT
  • ...

除了这些,如果涉及到源码相关的东西,我都会亲自再翻一遍源码

而在这个过程中,其实我可以学到很多东西

比如重新翻源码的时候,我会发现了一些我之前可能没注意的细节

又或是一些我之前没弄懂的问题突然就找到答案了等等

还加强了对一些错误信息的判断能力,比如ChatGPT,有时就有一些莫名其妙的错误

所以写文章本身也是一种学习的方式,这也是我一直坚持写文章的一个非常重要的原因

3、内容注意闭环

所谓的闭环的意思就是需要成体系的去写文章。

比如说,你在说讲一个核心的主题的时候,这个核心的主题一定包括一些相关的主题

而这些相关的主题就可以被拆分成不同的子模块,并且可以放到文章的前部分去讲

再讲每个模块一定要讲清楚这个前因后果,核心作用,尽可能详细

最后再把所有的模块进行整合,再来讨论文章的主题

这样文章的内容就成体系,也就成功闭环了。

4、列大纲

当做完上述步骤,在写之前我会列一下本文大致的大纲

列大纲非常重要,主要有一下几个原因:

  • 梳理好文章的思路,先写什么再写什么,保证全文的前后连贯
  • 减少写作时间,由于已经有大纲,所以就知道每一步需要写什么了
  • 减少不必要的修改,列大纲可以保证良好的文章结构,大大减少后期修改的必要
  • 保证内容完整,通过大纲可以检查是否覆盖了全部的文章内筒,确保不会遗漏重要的信息
  • 提供指导,当你在写作过程中迷失时,大纲可以提醒你接下来需要写什么

列大纲就跟平时写代码一样的,先写思考技术方案然后再写代码实现,而技术方案可以就是认为是大纲

5、找一个充裕的时间点写

当前面所有的东西都搞定之后,需要找一个时间充裕的时间来写文章

因为集中时间来写可以保证你的整个协作思路是连贯,这样写起来也比较快,写出的文章就比较连贯

我一般周一到周五都不写文章,统一都放到周末来写,因为没什么事,时间比较充裕

写作中

当你前面所有的准备事都完成之后,那么就可以动手来写了

不过再讲写作中注意的事项之前,这里我先推荐一个在线写作网站

https://editor.mdnice.com

网站是基于md语法来的,而且提供了很多精美的主题,很多公众号博主,包括我自己都在这个网站上写文章

写完之后只需要通过cv大法或者一键就可以把文章(包括主题),直接复制到其它平台,非常的爽!

ok,继续进入主题

1、语言精练

写作过程中第一点就需要注意语言的精练,通俗易懂,尤其是不要有大段的文字

试想,如果你看一篇文章一上来就是一大段文字,那么你还会看下去么

我想大概率不会,毕竟现在是一个快节奏的时代,很少有人能面对大段文字还能耐心地看下去

我在写作的初期也很容易写出一大段文字

后面当我遇到这种情况的时候,我就尝试对大段文字进行优化

比如,我会首先尝试先删除一些可有可无的文字

之后尝试通过列举的方式把大段文字来列成一项一项的

还可以通过多换行的方式,比如一句话就换一个行,让文章看起来就没那么挤

2、少写概念

在文章中尽量少写概念性的东西,能不提就不提

因为对于读者来说,如果他们阅读过程中发现了很多概念性的东西

而这些概念性的东西恰恰又是他们不懂的,那么此时就坏了

他们大概率就可能会产生抵触的心理,甚至就直接不看了

所以,尽量少提概念,如果真的需要提,记住,一定尽量用白话去解释清楚

我一般都会通过类比的方式去解释,帮助读者更好地理解概念

3、多配图

在写文章过程中记得多配图

有时一大段文字可能都描述不清楚的东西,一张图就可以随便搞定

所谓一图胜千言就是这个道理

所以我在我的文章里都会手绘大量图,帮助读者更好地理解文章

同样地,这里我推荐两个画图工具

  • processon
  • draw.io

processon是收费的,我在前期写文章的时候,画图基本上都是通过processon来的

但是后来我了解到了draw.io,觉得好像画图还挺好看的,并且是免费的,后面就用这个了

4、多举例

在咱技术圈中流传这么一句话

Talk is cheap , show me the code !

从这可以看出举例说明其实挺重要的

所以经常读我文章的兄弟会看到这么一句话

举个例子

我基本上都会列出一些代码来帮助我佐证一些观点

5、划重点

划重点在写作过程中也是比较重要

因为一篇文章比较长,说的东西也比较多,读者有时很难抓住一些细节,或者说是重点

尤其是当上下文有关联的时候,记得做进行一些强调、提醒操作

比如说可以用如下的字眼来描述

后面有大用、非常重要

这样当后面再提到这个点的时候,读者就会有映像,也就更容易看下去

6、小总结

当写完一个小模块的东西的,如果这么模块的东西相对来说比较复杂

那么此时就可以值得去做一个小总结

小总结可以列举这个模块所讲的知识点以及这些知识点各自的作用

或者通过画图的方式把所讲的知识点串联起来

让读者明白这一节大致讲了哪些核心的内容

7、尽量幽默

在写作的过程中,文章让人看起来尽量幽默

比如可以弄点表情包,写点段子,彪点英文,来个中西结合,加个梗之类的

这样就可以使得技术文章有趣味性,读起来不那么枯燥无味

但是注意要适当啊,不然可就会物极必反了,毕竟技术文还是以内容为主

这一点其实虽然我一直在尝试再做,但是做得还不理想,后面争取做的更好吧

写作后

每当我写完文章之后,我都会从头到尾多读几遍自己写的文章

在这个过程中,我主要是做以下几件事

1、整理排版

好的排版可以抓住读者的眼睛

整理排版主要包括一下几个东西:

  • 标题的级别做到统一
  • 适合的副标题
  • 适当的换行
  • 重点的突出
  • ...

2、改错

一篇文章有错再正常不过了,俗话说的好

人非圣贤孰能无过

所以我们在读的过程中要去识别错误

比如错别字,标点符号等等

当然还包括一些技术点描述的错误

我们要尽可能的去寻找这些错,改正,让文章尽可能没有错误

3、尝试再精练

前面在写作中的时候我已经提到要精练语言

但是在文章写完之后,我们还可以再尝试精练整篇文章

因为此时你可以站在整篇文章的角度去思考有些文字是否可以再精练,甚至有的文字是否有留下来的必要

我经常发现,写的有些东西并不是文章的主线内容

这部分内容直接被删除之后,对于文章的阅读和理解并没有什么实质性的影响,尤其是一些概念性的东西

4、总结标题

最后,根据文章的内容去总结出一个合适的标题,尽量做到见名知意

最后

前两天我翻了一下早期写的文章,当时觉得写得还不错的文章,现在看起来真的是惨不忍睹

光是看到格式,就觉得low得不行

而现在的文章,我基本上就是按照上面提到的那些点来写的

虽有不足,但是好歹也算上了摸着了正确的路,一切都在朝着好的方向法发展

最后,既然都看到这里了,不如点个赞再走吧~~

image.png

往期热门文章推荐

如何去阅读源码,我总结了18条心法

如何写出漂亮代码,我总结了45个小技巧

三万字盘点Spring/Boot的那些常用扩展点

三万字盘点Spring 9大核心基础功能

万字+20张图剖析Spring启动时12个核心步骤

1.5万字+30张图盘点索引常见的11个知识点

两万字盘点那些被玩烂了的设计模式

扫码或者搜索关注公众号 三友的java日记 ,及时干货不错过,公众号致力于通过画图加上通俗易懂的语言讲解技术,让技术更加容易学习,回复 面试 即可获得一套面试真题。

相关文章
|
JSON Java 数据格式
三万字盘点Spring/Boot的那些常用扩展点(下)
Spring对于每个Java后端程序员来说肯定不陌生,日常开发和面试必备的。本文就来盘点Spring/SpringBoot常见的扩展点,同时也来看看常见的开源框架是如何基于这些扩展点跟Spring/SpringBoot整合的。 话不多说,直接进入正题。
|
JavaScript 前端开发 API
无界微前端是如何渲染子应用的?(下)
无界微前端是如何渲染子应用的?(下)
832 0
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
590 3
|
存储 弹性计算 监控
【阿里云弹性计算】成本优化实战:利用阿里云 ECS 抢占式实例节省云支出
【5月更文挑战第21天】阿里云ECS的抢占式实例提供了一种成本优化策略,适合对中断容忍度较高的业务。通过创建和管理抢占式实例,结合API查询价格信息,企业能节省大量成本。使用时注意业务容错性,设置监控系统应对中断,结合其他成本优化措施,如存储类型选择和网络配置优化。确保业务可恢复性,关注阿里云政策,并根据业务变化调整策略,以实现成本与效益的最佳平衡。
313 3
基于最小二乘递推算法的系统参数辨识matlab仿真
该程序基于最小二乘递推(RLS)算法实现系统参数辨识,对参数a1、b1、a2、b2进行估计并计算误差及收敛曲线,对比不同信噪比下的估计误差。在MATLAB 2022a环境下运行,结果显示了四组误差曲线。RLS算法适用于实时、连续数据流中的动态参数辨识,通过递推方式快速调整参数估计,保持较低计算复杂度。
|
存储 安全 算法
Qt QQueue 详解:从底层原理到高级用法
Qt QQueue 详解:从底层原理到高级用法
624 0
|
设计模式 存储 Java
写出漂亮代码的45个小技巧(上)
大家好,我是三友~~ 不知道大家有没有经历过维护一个已经离职的人的代码的痛苦,一个方法写老长,还有很多的if else ,根本无法阅读,更不知道代码背后的含义,最重要的是没有人可以问,此时只能心里默默地问候这个留坑的兄弟。。
写出漂亮代码的45个小技巧(上)
|
开发工具 开发者 git
2023 Visual Studio Code 插件推荐:18 个提高开发效率的常用插件
Visual Studio Code (简称VSCode) 是一款强大的开源代码编辑器,它拥有众多功能强大的扩展插件,使得开发者可以根据自己的需求来定制编辑器的功能和外观。在本文中,我们将分享一些非常实用的 VSCode 插件,这些插件将提高您的开发效率,使编码变得更加愉快。
882 0
|
弹性计算 API
大咖与小白的日常:ECS如何对比性能?试试这个API
本文为您介绍阿里云云服务器ECS的选型过程中,可用于对比实例性能的DescribeInstanceTypes API。
|
NoSQL 算法 Java
弄懂Redis的儿子Redisson,只需这个15问题
在一个分布式系统中,由于涉及到多个实例同时对同一个资源加锁的问题,像传统的synchronized、ReentrantLock等单进程情况加锁的api就不再适用,需要使用分布式锁来保证多服务实例之间加锁的安全性。常见的分布式锁的实现方式有zookeeper和redis等。而由于redis分布式锁相对于比较简单,在实际的项目中,redis分布式锁被用于很多实际的业务场景中。 redis分布式锁的实现中又以Redisson比较出名,所以本文来着重看一下Redisson是如何实现分布式锁的,以及Redisson提供了哪些其它的功能。