如何撰写较受欢迎的技术文章


640?wx_fmt=jpeg

本来我这篇文章的标题是 “如何撰写受欢迎的技术文章”,但反复斟酌之下,还是加了一个“较”字,这主要是考虑我不是什么知名作者,写的文章大多也谈不上很受欢迎,贸然地谈“受欢迎” 是有点忐忑的,而改成现在这样,虽然只是一字之差,但就多了一份进退的空间,自信心也就油然而生了。


我写技术文章的时间,算起来有超过13年了,我一直在国内比较早期的技术博客平台——博客园发表文章,至今已经有 1347篇随笔,累计阅读量约 96万,拥有“推荐博客”的荣誉。根据博客园的规则,我目前排名第40位(以前可能还略微靠前一些),跟很多大家耳熟能详的大牛相比,我还有很大的差距。


我的技术博客地址是 https://chenxizhang.cnblogs.com


640?wx_fmt=png


我写的文章在数量上有一定的优势,这可能跟我写的内容和方式有关系。熟悉我的朋友大抵知道,我有相当长一段时间做咨询顾问和培训讲师,那段青葱岁月,相对单纯的日子,每天的日常就是吃饭、睡觉、写文章(或做案例)。做培训讲师需要不断地学习,而且通过把一些技术经验写出来,也是一种提高自我的方式。逐渐地,我的博客拥有固定的一批读者,他们给了我很多反馈、以及鼓励,和温暖。


640?wx_fmt=png

那么,回到今天文章的主题 —— 如何撰写较受欢迎的技术文章?我想先用一篇目前为止在我的博客中最受欢迎的一篇文章作为例子讲解一下。


640?wx_fmt=png


该文章的访问地址是https://www.cnblogs.com/chenxizhang/archive/2011/09/10/2172994.html ,你也可以在本文的底部,通过“阅读原文”链接访问。


这篇文章 《你得学会并且学得会的Socket编程基础知识》发表于2011年,算起来也有快8年的时间了,累计阅读量为75441,评论数为110,点赞数为 73,这三个指标都是各自领域的第一名。更加让我印象深刻的是,直到现在还仍然经常会有读者给我留言,有的还是专门为了留言注册了一个博客园账号,感动之余,我也在想其中的原因。


640?wx_fmt=png


我们先来看看题材。写作有一个作用是帮助自己梳理思路沉淀经验,但文章主要还是写给别人看的,尤其你要公开发表的话。那么,“决定写什么” 是一个很重要的问题。你至少需要考虑


  1. 我的目标受众是哪些人群?这个人群有多大?

  2. 他们需要什么哪方面的内容?


思考这两个问题,看起来有点像做市场分析,大家可能会觉得不是技术人员的专长,但越来越多的经验证明这是很有必要的,其实这两个问题的背后还有一个深层次的问题:你是成为怎样的一个作者?你的目标是什么?


其实写别的文章,做别的事情也有类似的原则


640?wx_fmt=jpeg


这个题材 ——”Socket编程的基础知识“ ,老实说我在写作的开始并不太知道会有这么大的需求。我记得当时已经有多种技术可以做客户端和服务器端的通讯,尤其是要有状态的通讯。用现在的眼光来看,是不是因为这种偏后端的技术相对来说稳定(不像前端技术那样日新月异),有固定的用户群体,Socket是其中一种比较基础的技术,所以在这么多年还有人在不断关注呢?


640?wx_fmt=png


我感觉,正如文章标题《你得学会并且学得会的Socket编程基础知识》所提出的那样,这篇文章胜在”情境引导“,有情境,所以言之有物,不是说空话套话,而引导式的目的是为了让读者能真正学会。该文章是通过一个完整的案例,并且是层层推进的方式给读者呈现他需要掌握的知识,而且连什么情况下会出现什么错误提示,都考虑到了。


