算法开发与绘画
art [OED] n. Skill; its display or application.
采用经典的自顶向下、逐步细化的编程策略,既助于构建全面、周全的顶层思考与设计方案,也不至于被一下子涌上来的大量底层细节所干扰。类似于“过早的优化即是万恶之源”,过早地同时兼顾宏观与微观,就容易失去耐心与平静,从而在整体设计上出现严重疏漏和缺陷,底层实现也难以做到牢固可靠。
这样看来,软件工程与绘画、雕塑之类的艺术活动异曲同工。后者在起草前要成竹于胸,这相当于前者的软件架构、基本数据结构、算法流程的设计。后者动笔时,也都是先从轮廓与大致形状开始,而不是一上来就一味追求逼真而在细节线条的勾勒上反复涂改。在后续具体创作工作的铺展推进中,则是秉持一贯的设计思想与艺术风格,在较为宽松的状态下把握作品的大致走向,为技艺的发挥与施展提供相对自由的空间。
“行百里者半九十”,但以我目前的开发状态来看,这个说法似乎应改为“行百里者半九十九”更为贴切。因为,不止一次出现了在临近阶段性目标达成时出现棘手问题、大大拖延了项目进度的情况。此时,越是困难重重,越是时间紧迫,就越要保持冷静与耐心。摒弃自满、急躁、渴望速成的心态,清空大脑。不满足于网上搜到的临时性解决方法,亦不满足于文献中捕风捉影的说法。将眼前的一切视作重新开始,以初学者的姿态虚心地系统学习新理论、新技术。
我要有这种多次从零开始的勇气。其实每一次的“重启人生”都会令我感到些许不同:那是因为获得了新的知识,或是思维水平提升到了一个新的层次,或是收获了新的做事方法与经验。也许这样的过程会无限迭代下去,像是通向完美的无穷无尽的天梯。然而,这是我自己做出的选择,并由此构成我的人生历程与命运。这样的想法,让我的心变得更加平静、踏实、坚定了。