"i = i +1比i++更具有可读性,还有(表达式 ?值1 : 值2)这种语句最好也写成if语句,尽管有些很简单,但是好理解,还有...."
这是早上的讨论会中部长在传达日方提出的要求,公司是做对日软件外包的,干过这一行的人都知道日本人在规约(编码规范)方面要求近乎苛刻,但是像上面这种所谓为了可读性而几乎成笑话的要求,连干过有年头的开发者来说都是第一次听到,就像一个同事偷偷给我说道:“只有掰着脚趾头算不明白的鬼子才能够想到”,还好在大家的强烈抗议下,领导者去与日方交涉,毕竟代码的返工率太高了!
下班回家,在公车站等车时,突然想到曾经看过的一篇文章:孟言的艺术的背后还有纪律——采访印度NIIT CEO有感。虽然自己只是一个普通开发者,但是并未阻挡对业界发展趋势的思考,同时又身处外包领域,所以感受更为深刻。
软件开发确实是一项创造性的工作,这是毋庸置疑的!
但是现在的软件项目并非全部由软件开发所组成,或者说并非全部由软件开发所主宰,它是一个工程,所以在整体上他具有一些工程的类同性。
规模化的生产提高效率的最好方法就是单工种性,福特汽车的流水线就是工业大革命最好的佐证,在公司的职业上有划分,在项目实施上有分配,在开发中有模块,都是体现了以上观点。
现在的企业信息化建设,已不是一两个人就可以搞定,业务的复杂逻辑性使设计人员在前期的抽象和建模期间投入的精力和时间会更多,目的也是为了在后面的开发期间,能使各个业务模块更高密集中,而相互之间又低耦合,化繁为简,有益于过程实行间的管理和项目运行间的控制。
而这么一个庞大的体系,不管每个人能力有多高,纪律是绝对必要的,道理我想也不必多啰嗦。
道理其实就是:艺术背后需要纪律,但是纪律之下也需要艺术的发挥!
其实说到这,好像有点哲学的意味,怎样把握,对人,企业,甚至国家都是很微妙的。
像上面那种无理的要求,其实就是纪律太“严格”,抹杀了软件基本的艺术(这与日本人的思维有一定关系)
在这我不想谈对日还是对欧美好,因为他们都只是看中了我们的廉价。中国的软件必须要自立,所以规模化产业化上现阶段可以考虑印度的一些管理模式,但我本人坚决反对将中国变为第二个印度外包大国。
其实问题就是那么简单,一个企业发展到一定规模就需要管理,但又不能像军队那样过于严格,特别是对于软件开发公司这样特殊的群体,无论从公司的战略角度,还是细微到某个程序,各个层次的管理难度都可以说是很大的,因为角度的不一致(大的划分一个是公司企业角度,一个是开发技术者角度),好的例子例如微软。
关于回复中周星星所认为的印度开发人员水平差,我的观点和猛禽的一篇关于艺术的背后还有纪律的读后感:走自己的软件发展之路 一样,主要是国内的开发人员水平参差不齐,这个与国家的教育思想有很大的关系,可惜现在的大环境太差了。