国民教育,人格分裂,与工程师
编程、工作与生活一样,真正有价值的道理简单而朴素,我们在一开始就已经知道,但从来不去好好遵守它。
这些天一直在看和实践敏捷开发,2005年以后,还没有再看过源代码了,现在又在看,并帮助工程师们提高。这个过程中就发现,工程师们对一些编程基本原则的反应是“太理想化”,“确实应该是那样的,但实际因为种种问题是不可能完全做到的”,这些原则“可能并没有那么重要”……
什么原则呢?比如代码应该有高可读性,比如变量命名应该遵循统一原则(驼峰或下划线),比如应该写充足的注释,比如应该做到逻辑代码与界面的 分离(MVC/MVVM)……为了说服大家,我不得不买上几本经典书,把《代码大全》里面的一段章节翻出来给他们看。
然而,这可能并不能起到立竿见影的效果。人们总是知道道理,却却在实践中大打折扣。
在《程序员修炼之道》的中文序言《程序员心里的小声音》中,指出了这种现象,以编程DRY(Don't repeat youself)原则举例,指出“能不能用正确的原则知道正确的行动本身,其实就是区分是否是高手的一个显著标志”。
我觉得这种现象可以称之为编程界的“人格分裂”,知道什么是正确的但不去做或不好好做。
我们每个人或多或少都有些这方面的分裂。全世界人类或多或少都有这方面的分裂。什么原因?对人来说,知道并不等于懂得,特别是实践欠缺,还没有踩到足够的坑来说明不遵循会产生多少问题。
对我国人来说,国民教育环境也促使了这种分裂。思想品德课本上的道理讲着诚实守信,哲学课本讲着全面和联系的观点,历史课本上却讲着和谐过的抗日战争。国家人格分裂,我们每一个人自然而然也跟着一起分裂了。
有什么好的方法治疗?世界上没有银弹,那么路只有三个:一个是按正确的道理办事;一个等自己踩了足够多的坑后再去领悟,“不到黄河心不死,不见棺材不掉泪”嘛;最后一个是,到了黄河也不死心——彻底没救了。