过早优化的陷阱!
共 2067字,需浏览 5分钟
·
2021-08-05 08:32
我的专栏叫作「面向人生编程」,一直以来,只做到「编程」,很少讲「人生」。今天灵感突然来了,那就编程的同时讲讲人生。
在软件工程领域,有个词叫做「过早优化」。指的是写代码的过程中,还没完成功能,就开始搞优化,例如写到一半,就去想刚才那个函数换个写法是不是效率更高或者兼容性更好。
举个具体的例子。例如某个老板看到旅行青蛙游戏的小游戏很火,想开发个旅行猫咪的小游戏,找来一个做过大型游戏的程序员进行开发。这位程序员可能一拿到策划案,就开始规划各种资源管理器,配置管理器等等,开始计划扩容等等,以「兼容」后面一些意想不到的功能,防止因为没设计好架构,后面大幅度改动。但事实上,等这个程序员做好这些配置,这类游戏的热度早已过去。即使热度还在,做出来的游戏可能臃肿,比起其他同类游戏毫无优势。
著名的计算机科学家,经典巨著《计算机程序设计的艺术》的作者Donald Knuth说过一句话:「过早优化是万恶之源」(Premature optimization is the root of all evil)
换到我们生活中,也有的人会犯下「过早优化」的毛病。这个词生活化点的近义词是「完美主义」。当然,这里「完美主义」指的是计划上的完美主义,指的是计划不完美就不敢开始行动,并不是指一个人工作过程精益求精,在生活中过早优化有两个缺点:
踌躇不前。害怕过程不完美,从而不敢开始,结果什么都没做成。 自我怀疑。即使做了完美的计划,开始行动后会发现计划赶不上变化,于是开始自我怀疑,陷入失败的循环。
我2014年开始健身,到现在坚持7年了。和我一起开始健身的小伙伴,很多中途没坚持下去了。据我观察,多数人开始健身,是这样的:
办个健身卡,买好运动装备,鞋子衣服运动裤腰带手套,走入健身房。 练几下,感觉肌肉充血,信心满满的自拍。 坚持了几天,感觉动力不足,不去了,健身卡从此吃灰。
而我开始健身的途径是这样的:
徒手俯卧撑,深蹲,用公园里的单杠练背。 去淘宝买负重沙袋,负重做无器械锻炼。 练了两个月,已经适应了沙袋的重量,开始办健身卡走进健身房,使用大重量锻炼。 记录每次训练重量,计划下次训练要加重量。
类似的,有的人下定决心看书,就给自己买最贵的电子阅读器,以为这样能倒逼自己学习。其实这样并没有用。我买电子阅读器前,我在手机已经读了200多个小时,我需要电子阅读器,并不是我没有电子阅读器我就不能读书,我依然可以在手机读书,只是在手机读久了,眼睛视力有点下降,才开始考虑电子阅读器。
可以看到,开始做一个事情时,并不一定要万事俱备。锻炼需要走进健身房吗?不一定,你每天原地深蹲,也是一个开始,不完美的开始但一直坚持,总比半途而废好。同理,写一篇好文章需要等灵感吗?也不需要,你需要的是按照主题,收集材料,在这个过程中,灵感自然会出现。灵感不是等出来的,是干出来的。当然,我能理解灵感出现后立马提笔写字的快感,我也偶尔有过(例如这篇),但更多的时候,我是提笔后写了一段才有灵感的。
况且,万事俱备的一个坏处,就是你一下子摸得太清,你反而失去了沿途发现新奇事的乐趣。就好像一个电影,你还没开始看就被剧透完了,等你再进去电影院看,就失去了很多的乐趣。
但我们说不要过早优化,并不是从不优化,而是让优化伴随整个软件生命周期;在软件领域,又有一个词,叫做 「屎山」 ,指的是代码因为长期缺乏维护和优化,变得难以阅读,难以修改,甚至稍微一改动就会奔溃。人生也是这样,长期缺乏规划,也会让我们人生变成「屎山」。例如有的人每天得过且过,陷入职场困境;或者从不管理花销,从而陷入财务困境。
换到人生来说,不是说不做任何计划,而是不要做那种大而全的计划。你可以有很远大的理想,但你不能规划好每一步再行动,你需要的是,迅速制定最小可行计划,马上行动,根据遇到的情况去调整计划,毕竟「绝知此事要躬行」。就好像你开车去某个地方,你并无法通过计划方向盘怎么摆动来到达那个地方,你只能根据实际路况操纵方向盘。
在《精益创业》一书中,有一个词叫做MVP(Minimum Viable Product,最小化可行产品)。通过低成本试验,找到合适的路。如果我们的人生是一场或多场创业,那么我们也可以通过找到MVP,来打磨产品——更好的自己。例如通过无器械健身,确定自己热爱运动,再去办健身卡;通过在电脑机房写代码,确定自己热爱编程,再去配自己的工作站;通过去不同类型的公司实习,确定自己热爱的工作,再去择业。
记住,过早优化是万恶之源,无论是编程,还是人生。