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


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,一经查实,立即删除!

相关文章

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…

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

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

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

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

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

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

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;有一…

Asp.NETCore轻松学系列阅读指引目录

前言耗时两个多月&#xff0c;坚持写这个入门系列文章&#xff0c;就是想给后来者更好更快的上手体验&#xff0c;这个系列可以说是从入门到进阶&#xff0c;适合没有 .NETCore 编程经验到小白同学&#xff0c;也适合从 .NET Framework 迁移到 .NETCore 的朋友。本系列从安装环…

eShopOnContainers 知多少[9]:Ocelot gateways

引言客户端与微服务的通信问题永远是一个绕不开的问题&#xff0c;对于小型微服务应用&#xff0c;客户端与微服务可以使用直连的方式进行通信&#xff0c;但对于对于大型的微服务应用我们将不得不面对以下问题&#xff1a;如何降低客户端到后台的请求数量&#xff0c;并减少与…

Acwing 1072. 树的最长路径

Acwing 1072. 树的最长路径 题意&#xff1a; 每个边有权值&#xff0c;求树的直径 题解&#xff1a; 两遍dfs可以求&#xff0c;这里用树形dp的方法&#xff0c;我们将1作为根节点来看这棵树 我们可以将点看作是钉子&#xff0c;边就是挂在钉子上的绳子&#xff0c;我们只…

.NET/C# 获取一个正在运行的进程的命令行参数

在自己的进程内部&#xff0c;我们可以通过 Main 函数传入的参数&#xff0c;也可以通过 Environment.GetCommandLineArgs 来获取命令行参数。但是&#xff0c;可以通过什么方式来获取另一个运行着的程序的命令行参数呢&#xff1f;进程内部获取传入参数的方法&#xff0c;可以…

听说,霸都.NET技术社区准备搞线下聚会了?

.NET Core实战项目交流群日常交流嗨&#xff0c;你听说了没有&#xff1f;霸都.NET技术社区准备搞线下聚会了&#xff01;啥时候的事情啊&#xff1f;最近才知道的消息啊&#xff01;那你是从哪里知道的消息呢&#xff1f;.NET Core项目实战交流群&#xff08;637326624&#x…

P4383 [八省联考 2018] 林克卡特树(wqs二分、树形dp)

解析 它还真的不难。 乐。 这题没做出来有些谔谔。 外层wqs二分显而易见&#xff0c;里面不知道为啥我总觉得这个题可以贪心。 然后一直试图在原树直径上下功夫&#xff0c;一筹莫展。 看到题解“dp”两个字这题也就做完了… 就相当于要把一棵树分成若干条无交链&#xff0c;每…

ASP.NET Core中实现单体程序的事件发布/订阅 - LamondLu - 博客园

标题&#xff1a;ASP.NET Core中实现单体程序的事件发布/订阅作者&#xff1a;Lamond Lu地址&#xff1a;https://www.cnblogs.com/lwqlun/p/10468058.html项目源代码&#xff1a;https://github.com/lamondlu/EventHandlerInSingleApplication背景事件发布/订阅是一种非常强大…

Joy of Handcraft Gym - 102822J(线段树或差分)

Joy of Handcraft Gym - 102822J 题意&#xff1a; 每个灯有亮的周期和亮度&#xff0c;问1~m这段时间灯光最亮是多少 题解&#xff1a; 线段树维护区间最大值 根据灯的周期向这段区间加亮度k&#xff0c;然后利用线段树维护区间最大值 但是这样会超时&#xff0c;加个小优…

.NET Core 使用 HttpClient SSL 请求出错的解决办法

问题使用 HTTP Client 请求 HTTPS 的 API 时出现 The certificate cannot be verified up to a trusted certification authority 异常&#xff0c;并且证书已经传入。下面就是问题代码&#xff1a;public class Program{public static void Main(string[] args){var url &quo…

微软4年后重登市值第一,纳德拉如何做到的?

他用4年多时间将微软的市值提高了5000亿美元&#xff0c;超越苹果再次成为全球市值最高的上市公司。译 | 达达萨提亚纳德拉&#xff08;Satya Nadella&#xff09;2014年刚刚执掌微软时&#xff0c;微软当时是一个日渐没落的帝国。但在他领导的4年多时间里&#xff0c;微软百花…

【.NET Core项目实战-统一认证平台】第十五章 网关篇-使用二级缓存提升性能

首先说声抱歉&#xff0c;可能是因为假期综合症&#xff08;其实就是因为懒哈&#xff09;的原因&#xff0c;已经很长时间没更新博客了&#xff0c;现在也调整的差不多了&#xff0c;准备还是以每周1-2篇的进度来更新博客&#xff0c;并完成本项目所有功能。言归正传&#xff…

NET Core微服务之路:简单谈谈对ELK,Splunk,Exceptionless统一日志收集中心的心得体会...

前言日志&#xff0c;一直以来都是开发人员和运维人员最关心的问题。开发人员可通过日志记录来协助问题定位&#xff0c;运维人员可通过日志发现系统隐患&#xff0c;故障等定位问题。如果你的系统中没有日志&#xff0c;就像一个断了线的风筝&#xff0c;你永远不知道它会的落…

.NET Core 中的 Generic Host快速使用指南

本文以自己在工作中学习和使用.net core generic-host 作一个总结。前言在创建的ASPNETCORE项目中&#xff0c;我们可以在Main()中看见&#xff0c;我们通过IWebHostBuild创建了一个IWebHost&#xff0c;而微软提供了WebHost.CreateDefaultBuilder(args)来帮助我们更轻松得创建…