程序员的技术写作之路

我的化名叫何遇,四川人,2017 年本科毕业,毕业至今曾在 3 家互联网公司从事前端开发工作,开发的产品都是 toB 的 SaaS 系统。

自 2020 年起我开始维护自己的微信公众号------前端知识小站,当时的想法是每年做一件不同的事情,以找到自己的兴趣点。我除了写文章,还在B站上传过视频,制作了 3 期之后,没再继续,因为我不喜欢录视频,更喜欢通过文字传递信息。现在我在这里分享我的文字创作的故事,希望能给你带来一些信心。

我的写作最初以前端技术文章为主,2021 年写了一部小说,2021 年 10 月由机械工业出版社的图书编辑邀请写一本技术书,届时已经出版。

入驻博客园

2016 年 6 月 24 日 23:10 (这天是星期五)还是一个大三学生的我,在博客园上发布了有生以来第一篇技术文章------用原生 JS 实现一个轮播(包含全部代码和详细思路),这篇文章花了4个多小时,其中介绍了 CSS 绝对定位,DOM 事件、函数节流、定时器等知识。当时我最感兴趣的事情是把代码写好。

9 天之后,也就是 2016 年 7 月 3 日 15:33 (这天是星期日)我发布了第二篇技术文章------用原生 JS 实现的一个导航下拉菜单,下拉菜单的宽度与浏览器视口的宽度一样(js+html+css),文中介绍了 mouseout 和 mouseover 事件。随后,我开始学习 React、webpack 和 Node.js,并将学到的知识写下来发布到博客园,同时将公司项目中遇到的解决方案也写下来,每个月大概能发 3 篇文章。

除了写前端技术博客,我还创建了第一个开源项目(91 个 star、38 个 fork),在公司内的成绩是成为优秀员工,并获得了晋升。

转战稀土掘金

2019 年中旬从第一家公司离职之后,我开始到掘金上发文章,大多数文章都是介绍公司内部落地的方案,涉及的内容有:git 版本管理规范、组件库、微前端和低代码。在掘金发布的低代码文章,影响了后面的技术写作之路,到了晚些时候我才知道。这个时期的体会是,将外部的知识输出与公司内部的项目相结合,有利于在工作和生活上都获得成绩,成就感会推动人继续向前

反观 2017-2019 年,我在外部的创作和公司内部采用的技术是分离的,公司选用的技术栈是 Vue,而我在社区创作平台输出的是 React,尽管那两年获得的成绩还不错,但是,如果将内外输出相结合能得到更好的成绩,工作与生活割裂感也能减少,更能持续学习,以便升职加薪生活美满。

时间来到 2022 年,参加掘金的金石征文计划让我体会到了写技术文赚钱的快乐,用它大概赚了 1 千块钱,写作压力不大,最重要的是生活和工作没有割裂感,这与写小说期间的情况大不相同,那小说一共有 49 章,超过 10 万字。当然,能将它写完,我感到自豪,由于太在意读者的反馈,我的心被它牵动着,与同事和家人减少了交流。

现在有不少人搞副业,如果副业能和已有的工作结合就完美了。在 2019 年期间,学习理财时听到的一句话------理财是为了让生活更美好,如果它让你每天提心吊胆,那么不如不理财。搞副业也是同样的道理。

拥抱微信公众号

申请微信公众号与注册掘金账号发生在同一时期,而且两个平台发布的技术文章趋于一致,2023 年 10 月之后我在微信公众号新增了一个栏目------随心侃,它用来记录日常感悟。申请微信公众号之后,为了涨粉我读了一本叫做《兴趣变现》的书,作者首先提到发现自己的"甜蜜点"------即兴趣点,其中举了一些案例,或成功,或失败,也介绍了如何持续创作,如何与别的创作者互动,如何从大博主那儿圈粉等等。

持续创作

《兴趣变现》提到的众多方法论,只有持续创作这一点我执行的比较好。找到"甜蜜点"之后,需规划创作节奏,按计划执行。我的发布节奏是每个月在固定的时间发布一篇文章,执行起来没有负担,发布节奏除了涉及发布日,还涉及初稿完成日,校稿完成日,封面图完成日等等。这些日期都是为了抵抗拖延症,确保在发布日当天能正常发布文章。

创作内容

个体创作的第一步是找到自己的"甜蜜点",当时我不知道自己的"甜蜜点",也没有擅长的技术领域,为了保证每月能输出一篇技术文章,决定翻译英语文档。每个月选一个主题,搜索 5 篇以上的文档,翻译成中文,将其消化成自己的内容。我翻译的文章来自 thoughtworks 和 medium 等网站,翻译英语文档只持续了一小段时间,因为要优先写公司内部的技术方案。现在不知道做什么,那就先模仿吧!

