设计与研究的区别看来就在于,前者追求好,后者追求新,优秀的设计不一定新,但必须是好,优秀的研究不一定是好的,但必须是新的。我认为这两条道路最后会发生交叉,只有应用新的创意和理论,才能诞生超越前人的设计,只有解决那些值得解决的难题,才会诞生最佳研究。所以, 设计和研究都是通向一个地方,只是前进的路线不同罢了。
优秀的建筑师会先研究最终的用户需求,然后做出用户需要的设计。注意,这里说的是用户需要的设计而不是用户要求的设计,让用户满意并不等于要迎合用户所有的需求,因为用户不了解所有可能的选择,也经常弄错自己真正想要的东西。顾客永远是对的,这是指评价优秀设计的标准是看它能在多大程度上满足用户的需求。大多数优秀的设计都是关注用户,以用户为中心产生的
优秀的设计需要选出某些人作为目标用户,因为一种人眼里的优秀设计,在另一种人眼里却是糟糕透顶。除非选定目标用户,否则一种设计的好坏根本无从谈起
设计必须以人为本,就在设计面向的是最高端用户,一样是设计个人类使用。研究则不一样,如数学研究,不需要为了方便用户理解而选择一种更麻烦的证明方式,你只会选择一种最直接、最简洁的证明方式。一般来说科学研究不需要服从人类工程学。艺术领域是最能体现以人为本的,所有的艺术都必须迎合人类的兴趣和极限。
在编程领域同样是以人为本,人类似乎不善于处理精细的工作,所以最好还是交给计算机处理。理解编程语言,不要把它看成是已经完成的程序表达式,而应该把它理解成促进程序从无到有的一种媒介。意思是成品的材料和开发时的材料是不一样的。搞艺术的人都知道,这两个阶段往往是需要不同的媒介。比如,大理石是一种非常良好、耐磨的材料,很适合用于最后的成品,但它极其缺乏弹性和灵活性,所以不适合在构思阶段用来做模型。
为了做出优秀的设计,你必须贴近用户,始终寸步不离,永远站在用户的角度调整自己的构想。在软件设计领域,贴近用户的思想被归纳为“弱即是强”模式,如果你正在设计一种新东西,就应该尽快拿出原型,听取用户意见,然后在原型基础上进行版本迭代。当前的网剧播放,参照这个模式,按季度播放,每个季度几集或十几集,一集一集的投放市场,根据播放反馈调整后续的播放及拍摄进度。近期典型的就是HBO拍摄的权力的游戏第8季,因口碑在逐步下滑,最后一集始终没放出来,就是根据市场的反馈在调整播放进度。与之对照,另一种软件设计思想,也许可以称为“万福玛利亚”模式,它不要求拿出原型,然后逐步优化,它的观点是你应该等到完整的成品出来后在一下子隆重的推向市场,就想圣母玛利亚降临一样。在互联网泡沫时期,无数创业公司因为相信了这种模式而自毁前程。
在艺术领域,弱即是强的运用也是普遍存在的,以绘画为例,几乎所有的美术老师都会告诉你准确画出事务的方法,不是沿着轮廓慢慢的一个部分一个部分的把它画出来,因为这样的话各个部分的错误会累积起来,最终导致整幅画失真。真正应该采用的方法是快速的用几根线画出一个大致的轮廓,然后再逐步的加工草稿。
软件开发,原型并不等于模型,不等于将来一定要另起炉灶,完全可以在原型的基础上直接做出最后的成品。这样的方式使得你可以利用在开发过程中一路产生的新想法。更为重要的是,有助于鼓舞士气。因此在开发中,编码逻辑设计好后,尽快开始开发,跑通后再进行初步评审,在此基础上进行调整,不能等到所有的条件具备、疑问全部确认后再开始,那样子会延误进度,设计阶段考虑得再多,大部分的问题,只有联调阶段才能发现。
画家之间设置流传着一句谚语:画作永远没有完工的一天,你只是不再画下去而已。对于一线开发来说再熟悉不过了,纵使考虑的再全面,对所有能想到的异常考虑进来,仍然有可能在生产上暴露出问题。编码也是一样,隔一段时间回头看之前写的代码,会发现惨不忍睹,恨不能对整个系统进行重构。即使之前的代码写的很优雅,在迭加新的需求之后,需要优化的地方也会有很多,也应用那句,编程永远没有完工的一天,只是不再优化下去而已。
近期在对一个批处理代码进行分页查询优化。遵循上述思想,1、首先应该把将整个批进口写出,并调试通过。2、再对其中的代码结构进行优化。3、考虑各种异常情况,进行最后环节的调试。4、比对重构前后生成的数据。