很多年前读过一个意林,说有一个外国景观设计师(一般都默认美国。。)设计了一个公园,在公园施工即将完成时候仍然没有确定道路的设计,此时他灵机一动,让人先撒满草籽。公园开放后游人自由地行走,走得多的地方草不生长,自然形成了道路,后来人们对这个道路设计赞不绝口。
跟很多作文题材一样,这个文章被反鸡汤了,实际上景观设计有复杂而久经考验的道路设计方法,而且一个公园的建设是合同制,事前没设计好是违约,对这个设计师是不利的。
最近在推进个人小项目时候,我为了减少自发盲目的风险了解学习一些常用软件的设计思想、架构,一方面倒真是书到用时方恨少,发现了很多平时没注意过的重要问题;另一方面想起这个小故事,有没有避免一开始就高度结构化的设计思路,特别是先把实现功能的模块都扁平化,然后根据测试、试用的结果对整个软件结构进行调整,就如依照行人行走的轨迹设计道路一样?
软件开发和建筑、景观设计很大不同的一点是,它可以经常甚至任意修改,地基、外观都可以改。
人月神话指出了软件发展过程中不可避免的无须度/熵增大的问题,“重构”多是beta版本之后的事情了,我现在关注的是开始阶段的事情。