运营

运营这方面我做的很不好,几乎没有运营。3 年过去了,前端知识小站一共有 118 篇原创文章,有 455 个粉丝,这些粉丝是自然涨粉。

牵手机械工业出版社

与机械工业出版社合作始于我在掘金上发布的《如何设计低代码平台快速构建页面 | (200+页面)》,2019 年 - 2020 年,我在就职的公司落地了一个低代码平台,投入使用后又将实现过程总结成了一篇文章发在掘金上,机械工业出版社的编辑通过该文与我取得了联系。

建立合作

下面是我和出版社编辑加好友之后的对话:

他:我在掘金上看到您写的关于低代码的文章,所以就冒昧联系您了。

我:那篇文章是我去年在公司落地的一个低代码平台的总结

他:写得挺好的

我:你是做什么工作的?

他:不知您是否有兴趣写本相关的书,给更多读者指导和帮助哈?

此时的我觉得自己没有高学历加成,也没有大厂光环。我是菜狗,没有资格写书,于是发送了下面这一句

我:以我现在的知识水平还不足以写一本书。

他:我是做 IT 图书策划的编辑,您已经有落地实践的经验,再加上理论知识,足以整理成书了。

接着我们沟通了出书的流程,与此同时,我将出版社编辑邀请我出书的事情告诉了好友,他也鼓励我写书,他说:'你可以一边学习一边写'。

从写书的时长来说,这是个好主意,因为写书的周期长。以我自己的经历为例,从开始写作到完成初稿耗时一年半,这么长的时间可以学习很多知识,完全能做到边学边写。

确定好写书之后,又开始思考联系我的人是不是骗子,于是在网上搜索与出版社合作的注意事项,这里最该关注的点是:考察联系人所在的机构是否有申请书号的资质,不要和中间商合作。 同时,我还询问亲戚签合同的注意事项,这里的重点是:签有时间期限的授权协议,著作权授权使用合同,或者出版授权合同,不签著作权转让合同,尤其不要签委托创作协议。


写技术书的第一步,也是最难的一步------写目录,细化到三级目录,通过目录规划图书包含的内容。目录和大纲需要审批,审批通过之后立项,后续是签合同。

写作进行时

写书重在坚持,持之以恒,它是脑力活更是体力活。第一步是定写作节奏。我的计划是每天早晚都写,早上 6 点 20 分起床,9 点以前的时间用于写作,晚上不加班,回家之后到 10 点之前的时间用于写作。

写书的头 1 个月,我心中充满了热情,觉得自己在干一件光宗耀祖的事,早上 6 点 20 分闹钟一响,便掀开被子起床洗漱,然后雄赳赳气昂昂的去上班,我通常是第二个到公司的人。公司楼下的大爷见了我,总会用四川话喊一声,'来那么早!',下午 6 点半下班,大爷见了我又吆喝一声,'你早就该下班了!!!'。随着时间的推移,写书的热情在逐渐减小,早上起床没起初那么顺溜了,接下来 3 个月左右的时间,意志力被不断的摩擦,有些时候犯懒起床晚了,大爷见了我,说:'嘿,今天来得有点儿晚了哈'。之后意志力被摩擦麻木了,早上闹钟没响我就自觉的起床。

写书期间的做法有很大的改进空间:

  1. 把节奏安排的太紧,没给自己留缓冲时间;
  2. 和同行交流太少了,自己埋头苦干;
  3. 把注意力都放在了低代码上,没补充其他知识;
  4. 没有做到有条不紊,有思路的时候可以不吃饭连续写一天,没有思路的时候心情烦躁,像无头苍蝇一样查资料。如果有思路的时候放慢写的节奏,用部分时间思考后续内容,我当时的生活肯定会更加快乐。

改稿

初稿完成后交给出版社编辑进行第一次通读,第二天,他反馈道: "前 4 章基础知识占到了整本书 70% 以上的篇幅,而核心内容占比太少,核心内容一定要讲到位,所占篇幅不能低于 60 %。不然就有些文不对题了。"

第一次改稿,将基础知识从 4 章减少到 1 章,同时增加与低代码相关的内容,最终核心内容占70+%,基础知识占20+%。第二次改稿,继续增加内容,加了一章落地低代码平台需要持有的基础设施。后续是写前言、改前言、定书名、写封面文案,改封面文案等,这些完成之后能空闲一段时间,出版社排好版之后交给作者第一次校对,这是最后一次修改的机会。

成书

