透明思考


Transparent Thoughts


Program? Me?

这也不是新鲜事。这也不是中国特色。从前听的版本有几个:

  • 业务分析师是不会写程序的。(所以Cucumber写出来要像自然语言。)
  • 测试人员是不会写程序的。(所以Selenium要有IDE。)
  • 界面设计人员是不会写程序的。(所以我们还得有个叫“前端程序员”的人用HTML+CSS把图片做成页面。)
  • 项目经理是不会写程序的。(这个,大家都习以为常了…)

现在最新的版本是:系统管理员是不会写程序的,所以PuppetChef要好那么一点点(TWers请看这两天twswdev上的讨论),因为Puppet是声明性的DSL而Chef直接就是Ruby代码。Ruby代码会把笨笨的系统管理员吓倒云云。

扯淡。

所有这些人,只要还在从事软件开发相关的工作,他们都需要描述抽象的概念、把概念分别组织、用合适的词汇使概念描述可懂、关注概念中易变的部分和不变的部分、抽取概念中的共性、消除概念描述的重复。这个,就是编程。你可以逃避它,你可以拒绝学习它,但当你认真对待它,当你把它做好了,这就是编程。那时候你就会发现,Ruby是一种具有强大表现力因此更贴心的编程语言,HTML+CSS是比Photoshop更适合描述界面的语言

重点在于:如果你一直在用一种并非设计用于描述大量复杂抽象信息的表达方式来描述大量复杂抽象信息,你为什么不去学会一种本来就设计用来干这个的工具呢──那就是编程语言;另一方面,如果你并没有在描述大量复杂抽象信息,很可能你的工作可以被一个脚本取代。

毕竟,从前的系统管理员都是Perl和Shell的高手。现在突然说他们不会编程,这个对我来说实在太突兀了。