经过五一至今的7天测试、Bug修复、优化,整个收尾过程在今天宣告结束,也终于可以将3个仓库打上v1.0.0的tag,正式发布。

看着无论web、移动端,还是管理后台,其UI、UE和功能、性能都甚是满意,远远超出6年前的第一版,甚至年初立项时的预期。那种兴奋、满足、成就感是从业以来从未有过的,它见证了整整3个月的007通宵,见证了痛苦、煎熬的自学过程,见证了无数个山穷水尽的无助、绝望,又柳暗花明、喜出望外的瞬间,见证了最后丰收的喜悦。

或许,它是对自己过去十数年工作经验的一次综合性考验,代表了自己真正的能力。从1月30日凌晨5:59提交第一行代码,到4月30日发布上线,历时整整3个月;而在1月中旬决定开始进行重写时,除了一腔热血和期待,对过程中充满的未知、挑战却仍然是混沌状态,甚至在经历两年的“空档期”之后,对于自己能否胜任这项任务尚且还是未知数,对最终能否实现预期的效果仍然将信将疑——毕竟,一切都从零开始,一切都是摸着石头过河。

而实际证明,难度远超想象——除了方案的缺乏、国内实践者寥寥,甚至连文档都难觅踪影,尤其中文文档更是凤毛麟角,只能通过Google发挥自己有限的英语储备搜索英文资料。每每看着打开的几十个浏览器标签页,头皮都发麻——对于有些许强迫症的自己来说,这无异于一次次心理的考验。而要在几十个英文页面中快速寻找、定位自己想要的,也着实考验自己的搜索、阅读、理解能力,和知识储备。

……

一切的一切,最终还是坚持并一个个攻克了。这大概就是跳出舒适圈并习得新技能、获得满满的收获之后的状态——很庆幸,当时做了那些选择,并快速执行、落地了。这其中,最大的感慨莫过于对时间的认知——做正确的事情,无论多么微小,在不久后的某一天终将迎来花开时的芬芳。

回首整个过程,面对未知、焦虑、繁杂,大致有以下几点体会……

一、循序渐进

算法中有一种称之为“分治法”,即汉语中的“分而治之”。从0到1固然很痛苦,就像从茧到蛾,但可以在过程中加入若干个过渡,每一次的变化都是微小、可控的,而在有限的几个“分步骤”之后,却可以引起“质变”,达到预期的目标。

例如,Nest.js对于自己是崭新的领域,要一次性实现“完美”的方案,无论时间、精力,还是效率、效果,都不现实。只能先从最初的版本中移植过来,进行Nest.js改造,之后再考虑去除原先的方式,进行优化、升级。过程中,对问题的排查、对效果的观察、对学习的深入都是极有帮助的,避免无尽的焦虑和恐惧。

且,渐进式的方式会在过程中逐渐累积成就感,从而有不断的动力坚持下去。

透过这种增量式的开发、学习过程,输出代码的同时,也掌握了Nest.js和底层的思想,可谓是效率最高的一种方式。

实际上,这也说明了前期积累的重要性,没有迈出0的那一步,无论为何都到不了1——就像如果没有当初的ifuyun.com第一版,便也不可能有第二版、第三版……

想要彩票中奖,第一步永远是先去把彩票买了,而不是做白日梦;想要登上山顶,也首先要迈开双腿、走出家门,且有足够的身体、生理条件支撑……

二、正确的工具和思维方式

要说工具,受益最多的非WebStorm莫属,同时结合思维方式和习惯,效率大大提升了n个数量级。尤其在缺乏文档的情况下,几乎都是靠查看源代码和接口定义解决问题的——这远比搜索引擎靠谱,甚至比官方文档更权威。

所谓“工欲善其事,必先利其器”,就是这个道理。

实际上,查看源代码并没有想象中那么困难——在心态上,这是首先要摆正的观念。

其他包括快捷键、命令行,一些hack技术等等。

三、临危不乱

无论是否事前有计划,临危不乱都是遇事时应有的基本的心态。

