小阳日记 03-09 举一反三

想做一个小项目,早上花了点时间过了一遍每个环节。

首先,大概分一下使用场景,找出关键点。然后根据场景大致画一个图形界面,想象这个界面如何帮助用户解决问题。接着,从这一个场景出发,列出支持这个功能(业务)所需要的数据结构。得到了上述信息,回过头来,粗略构思场景中的关键算法。并根据算法再调整数据结构。最后,重复以上几个步骤,完善场景并保证算法和数据结构可以支持。

假设我又在这个项目上持续投入精力,比如花了一个月时间开发。终于软件写出来了,并以第一版的形式展现出来。然后交付用户使用,之后再慢慢根据反馈一点一点把软件打造的更好。

回顾整个项目的发展过程。抛开具体细节,整个过程可以归纳为三个步骤:想法、设计和实施。一个想法,经过思考和设计,变成一个个可执行的任务,完成后构建出理想产品。这个“三个阶段”的步骤,似乎被抽象成了一种普适的工具。

 “软件工程是一门哲学。”


——大学《软件工程》老师

当你有了一个锤子,就总也忍不住找个钉子。

比如想要讲述一件故事时,就是先从一个概要开始(想法)。比如勇者斗恶龙。接着,开始设计故事,把脑子里多维的故事以一维的形式呈现,思考剧情,塑造人物(设计)。比如勇者出身卑微,但正直善良,偶遇仙人,得授盖世神功,最终杀死恶龙,抱得美人归。最后,再一章一章一个字一个字地把故事完整的讲出来(实施)。

利用这个规律,陌生的领域也可以看出门道。比如说作画这件事。看到一个景色或人物(想法),开始考虑如何构图/光线/色调/等等,并会在脑中过一遍要如何如何做(设计),最后动笔直到把客体画出来(实施)。

那么这个规律会是普适的吗?有限的几个例子,并不能严谨的说明理论的正确性。这是思考的局限性,但这并不妨碍运用这个理论。特别是从实用的角度来看,黑猫白猫能抓老鼠就是好猫。特别是当你找出不同领域的类比性时,一个领域里的技术就很可能直接应用到另一个领域。

例如现在软件开发中,很重要的一个概念就是“迭代”,即同样的过程做许多次,每一次都力求做得比上次好。这样就可以把它加到上述规律的最后,使其成为“想法=>设计=>执行=>迭代”。放在别的领域时,勇者斗恶龙的故事通过不断迭代,就会产生各种各样的版本。例如《指环王》中的恶龙,和《史莱克》中的恶龙就有很大不同。

You Might Also Like
发表评论