Reg Braithwaite先生曾在 文章里谈到如何选择在项目中使用什么样的技术、工具或编程语言。程序员在做这些决定时必须考虑环境背景:我们将和谁一起工作,我们将要做什么,为什么会选择这样的技术路线。
而我优先考虑的不是当前项目,也不是将和我一起开发的这些人。我优先考虑的是将来的那些我未曾谋面的程序员,那些将会研究我的代码的程序员。
我希望他们不但能修改我的代码或增添功能,而且能从其中学到一些东西,就像是我从现在读到的代码中学到的。
这是一个难以捉摸、很难实现的目标。通过代码传教,你需要把读者带回到当时的环境。如果你使用很老的技术,这反而会带来麻烦。我们必须考虑到所处的编程文化,这是难点。对此我没有建议提供,按你们认为正确的方法做吧。
重要的是你要有愿望去传教,去分享你的知识。如果你可以使用函数式的Javascript技术来条理化你的逻辑,你就有责任这样做。如果你看到一个方法能把一个复杂的Ruby方法变成一个简单算法和数据结构,那么你就一定要这么做。这样做并不是简单的代码更整洁了,更是因为你能让将来的程序员变成一个更好的程序员。
因为这些,我认为,作为程序员关键的一点就是去扩展我们的视野。学习函数式编程,学习各种语言,学习陈述式编程,学习微控制器和界面交互,学习从未听说的所有东西,用编程来教育自己。