谈谈编程中的完美主义和取舍

不论是在生活还是在工作中,常常在需要完成某件事情的时候,出于完美主义的情结,会想方设法的让自己陷入一种无限羁绊的尴尬境地。这时,也许是时候对自己目前所做的工作去做更深层次的思考,进而对外在的形式有所取舍,才能达到内心想要达到的真正目的。

就拿编程这件事情来说,很久以前,我很爱做的一件事情就是重复造轮子。相信每一个程序员都会有过这样的经历,好比要实现一个功能,明明前人有现成的方案可以参考,却偏偏要自己从头再重构一遍。我分析总结了一下,出现这种情况的无非有四种原因:
0.完全不知道有现成的实现(这种不做讨论所以忽略)
1.想要更深入的学习和掌握自己所要实现的功能
2.觉得现有的实现不够牛逼,必须自己重构才能超越
3.代码风格上有洁癖,存在完美主义

对于前三种,都无可厚非,因为是带有明确的目的在重构,所以不在讨论范畴之中。这里只想谈谈这最后一种,无理由的强迫自己重复劳动。

在正式踏入社会开始工作以前,我所参加的软件类型的项目,大部分都是自己发起自己完成,或是绝大部分由自己主导,带领团队开发完成,在这个过程中,出于对项目本身的考虑,会事先给自己定下很多规则,比如用什么语言,用什么模式,算法如何构建,如何通信,如何重载,会考虑很多实现过程当中的细节,甚至细到每个函数的命名。现在想想,那个时候还真是too young。如果不是后来去了某运营商实习,我永远也不会理解在一个团队当中,一个git/svn以及一些bug和工单管理系统的重要性(主要是协同作用)。在软件工程已经逐渐趋于成熟的今天,每天都有无数的系统被设计和实现,每天都有无限的需求得到解决,每个成熟的程序员其实某种意义上来说本身就构成了软件工程这个庞大系统中的一个组件,系统所需要的,只是在关键的时刻将你调用,去fix or debug某个功能,或是去create or new某个新的对象,个体左右不了全局,类似曾经Linus那样,以一人之力实现一个操作系统原型的程序员,早已经不再有可能,原因多种多样,或是囿于水平不够,或是囿于早已无法完全掌控现代操作系统的全部架构。但是这里又涉及到一个群体智慧和个体智慧的问题,因为不在题意当中,暂且按下不表。

为什么要提到上面这些呢,其实是想劝慰自己,在对待技术的时候,需要有所取舍,就普通人而言,无论是谁,穷此一生恐怕也无法阅尽操作系统的所有源码,更别说还有众多凌驾于系统之上的应用层协议、分布式、数据存储等等各种所谓解决方案,因此我认为,一个聪明的程序员,他应该做的,就是让自己成熟,让自己成为一个高明的工匠,需求是什么,系统需要什么,就去提出最快速和稳定的方案,然后实现它。而不再是纠结于开发过程,以及过程当中的细节,因为这些过程和细节,早已有更聪明的人去设计和规划好,聪明的“码农”应该做的,就是利用这个框架和模式,去最大化和最妥当的实现当下手头的工作,不浪费自己的生命,亦不浪费他人的生命。想必这就是所谓“敏捷开发”的意义。此外,最需要保留的,还有快速的学习能力,作为技术工作者,需要随时保持着高效的学习能力,在接触一种新的技术之后,能够快速的将其掌握并赋予实践应用,粗略的估算,学习的速度起码要高于摩尔定律之于硬件更新换代的速度,才不之于在十年之内落伍。否则,你可以想象一下一个十年前从事asp和access模式开发的程序员,如果在这十年间没有学习,那他的技能在今天该是有多么的落后!当然你可以说,十年前的程序员,大多如今都已晋升管理层,或是早已在技术的发展当中获得了更多的红利,实现了财富自由,可是你是否想过,十年间信息技术的发展又带来了这个行业多大程度上的饱和?我们不应过于乐观的假想自己的未来,仿佛从一线程序员->技术主管->架构师->技术高管是理所当然,但是实际上,从普通程序员往上,每一层之间都有着很深的技术沟壑。如果身处一种对技术和代码本身的羁绊当中,后果无比的可怕。如果处于一种盲目的自信,那就更加危险。

所以说到取舍,就是我们应该舍弃对于技术外在的追求,而取对技术本源的探寻。正如金庸武侠小说当中所提武功的剑宗和气宗,剑宗十年一小成,气宗三十年一小成,虽各有各的好处,也各有各的弊端。但若想一辈子都能享受武学修炼的乐趣,那还是应当修行气宗。说白了,就是作为程序员,无论你是从事.Net,Java,C/C++,Python,Ruby,Perl,Javascript甚至HTML\CSS还是正在使用世界上最好的语言php,你要做的都不是把这门语言玩出花来,对于语言,要做到的仅仅是熟练和稳定,漂亮的把活干了,代码没有故障,留下足够多的注释和接口,方便后人阅读和使用,这就够了,我们主要的精力应该放在对内核,对硬件,对寄存器的理解,对计算机底层的摸索和探寻,乃至从世间万物中得到指引,从而参透大千世界所蕴含的无限哲理。基于这些理解,再去把握事物的本源,方可在以后的生活中天马行空,犹入幻境。而参透机理的程序员,便也能够天人合一,道法自然,所出之代码,自能仙风道骨,妙不可言。

当然,关于笔者自己,还是没有开悟到这一层,但是想来凡事都有着一万小时定律,只要投入了时间和精力,对所学之事抱有热情,相信假以时日,必能在追求计算机技术的道路上走的更高更远,同时在探索技术的道路中,内心也会更加充盈和富足。保持持之以恒的决心和科学的方法,一定能够在超越自我的过程中有所突破。

浅析操作系统函数调用原理-附实例 节日送什么礼物给妹纸比较文艺
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×