两件事情印象深刻,一件是初次当父亲时,产房外当医生将婴儿交给自己后,推着婴儿车回病房的走廊里,内心异常平静地看着眼前的小家伙,并没有激动地无以言表或喜出望外,而是平静地接受眼前的现实,考虑接下来的产后事宜。另一件是在走宋城的水上吊桥时,也是很冷静地一步步往前移,心跳既没有加速,也没有顾虑四周众多的观众。那种近乎能听到心跳、呼吸的状态,在事中、事后看来都是一种享受。

这些波折经历后,才会发觉,在生命的长河中,它们都不过是一些小涟漪,与其恐慌、退缩,不如沉着面对,如此,也可以避免恶性循环——就像那个始于错过闹钟的糟糕的一天。

心态决定一切,诗曰:本来无一物,何处惹尘埃。

四、享受孤独

有书说“孤独是一种修行”。人生路上,能一直陪伴自己走下去的,只有自己,这是人生必修的课程,无法逃避。

纷扰的世界,能静下心做点事,实属不易。在教娃过程中,要锻炼其耐性、久坐、专注,对于成年人,何尝不是如此?甚至更为需要、紧迫。

多少干扰、诱惑?又能抵抗、坚持几何?

实验告诉我们,抵抗诱惑的过程会消耗意志力,但,这何尝不是对意志力本身的一种锻炼?

俗话说,板凳要坐十年冷,何况数小时、数日、数月的短暂“修行”?

母亲说,她坐不住。虽然可以理解,但既觉可惜,也不免感慨。当年的那个居家挑战,网络发达了,估计能完成的人更少了。缺乏自娱自乐、独处的能力,便变得需要外界的刺激,需要外界的依赖,从而成为彻底的“社会人”。

自己始终很好奇,这,很难吗?而自己的梦想,恰恰是无穷尽的时间,去享受阅读、学习、娱乐的乐趣——哪怕,能无忧无虑写写代码,也是极好的。

因此,在学习的路上,既不求于人,更不受困于人。有双手、有双眼、有思想,足矣。

五、压力管理

玩笑说:把“压力(鸭梨)”放到冰箱,就变成“动力(冻梨)”了,此话不假。没有压力,就是咸鱼;但压力过大,超过“弹性形变”,也会压垮一个人。

有外界的刺激固然是好事,但更多时候需要的是自律,自己给自己压力,是为“自驱”——这也是前文所说的“跳出舒适圈”的本质。那句话说得好,不是自己革命自己,就是自己被别人革命(有条件的,也许可以自己革命别人)。因此,“终生学习”也成了必修课。并不是爬到了山顶,就宣告结束,等待自己的还有下一座山峰。

最美的风景永远在路上……但找风景的同时,也记得欣赏风景……

六、时间的魔力

小学语文课本上有句话叫“不以善小而不为”,在时间的利用上也同样如此,无论多么不起眼、琐碎的小事,只要是“正确”的,都值得付出。而在“量变引起质变”的实践上,也莫过于“时间”了——长久的坚持,当初不以为意、无法察觉的“举手之劳”最终却聚沙成塔,成为可观的令自己惊讶的“蜕变”。阅读如此,背单词如此,写作也是如此……没有什么“意外的收获”,有的只有执着地付出和坚持。

庞大的系统,背后都是一行行代码敲出来的;流利的英语阅读,背后都是一个个单词背出来的;良好的文笔、措辞,背后都是日积月累的阅读、背诵、写作获得的。“读书破万卷,下笔如有神”,简单、朴素的道理。

同样,肥胖、慵懒,也是“冰冻三尺,非一日之寒”,日常多吃一口、少走一步,最终都化成了脂肪。

教员的一篇课文中引用的一句“流水不腐,户枢不蠹”印象深刻。无论身体、大脑,保持“运动”起来,才能“常用常新”,也才能在时间面前不成为其奴隶,而成为成就的载体。

新近一年,一些“意外”的收获印象深刻。

每天教娃时间久了,粉笔字变好看了,围棋学会了,古诗词背得更多了……

与其说是在教娃,不如说是和娃共同成长。

这就是时间的魔力……