软件是艺术科学的结合
Jason Gorman对刚刚成立的SEMAT组织有自己的思考,SEMAT是软件工程方法和理论Software Engineering Method and Theory,试图统一目前混乱的软件工程领域。作者认为任何将软件只和工程 "engineering"和"科学"挂钩的说法都是有失偏颇的,作者认为:软件应该是科学和艺术的结合。
原文:Software Is Both Art & Science. Can We Move On Now?
这个观点我相当认可,正是因为对软件开发这个事物基本定位存在争论,所以才诞生各种混乱,而试图统一这种混乱的SEMAT组织如果对这个基本问题都没有定论,相信其权威性是缺乏认同的,虽然都是由一些大牌推动的,最后又成为学术院墙中看上去很美的蜡枪头了。
如果软件是艺术科学结合,那么软件工程专业就不应该只能是理科生报考,也许文理分科是造成国内软件阳痿的罪魁祸首。同时,这些以科学思维强奸软件,并且获得所谓成功地位以后,再反复加深对这种误解,这应该是目前中国软件行业最大的畸形。
为什么我认同软件是艺术和科学结合,原文因为本人水平有限,没有完全理解,但是从个人经验来看,软件很多方面都散发着依赖个人感觉和素质的地方,比如重构中的坏味道,虽然我们可以靠一些工具找出BUG,但是误报漏报还是经常出现,而如果你有深刻设计模式背景,有很强的OO经验,你对坏味道的辨别能力就比别人强,别人闻不到的你可以发现,你甚至可以依靠职业直觉发现一些潜在设计问题。
我们知道软件分析设计是一个创造性工作,而创造性是不可以被科学的,创造性是科学发展的动力,但不属于科学范畴;同样,软件设计是一个追求巧妙设计的过程,大道至简,如何去繁复简呢?需求是那么复杂,如何抽象呢?除了算法数学之道以外,还有一个巧妙之道。
我们经常讲“数学之美”, 而美属于艺术范畴,数学属于科学范畴,最后,数学科学不也是在追求艺术中一种美的极致吗?
软件应该是科学和艺术的结合,它应该是哲学,至少是一种方法论,如果不能从这个角度来认识软件,恐怕就会发生盲人摸象的笑话,做了一辈子软件,居然软件是什么都无法准确定位,这应该是一种耻辱吧。
转贴一句,对于软件开发同样需要:止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得!
相关:
关于设计模式的心里话
[该贴被admin于2010-04-27 09:18修改过]