🗓️ 2025-05-11 🏷️ #杂#

前一个阵子,发现自己使用的书签软件Cubox有泄露隐私的风险,在比较了几个著名的开源软件,没有得到满意结果,我认为自己的需求简单,于是亲自动手写了一个,还是从头写。周末捣鼓一番,做出一个磕磕绊绊半成品,它几乎满足我的核心需求,尽管略显简陋,UI不好看,权限设计不安全,又怎样呢,后续优化嘛。

可是事情的发展超出了预期,随着使用的深入,我对它产生了新的需求,同时又积累出许多issue,而因为工作和生活上的原因,我几乎抽不出时间实现新功能或者优化已有问题,后面直接弃用了。这是自用的软件,第一个也是唯一一个用户都舍弃了,它事实上已陷入死亡。

这是一次失败,我有点沮丧,我本可以避免失败。==在软件生命周期中,最大的成本其实是花在维护阶段==,也就是一直要去适配,迭代维护,而我作为开发人员,居然轻视这一条铁律,乐观地高估所能投入的时间。另外从头写也不是明智选择,在《Linux/Unix设计思想》一书中提到过一个观点——“允许他人使用你的代码来发挥软件杠杆效应”。本来其中一个开源软件很适合我已有的部署环境,仅仅由于UI设计没有匹配,就被我pass,最正确地选择应该是在该软件的基础之上重构界面,充分利用已有代码,发挥杠杆效应,而不是纠结是否自己亲手编写。这样做带来的好处是我的投入变少了,而且其作为基础的开源项目开发较为活跃,我可以持续不断地享受开源作者的工作成果,如果自己力所能及,还能参与进来共同维护反哺,一个人走得艰难,或许一群人可以走的更远。