同样的例子,还有常年霸占博客园推荐排行榜第一名的蒋老师的文章,例如这一篇 《200行代码,7个对象——让你了解ASP.NET Core框架的本质》https://www.cnblogs.com/artech/p/inside-asp-net-core-framework.html, 机缘巧合我还有幸听过他针对这个话题的现场演讲,这种抽丝剥茧,层层深入的方式,能时刻抓住观众(或读者)的注意力,而背后的原理和知识点,也是通过一个一个例子,润物细无声地传递给了他们。


640?wx_fmt=png


另外一种写作形式,是系列文章。早些年博客园的鼎盛时期,真的是百花齐放,各路大神都有各自的系列,我印象深刻的有赵劫,Terry,蒋金楠,张善友等。写作系列文章需要足够的功力,这些能写系列文章的牛人,也大多成为了后面的畅销书作者。


还有一种我认为比较好的写作方式或者风格,就是有独立的见解,这是可遇不可求的。这方面,我一直很喜欢阮一峰的技术文章,如果我没有记错的话,他应该曾经做过大学老师,现在供职于阿里支付宝(Alipay.com),作为Node/Javascript的工程师。


640?wx_fmt=png


同样讲一个技术话题,他的文章可以让你有不一样的收获。这主要取决于他对于这个话题的深入研究,旁征博引,并且有自己的一套独立的见解,而不是人云亦云。例如 《找回密码的功能设计》 http://www.ruanyifeng.com/blog/2019/02/password.html


640?wx_fmt=png


阮一峰是70后,他的文章如此好,可能跟他的文化功底和社会阅历有直接关系,事实上他不光写技术文章,还写了几本文集呢。


640?wx_fmt=png


工欲善其事必先利其器,在信息过载的时代,平台和工具的重要性还是不言而喻的。在选择平台到时候,你需要考虑平台用户群体是不是跟你的目标受众匹配,还要看这个平台未来的发展规划。这里特别要提到,如果你的目标受众是年轻一代,需要特别注意他们的学习方式、关注的平台是跟以往不一样的。


搞清楚了上面这个问题,对于作者来说,你选择的平台还要满足几个条件:


  1. 是否方便你的写作?是用客户端还是在线的?

  2. 搜索引擎友好性怎么样?这方面博客园做得非常好。

  3. 移动化阅读体验如何?


我在这篇文章中 (我分享给大家的个人写作经验) 有对写作平台的详细说明,有兴趣请仔细阅读参考。


640?wx_fmt=jpeg


说了这么多,也讲了很多技法,但其实写作是一种自我修行,你永远不知道你写的东西是不是受欢迎,对此你也不必过分期待—— 尽管去写,去尽量写好,然后你自然会有所收获,尤其是内心的喜悦,这是千金不换的馈赠。


640?wx_fmt=jpeg


针对写作,尤其是技术文章的写作,我此前有几篇心得,有兴趣可以参考

  1. 三十分钟写作法

  2. 写作技术文章或图书的一些经验

  3. 我分享给大家的个人写作经验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

朝鲜时蔬(分数据点写算法+毒瘤数学)

朝鲜时蔬decriptionsolutioncodedecription 对于一个有穷非空正整数集合S{x1,x2,x3,...,xn}⊂N(n≥1)S\{x_1,x_2,x_3,...,x_n\}\subset N^(n\ge 1)S{x1​,x2​,x3​,...,xn​}⊂N(n≥1),定义其和sum(S)sum(S)sum(S)为所有元素的和 sum(S)x1...xnsum(S)x_1...x_nsum…

洛谷P7515:矩阵游戏(差分约束)

解析 如果没有元素均要在 [0,1e6][0,1e6][0,1e6] 的条件,可以很容易的构造出一个合法解。 那么我们就要通过调整得到的解,使所有数都在合法范围内。 注意到,每次给某一行/列依次1,-1,1,-1…这样仍然符合要求。 让每一行/列错开,…

Recursive sequence HDU - 5950

