想象一下,您正在建造梦想中的房子。您相信这样的总承包商会相信吗?
首先,我们要挑选厨房柜台的材料和窗户的玻璃。让我们猜测一下每个现在要购买的金额。
然后,我们必须购买大家都在谈论的一些新混凝土。我想现在可以做到,但是我们以后总是可以订购更多。我迫不及待想尝试一下!
将横梁放置到位后,我们应该确定房屋应有几层。最后,我们应该决定房屋的风格。在您搬入之前的某个时候,我们应该获得计划许可,在您定居之后,我可能会联系建筑师以获取一些图纸。
这听起来很荒唐,因为有一种公认的房屋建造方法,而且是基于常识的。您从一个愿景开始,获得一套计划,浇灌基础,构建框架,填写内部内容,最后完成所有小细节。
使任何步骤混乱将导致完全混乱。在用电之前要先对墙壁进行修整,这意味着您必须在所有墙壁上打孔才能在房屋中布线。鉴于灰尘产生器在工作时会造成大量灰尘,因此在其完全完成之前对其进行清洁会浪费很多精力。
但是,许多编码器向后构建其系统。他们被最新的whizz-bang框架所迷住,或者被据说最新数据库的快速性能所吸引。在构建新功能时,无论这些技术是否合适,他们都会以这些选择来引导他们的思考。
更重要的是,使用技术至上的设计通常意味着将用户体验(UX)保留到最后。而且,如果您将用户按优先级排在最后,那么不幸的是,这将导致系统缺乏可用性。
应用程序设计中的首要业务是确定其用户将体验到的内容。这应该是在纸上或在简单的数字模型中勾勒出的高层视野,并且应该从用户的角度表达系统的流程。
无论您是为老年人构建Web应用程序,还是为认真的计算专家构建系统级工具都没有关系。必须先设计UX。
“我一直很想编写一种新的病毒扫描算法,所以我马上就可以入门!”
“我将立即研究最新的OLED技术!”
一旦设计好UX并定义了系统的愿景,就应该设计一种体系结构,以确保最终编写的代码将真正满足用户的需求。 UX设计中的选择可以从根本上塑造和告知系统的体系结构。
好的UX设计将迎合不太明显的事情,这些事情可能是整体用户体验的一部分。精心编写的规范可能包含诸如“页面加载的总加载时间必须小于200毫秒”之类的要求,因为设计人员知道页面加载速度慢的后果。它还可能要求停机时间接近于零,因此该体系结构最终可能需要进行多数据中心部署。
现在终于可以玩了!定义好UX并布局好体系结构后,就可以开始选择正确的技术,框架和库的过程。至关重要的一点是,现在在选择工具时要考虑用户体验和体系结构,因此可以迅速忽略任何不能满足二者需求的工具。
如果您认为此设计序列需要采用过时的瀑布式方法来容纳它,请再考虑一下!这完全适合敏捷开发。整个新产品,史诗甚至单个用户故事的实现都应遵循UX->建筑->工具序列。开始开发产品或史诗级产品时,应使用尖峰来设计UX和体系结构。单个用户故事应包括足够的细节,以便工程师在完全实施该故事之后知道该故事的UX,工程师还应估计足够的点数,以适应该故事开始工作后进行的体系结构规划。
研究和试验工具非常有趣。程序员喜欢在框架丛林中发现新的东西并找到“ The Next Big Thing”,并且当需要构建一个能够满足UX和体系结构的系统时,拥有许多可用的工具非常好。只是不要从他们开始整个设计过程。因此请记住:首先是UX,然后是架构,然后是工具。