最初为了加速重构遗留系统,在公司内落地了低代码,当时的低代码及其简陋,不足为道,但派上了用场,我们只有 5 个前端工程师,在一个季度内,搭建了 200+个页面。回忆起当时的方案,大概存在以下5个问题:

  1. 搭建完成的应用无法独立部署
  2. 无渲染沙箱,当处于编辑态时,画布无纯净的运行环境
  3. 无组件市场,低代码设计器能使用的组件全部写死在项目内
  4. 用来描述低代码应用的Schema无版本管理,无法查看以前保存的版本。
  5. 开发人员无法对搭建完成的应用二次开发。

《低代码平台开发实践:基于React》解决了上述 5 个问题,还涉及业务场景的需求分析,从开发技术层面来讲,读者将了解到下面这5个方面的内容:

1)JSON Schema 保存到 Git 仓库中,它不影响线上运行的低代码应用,只用于 APP 各版本的预览和重新编辑。

2)线上运行的应用与 JSON Schema 脱钩,即便低代码平台停止服务,线上的 APP 依然能正常运行。

3)引入渲染沙箱,设计器和渲染器位于不同的 Frame,此时画布拥有纯净的运行环境。

4)设计组件规范,开发脚手架,其用于开发、调试和上传低代码组件,这使设计器能使用丰富的组件去开发应用,同时让低代码组件和低代码平台解耦。

5)开发低代码平台所需的基础设施,包括 GitLab CI/CD、npm 私有库,LDAP 账号管理系统等。

《低代码平台开发实践:基于React》由 4 大部分组成,其中第 3 部分介绍开发低代码平台涉及的各个方面,这部分难度最大。如果你是一名经验丰富的软件工程师并且对低代码已有了解,建议从第 4 章开始阅读;如果你对低代码了解得不多,请一定从第 1 章的基础理论知识开始学习。

第一部分是基础篇,只包含一章,它介绍后续章节使用的理论知识,涉及的知识点有 React Context API、React Hooks、React Ref、Mobx 和 MongoDB 等,要想在本地电脑运行本图书介绍的低代码平台,你需要在自己电脑上下载 MongoDB。

第二部分为需求分析篇,包含两章,它介绍低代码平台开发的应用要满足哪些需求,同时也介绍低代码平台的功能。

第三部分为实战篇,包含五章,是本图书的重点,介绍如何开发低代码平台,其中展示了大量的代码示例,涉及的内容有低代码架构策略、低代码组件、设计器、渲染器和代码生成器。

第四部分为基础设施篇,只包含一章。低代码平台用于创建应用程序,它本身也是应用程序,值得一提的是,它对研发体系的要求相当高。如果你手上没有一套完善的研发体系,涵盖代码托管、CI/CD、CDN,npm私有库等部分,那么妄谈开发低代码平台。基础设施篇涉及的内容有,如何使用 GitLab CI/CD 建立持续部署 pipeline、如何搭建 npm 私有库,如何搭建 LDAP 账号管理系统等。

《低代码平台开发实践:基于React》提供了 7 个开源项目,全部源文件可以从github.com/react-low-c...下载。

对《低代码平台开发实践:基于React》感兴趣的朋友可在京东购买 item.jd.com/14012127.ht...,也可通过我的微信微信公众号------前端知识小站联系到我。

相关推荐
布列瑟农的星空1 天前
低代码平台实践——代码编辑器
低代码
colorknight1 天前
1.2.3 HuggingFists安装说明-MacOS安装
人工智能·低代码·macos·huggingface·数据科学·ai agent
Kenneth風车3 天前
【机器学习(十)】时间序列案例之月销量预测分析—Holt-Winters算法—Sentosa_DSML社区版
人工智能·低代码·机器学习·数据挖掘·数据分析·时间序列·零代码开发
BPM_宏天低代码5 天前
低代码用户中心:构建高效便捷的用户管理平台
低代码
diygwcom5 天前
低代码可视化-UniApp二维码可视化-代码生成器
低代码·uni-app
勤研科技6 天前
低代码时代的企业信息化:规范与标准化的重要性
低代码
Kenneth風车6 天前
【机器学习(十一)】机器学习分类案例之是否患糖尿病预测—XGBoost分类算法—Sentosa_DSML社区版
人工智能·低代码·机器学习·数据挖掘·数据分析·机器学习分类·xgboost算法
爱跑步的程序员~6 天前
若依框架使用教程
vue.js·低代码·mybatis·springboot
易云码7 天前
JAVA集成工作流实际项目操作参考,springboot,vue,activiti,在线流程绘制,会签,退回,网关,低代码,
安全·低代码·系统安全·设计规范
Kenneth風车7 天前
【机器学习(八)】分类和回归任务-因子分解机(Factorization Machines,FM)算法-Sentosa_DSML社区版
人工智能·低代码·机器学习·分类·数据挖掘·数据分析·回归