Recursive sequence HDU - 5950 题意&#xff1a; 给你一个式子&#xff1a;f[n]2f[n-2]f[n-1]n4 给你f[1]和f[2]&#xff0c;给你一个n&#xff0c;求f[n] f[1],f[2],n<231 题解&#xff1a; 很明显&#xff0c;矩阵快速幂&#xff0c;但是太久没做这种题&#xff0c;我…

使用Http-Repl工具测试ASP.NET Core 2.2中的Web Api项目

今天&#xff0c;Visual Studio中没有内置工具来测试WEB API。使用浏览器&#xff0c;只能测试http GET请求。您需要使用Postman&#xff0c;SoapUI&#xff0c;Fiddler或Swagger等第三方工具来执行WEB API的完整测试。在ASP.NET Core 2.2中&#xff0c;引入了一个名为“http-r…

洛谷P7518:宝石(倍增、可撤销并查集)

解析 算法一 定义 upx,kup_{x,k}upx,k​ 为节点 xxx 从自己的颜色所在位置在返祖链上往后跳 2k2^k2k 个颜色到达的节点。 可以像倍增一样的求解。 这样对于一次询问 (s,t)(s,t)(s,t) 我们就能求出 (s,lca)(s,lca)(s,lca) 这一段能取到哪里了。 对于向下的情况&#xff0c;再处…

E - Counting Cliques HDU - 5952

E - Counting Cliques HDU - 5952 题意&#xff1a; 给你n个点&#xff0c;m个边&#xff0c;还有一个s&#xff0c;问这个图中有多少个等于s的点集可以组成一个完全图 题解&#xff1a; 这题。。直接暴力搜索就行 分析复杂度的时候&#xff0c;应该考虑只有1000条边&#…

Docker最全教程之使用TeamCity来完成内部CI、CD流程(十七)

本篇教程主要讲解基于容器服务搭建TeamCity服务&#xff0c;并且完成内部项目的CI流程配置。教程中也分享了一个简单的CI、CD流程&#xff0c;仅作探讨。不过由于篇幅有限&#xff0c;完整的DevOps&#xff0c;我们后续独立探讨。 为了降低容器的使用门槛以及便于大家将容器技…

2021牛客NOIP提高组第二场T2——方格计数(组合数计数)

