Published on

我的开发小记

预计阅读时长:9分钟
Authors
  • avatar
    Name
    Roitium

前前言

最终标题还是改为了 我的开发小记,哎,我是真没写作天赋

前言

本来是要写技术选型的,结果写着写着发现跑偏了... 越写越向 pds 靠拢... 干脆直接换标题重新来过,这次就写这个!

写完之后补:我觉得这篇文章应该改名为 我的开发实记 🥲,人疯了,为啥总是偏题啊!?!?队友呢队友呢救一下啊😭👊

介绍

PDS,Project-Driven Study,简而言之,就是通过完成一个项目来学习技术。这种方法对我非常管用。

我这种人完全啃不动各种官方文档,一看就犯困,思维开始到处跳跃,一句话能盯着读半天但就是读不懂什么意思(郑重声明:我不是智力障碍我只是单纯的读不下去😡👊),所以那种系统的学习方法对我完全无效。

但我这人又总是有各种奇奇怪怪的 idea,总是手贱想实践各种东西,那怎么办?只能硬着头皮冲口阿!

准备过程

我通常会先根据脑内的 idea 分析出若干条可以实现的最小目标(这点要求你有基础的技术观念,明白某些东西的复杂度,基本实现思路,才好分析,不然什么都不明白,只会导致后续开发一团乱麻),然后根据优先级排列出来。

接着就要进行技术栈选型,其实对个人小(玩具)项目来说,完全达不到大部分语言的性能瓶颈(python:什么?在说我的事情?)所以大可以根据自己希望学习的技术来选择。

比如,YoshinoGal 就采用了 go+nextjs 的技术栈,虽然看起来有点愚蠢,毕竟本身就是一个单机应用,还分前后端就有点多余了(当时在做选型时看到 reddit 上有人发帖问 给我整笑嘻了)但我的目标就是通过这个项目学习 go 和 react,所以这种选择也没什么(我好像在说废话)

接着就要回到上面列出的目标上,根据自己已有的经验思考每个目标可能的实现思路,并巧用搜索(eg. 如果要实现前后端通信,那我自然会想到 rpc 和 restful api,紧接着我就会以这两个为关键词搜索对应语言下的库以及一些评论,这时候,我可能心里已经有想法要用哪个框架了),但搜索出来的各种文档、最佳实践我不会立刻阅读,而是先丢进 cubox 中,等到真正开发时再说。

以上说的这些,都是在碎片时间中完成的。下面,才正式进入开发阶段。

题外话:我是如何记录这些东西的?

我通常会在 Obsidian 里专门建一个文件夹来记录这个项目的各种细节。

比如,在 ExtraBrain 项目中(你可以简单理解为 memai 的复刻版),我调查了多个竞品的优势以及不足,记录了这个项目的开发理念,基础交互流程,需要解决的痛点等等,然后基于这些开始细化目标,进一步完成其他流程。

在开发中遇到一些问题、一些想法、某个东西的实现思路也经常会随手记下来,后期翻阅回忆感觉很有意思。

我给这套流程起了个挺酷的名字,oneman company(一人公司),hhhh。(这也太中二了吧啊喂!

正式开发

翻阅黄历,找到一个吉利的日子,挑选一整块时间,烧两柱香,打开最顺手的 ide 新建项目,带上耳机,开始正式的开发之旅!

打开 cubox,开始阅读之前保存下来的各种内容。先花上十分钟左右了解一下这个语言的基本语法(rust 除外,这门语言是唯一需要你完全静下心来单独啃的语言,而不能在项目中学习),然后就可以开始了。

CAUTION

(至少在我看来)对于新语言,不需要一次了解全部内置库的用法以及各类语法糖,确保基础的语法会用即可,不然会加重学习负担,甚至导致放弃掉这个项目(对我来说这并不少见)

接下来,就可以一边查看相关文档一边愉快写代码了!我还会尝试在 github 上搜一搜采用同种技术栈,并且代码量较少的仓库,这种仓库简直是迅速了解一种技术栈的不二之选!(前提是他的代码写的不错)

在边学边写的过程中,可能会随时了解到语言更好的特性、更优的实现、更甜的语法糖等等,所以及时的重构必不可少。我并不推荐在完成项目后再进行重构,而是随心情~学到了一点新东西,难道不渴望使用一下嘛?(不过,我感觉我所说的并不是传统意义上的重构,而是重新实现,不过意思到了就好~)把自己的代码写的更简洁优雅,也是一种享受!

我经常会在开发时不断细化目标,并根据实现难度调低一些目标的优先级,毕竟我的目标是尽快发布第一个版本(最小可用),来给予我足够的正反馈让这个项目进行下去,不然很可能就半途而废了...(经常干这种事情,烂尾的项目太多了)

在 v 0.0.1 发布后,就可以大胆地往 roadmap 里塞各种东西了!不管东西实现了多少,大饼先画起来!

接下来就是较稳定的迭代,似乎没啥好说的了(不过我这人有点奇怪,一旦没啥人给予我正反馈,我就不想干了,直到突然有一天突然起了兴趣,疯狂迭代一阵子,然后兴趣又没了,就这样循环...)

最后...

到这里差不多就写完了,回头一读发现全是废话哈哈哈哈,不过我写得开心就好捏😋