一些人认为,掌握一门计算机语言,会编写几行代码并且能让这些代码在计算机上运行起来的人,就可以称之为程序员,事实上,软件行业里,要成为真正意义上的程序员,对得起programer这个称号,还是要花费一番功夫的。
在称为程序员的路上,要经历四个坎坷,我们可以用四个境界来标明他们。
第一境界:知器
就是掌握一门或者几门编程语言,会模仿例子来实现程序代码,并且让代码在计算机系统中成功运行起来。达到这个境界的人还不能算是真正意义上的程序员,而仅仅是掌握了一种或者几种工具的工匠,他们中熟练者能够快速现成的例子,以实现自己或者用户需要的软件模块。第一境界的特质是对语言工具的掌握,在这个境界的高手,会强调自己对语言如何熟练,因此这个境界可以称之为“知器”。
第二境界:格物
在这个境界里,我们要学的是分解问题和推理的技巧,学会用逻辑的语言来精确的表达一个命题。此时,软件工作者掌握的是一种分析具体事物的方法,他们不再一味的模仿,而是开始对一个有一个具体问题进行思考并称是用自己的方法来更好的解决。
在这个层次里的“程序员”开始关注解决问题的思路,并关注分析和推理的数学技巧,他们中的优秀者熟知各种算法善用各种各样的命题推理来分析并解决问题。他们同样善于借鉴前人的例子,但是在这个层次里的人,对语言工具的认识比第一境界更加深刻,他们是真正知道如何利用手中语言工具的特点更好的解决问题的人。但是他们并不会强调自己对于语言如何熟悉,也不热衷于宣扬掌握如何如何多的语言,在他们眼里,语言仅仅是一种工具而已,真正重要的是分析问题的方法。
第二境界的特质是对具体问题的分析,在这个境界的高手,往往善于从具体问题中分析出合理有效的解决方法。因此这个境界可以称之为“格物”。
第三境界:明理
在这个境界中,我们要学习的是抽象思维和找出事物表象后面的规律。此时,软件工作者不在对一件一件具体的事物来分析,而是尝试理解事物表象下的本质,在这个层次里的人,开始关注植物的共性,并且逐渐掌握归纳和总结的方法。“模式”开始出现在他们的头脑里。
第三境界的特质是对事物本质规律的认识,在这个境界的高手,往往能够快速的抽象出问题的本质,从而用最适合的方法来解决问题。这个境界,我们称之为“明理”。
达到第三境界的人是天生的设计师,他们对问题本质的领悟能力帮助他们用简洁的代码来解决问题,他们的代码中充满设计思想。他们是真正能够享受到程序设计艺术魅力并且充满成就感的一群人。
第四境界:成道
第三境界中的极优秀者,他们并不满足于专家的地位和高薪,他们开始向第四境界艰难的前进。第四境界是程序设计领域的最高境界,要达到这个境界,只需要掌握一样东西,然而这个东西并不是寻常之物,而是许多人穷尽一生也无法得到的,这个世界最为深邃的秘密。
这种东西,叫做“道”!
静寂虚无中有奥秘,不静不动,乃程序之源,无以明之,故曰:程序设计之道。若道至大,则操作系统至大;若操作系统至大,编译程序亦然;若编译程序至大,应用程序亦复如是。是以用者大悦,世之和谐存焉。 ——杰弗瑞.詹姆士
对第四种境界的程序员来说,“思想”已经不再是很重要的东西,因为他们对程序本质的理解已经超越问题的本身,在他们的代码里,有的只是自然,现实和虚幻的边界已经模糊,一个完美自治的系统再刹那间诞生,却仿佛从亘古时刻起便存在着、运动着,从简单而质朴的规律总蕴涵着世间万物的本质。因此,这个境界,我称之为“成道”!