方格计数descriptionsolutioncodedescription 在左下角是 (&#x1d7ce;, &#x1d7ce;)&#xff0c;右上角是 (W, H)的网格上&#xff0c;有 (W 1) (H 1) 个格点。 现在要在格点上找 N个不同的点&#xff0c;使得这些点在一条直线上。并且在这条直线上&#xff0c; 相邻…

Acwing 1085. 不要62

Acwing 1085. 不要62 题意&#xff1a; 问[n,m]这些数中有多少数不包含4&#xff0c;且不包含连续的62 题解&#xff1a; 经典数位dp&#xff0c;分析过程以前的数位dp博客有写 Acwing 1082. 数字游戏 代码&#xff1a; #include<bits/stdc.h> #define debug(a,b) …

ybtoj洛谷P4406三角形面积并(扫描线)

解析 暴力求出所有三角形之间的所有交点&#xff0c;提出所有的横坐标。 然后任意两个相邻的横坐标之间的面积都是若干个梯形。 那么就可以求出对于每一个横坐标截得的三角形长度的并的和&#xff0c;然后加在一起乘高除以二即可。 在这里插入代码片#include<bits/stdc.h&…

自动将 NuGet 包的引用方式从 packages.config 升级为 PackageReference

在前段时间我写了一篇迁移 csproj 格式的博客 将 WPF、UWP 以及其他各种类型的旧 csproj 迁移成基于 Microsoft.NET.Sdk 的新 csproj&#xff0c;不过全过程是手工进行的&#xff0c;而且到最后处理 XAML 问题也非常头疼。现在&#xff0c;我们可以利用工具自动地完成这个过程。…

[NowCoder牛客]2021NOIP提高组模拟赛第二场T3——树数树(启发式合并堆)

树数树descriptionsolutioncodedescription 【题目描述】 牛牛有一棵 n 个点的有根树&#xff0c;根为 1。 我们称一个长度为 m 的序列 a 是好的&#xff0c;当且仅当&#xff1a; • ∀&#x1d456;∈(1,&#x1d45a;]∀&#x1d456;∈(1, &#x1d45a;]∀i∈(1,m]&#…

Acwing1086. 恨7不成妻(未解决)

Acwing1086. 恨7不成妻 题意&#xff1a; 问一个区间内与7无关的整数的平方和 与7有关包括&#xff1a; 1.整数中某一位是 7&#xff1b; 2.整数的每一位加起来的和是 7 的整数倍&#xff1b; 3.这个整数是 7 的整数倍。 题解&#xff1a; 数位dp&#xff0c;有点难。。 这…

模板:拓展kmp(Z函数)

所谓拓展kmp&#xff0c;就是拓展的kmp &#xff08;逃&#xff09; 前言 小清新算法&#xff0c;更像一个trick。 exkmp能够在线性复杂度内求出字符串所有后缀与字符串本身的lcp。 个人感觉这个东西和kmp关系不大&#xff0c;反而有些像马拉车的思想。 之前学的东西&#xf…

牛客NOIP2021提高组OI赛前模拟赛第一场T3——与巨(数学)

与巨descriptionsolutioncodedescription 【题目描述】 定义无穷序列f:f11,fnfn−1∗21f:f_11,f_nf_{n-1}*21f:f1​1,fn​fn−1​∗21 定义函数G(x)min⁡fi≥x(fi)G(x)\min_{f_i\ge x}(f_i)G(x)minfi​≥x​(fi​) 定义dpc,00,dpc,imax⁡(dpc,i−1,[((i∗c)&G(i))i]∗i)…

ASP.NET Core 自定义认证方式--请求头认证

Intro最近开始真正的实践了一些网关的东西&#xff0c;最近写几篇文章分享一下我的实践以及遇到的问题。本文主要介绍网关后面的服务如何进行认证。解决思路网关可以做一部分的认证和授权&#xff0c;服务内部有时候也会需要用户的信息&#xff0c;这时该怎么办呢&#xff0c;我…

2016ICPC沈阳站

2016ICPC沈阳站 题号题目知识点难度AThickest Burger贪心签到BRelative atomic mass贪心签到CRecursive sequence矩阵快速幂快铜DWinning an AuctionECounting Cliquesdfs剪枝稳铜快银FSimilar RotationsGDo not pour outHGuessing the Dice RollIThe ElderJQuery on a graphK…

P7516 [省选联考 2021 A/B 卷] 图函数

解析 纯纯的人类智慧题。 关键性质&#xff1a;vvv 可以在计算 f(u,G)f(u,G)f(u,G) 时产生贡献&#xff0c;当且仅当 GGG 中 u,vu,vu,v 之间可以通过 [v,n][v,n][v,n] 的点互相到达。 充分性较为显然&#xff0c;编号更大的点不会比 vvv 先删去&#xff0c;所以必然在 vvv 时…

开发语言大爆炸的时代,究竟谁主沉浮?

开发语言大爆炸的时代&#xff0c;究竟谁主沉浮&#xff1f;当这个系列本来打算是写人物的&#xff0c;而且是写我们身边那些优秀的开发者&#xff0c;然而当第一篇文章&#xff0c;写的是关于我们长沙.NET社区的优秀开发者邹琼俊&#xff0c;发表在博客园之后&#xff0c;有一…

2021牛客NOIP提高组OI赛前模拟赛第一场T2——牛牛和数组操作(区间dp)

牛牛和数组操作descriptionsolutioncodedescription 【题目描述】 有n 2个整数a0, a1, . . . , an, an1&#xff0c; a0 an1 0。你需要做确切地n次操作&#xff0c;每次 操作为以下形式&#xff1a; 选择一个整数x满足ax ≠ 0&#xff0c;使得ax 0&#xff0c;令lmaxi<…