项目沉思录 1

从我大学开始到现在,做过这么多项目,现在回想一下,发现走了很多弯路。当时的情况可以说不是很好,自己水平菜,生活条件不好,网上的学习资料也不多,但更多的是策略上的问题。因此我打算记录下来这些东西,时刻提醒自己,过去的事情没办法挽回了,以后一定要避免这些错误。

(1)及时止损:当一个项目走下坡路的时候,立即搁置它(只改BUG不增加功能),迅速转移到类似项目。

2013 年年末,由于贴吧人气在慢慢下降,我搞得贴吧辅助就没什么人用了。我迅速把它们开源,然后开始了编程教程整理

(2)薪尽火传:一个项目彻底完蛋之后,总结可以复用的技术和经验教训,立即投入到新的项目中。

这点我做的不好,因为贴吧辅助和游戏辅助是极为相似的,贴吧辅助项目彻底停止之后,我没有去做任何一个游戏辅助项目,直到 2018 年才开始做。

(3)道德突破:丢掉一切道德和情绪包袱。

ApacheCN 开始搞宣传的时候是通过邮件,那个时候核心成员有各种各样的道德包袱,导致这个宣传计划没有按预期进行。当时我还没当回事,后面的另一个计划失败,然后我就彻底清理核心成员,重建核心团队。

现在虽然 ApacheCN 是 Github 全球百大开源组织,但错过的东西就永远回不来了。

(4)当一个项目推进不下去的时候,一定有可以优化的点,可能是自动化,流程重排,或者外包。

刚开始整理编程教程的时候,我完全是手动,非常慢,一天也就整理一部。后来用上了爬虫,一天可以爬一个站点的所有教程,一年可以整理和入库几个 G。

(5)做一个项目的时候,只给自己一次机会,假设以后再也没机会做相同事情了。

我读研的时候有很多时间,但不知道为啥都浪费了,现在没有时间,但感觉要做的东西基本都有条件在那个时候做完,然后现在可以干点更高级的事情,真是遗憾。

(6)先完成再完善:先把每个模块做一点,完成一个可以独立运行和给人用的产品。不要一上来就打磨单个模块。

ApacheCN 的翻译项目一般要经过四个步骤:机翻->格式校对->众包校对->复核。之前都是串行的,效率很慢,一年刚完成五部你能信?后来策略改成了机翻后直接发版,所有待翻译列表都机翻完了才走下一步,然后不到半年就都机翻完毕了。而且机翻水平就是英语六级,起码还是能看的。

(7)最小依赖:如果一个技能不可或缺,可以暂时外包,但以后必须自己学会。

典型的例子就是 CDNDrive,原作者不维护了我们接着做,现在用它把编程教程和漫画备份了 20 多个副本。

(8)啃硬骨头:如果一个东西不可或缺但是会的人少,一定要把它啃下来,以后很可能用到。

我在做贴吧辅助期间也搞搞逆向,不过自然是没怎么用心。结果读研的时候我们实验室接工业软件逆向的项目,我还要花时间再去学。

刷题也是一样,不要等面试之前再去准备,平时就要多练习。