这几乎是每个做产品、写代码的人都会问自己的问题,尤其是第一回自己搞点东西的时候。所以别担心,你问出这个问题,说明你已经在认真思考了,这是好事。
咱们换个角度想,别把这事儿想得太“技术”。
你就当自己不是在开发系统,而是在开一家餐馆。
过早优化,就像什么呢?
就像你租了个铺面,菜品都还没想好,菜单也没定,更一个客人都没有呢,你就已经开始花大价钱去改造厨房了。你觉得未来的客人肯定会很多,所以你设计的后厨流水线能1分钟出100份菜。你觉得未来的客人对口味要求很高,所以你买的烤箱必须是米其林三星后厨同款。你甚至还考虑到了以后可能要开连锁店,所以现在就开始设计中央厨房的配送体系。
结果呢?你花了三个月,把厨房弄得金碧辉煌、效率惊人。然后你推出第一道菜:番茄炒蛋。结果发现,压根没人来吃。又或者,来的客人说:“你这番茄炒蛋太咸了,我不喜欢。”
这时候,你那个能1分钟出100份菜的流水线,有意义吗?你那个米其林三星的烤箱,发挥作用了吗?完全没有。你花在“优化厨房”上的所有时间、精力和金钱,都浪费了。你本该用这些资源,去菜市场多转转,多炒几道不同的菜,请邻居朋友们尝尝,看看大家到底喜欢吃什么。
回到你的系统上
- 性能优化:这就是你的“高效流水线”。在没人用的时候,你的系统是给1个人用,还是能给10万人用,没有任何区别。你为那“不存在的”99999人做的优化,就是白费功夫。
- 架构优化:这就是你的“中央厨房体系”。在你的小餐馆生意还没影儿的时候,就去规划连锁店的架构,是不是有点太早了?先把眼前这个店做好,让第一个客人满意,比什么都重要。
那什么时候的“优化”不是“过早”?
还是用开餐馆的例子。
- 基本的用户体验不是优化,是及格线。 如果你的厨房,炒一个番茄炒蛋要等半小时,那客人肯定扭头就走了。这不叫“慢”,这叫“根本没法用”。对应到你的系统,如果一个用户点个按钮要转半天圈,慢到他以为死机了,那这不是性能问题,这是bug,是产品不及格,这个必须得改。你得保证第一个用户能顺畅地用下来。
- 安全不是优化,是底线。 你不能说,等客人多了我再给餐馆上锁,我再注意后厨卫生。安全问题是第一天就必须考虑的。
所以,结论是什么?
在没有用户的时候,你唯一的目标,就是验证你的想法。你的系统只是一个工具,用来搞清楚“到底有没有人需要我做的这个东西?”
你应该把99%的精力,放在那些能帮助你找到第一个用户、并让他用起来爽的功能上。代码写得是不是有点乱?架构是不是不够“高大上”?只要功能稳定、体验顺畅,这些都无所谓。等你真的有了100个、1000个用户,他们抱怨说“这里太慢了”、“那个功能总卡住”,那时候你再去优化,你会发现动力十足,而且目标明确,因为你知道你是在为谁解决什么问题。
记住一句话:在没人为你做的菜付费之前,别痴迷于打造一个完美的厨房。 先做出几道能吃的菜,端出去,看看有没有人愿意尝一口,这才是你现在该干的事。