软件开发的过程中, 一定需要简单设计?

2017.7.4, 深圳, Ken Fang

前言: 简单设计只是写文档, 而不能指导开发, 这样的简单设计, 就只是在瞎折腾。

但是, 软件开发的过程中, 不做简单设计, 软件开发就永远做不好。

简单设计能指导开发, 指的是: 1.简单设计能使开发人员, 在开发前, 有一清晰且明确的指导地图; 开发人员沿著这指导地图, 便可开发出高质量的代码。使得代码不仅能符合各个质量属性上的要求, 更能使代码具备好的 “隔离 “; 不会因后续需求上的变更, 而产生新的缺陷或失败。 2. 简单设计能使开发人员, 在开发前, 便设计出测试用例; 使得开发人员可明确的定义, 每日所开发的 TASK, 完成的标准是什么? 需通过那些测试用例的场景? 3. 简单设计能使开发人员, 明确且客观的做出结论: 今天该完成的 TASK 完成了没? 假如, 没完成, 真正的问题是什么? 该寻求什么样的协助?

本文: 简单设计要如何做? 有的人是天生就会的。 而大部分的我们, 简单设计的思维, 是要经过一段时间锻练的;不是天生就会的。

Matei Zaharia; Spark 开发的主导者。 Matei 当在用 Scala 开发 Spark 时, 并没有做所谓的简单设计。 Matei 在开发前, 会先在脑中清楚的浮现出软件的架构。 Matei 便照着脑中的软件架构, 开发完了一行又一行伟大的代码。 Matei 每次在开发完一段代码后, 便会根据代码的弱点, 设计所谓 “灾难测试” 的测试用例;测试自己所开发的代码, 在架构上的弱点为何?

敏捷开发与软件工程实践;如:Story 场景树;对 Matei 而言, 是完全没有 “必要” 的。因为, Matei “天生” 就会简单设计了。

Story 场景树, 主要是要帮助开发人员, 锻练 “简单设计” 与 “测试用例设计” 的思维;当经过一段时间的锻练后, 开发人员自然而然的, 就可没有 “必要” 的再使用 Story 场景树, 进行简单设计。因为, 开发人员已能将软件架构浮现在脑海中, 并能自然而然的思考出测试用例。

为何? 因为, Story 场景树够可视化, 够轻量级;放在ㄧ个脑袋里, 绰绰有余。

[图一: Story 场景树: 可视化、轻量级的开发人员指导地图]

结论: 拥有 “简单设计思维” 的开发人员, 永远是在用 “脑” 驱动著手, 产生一行又一行伟大的代码。之所以称之为一行又一行伟大的代码, 是因为, 每一行代码永远都是能随著时间的推移, 而能持续的演进; 演进的过程中, 却依然保持著健康、强壮。伟大的代码就宛如是拥有强健生命的有机体。

永远只会用手写代码的开发人员, 产生的代码从一出生 (第一个版本), 就发育不全 (缺陷百出)。毫无疑问的, 随著时间的推移, 病只会越来越重 (缺陷、失败越来越多) 。

将能锻炼 “简单设计思维” 的方法、工程实践, 放在永远只会用手写代码的开发人员的面前时, 所会发生的场景, 就宛如是图二中, 那位拉车的…

拉车的永远说...我很忙。
拉车的永远说...先证明轮子对我是有价值的,我才会考虑用轮子。
拉车的永远说...我现在牛逼的很,为什么要用轮子? 

人生是选择题, 不是是非題; 做出什么样的选择? 便过著怎么样的人生; 产出什么样的代码。

[图二: 拉车的: 我很忙…]

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏理论坞

尼尔森十大可用性原则知多少?

尼尔森(Jakob Nielsen)是一位人机交互学博士(Technical University of Denmark in Copenhagen), 于19...

803
来自专栏华章科技

谁说不能用 Python开发企业应用?

语言多元化是PayPal编程文化中一个重要的组成部分。在C++和Java长期流行的同时,更多的团队选择了JvaScript和Scala。同时,Braintree...

502
来自专栏编程

C加加和游戏开发那些事,告诉你怎么用C加加纵横游戏编程

C语言和C++ C 语言可以说是一门设计的非常成功的语言。但是C语言没有OOP的特性,在做一些大型项目的时候力不从心。一些大型的C项目,随着项目的臃肿,人类基本...

2335
来自专栏企鹅号快讯

2017 年度编程语言榜,Java 最流行、JavaScript 最没价值?

关键时刻,第一时间送达! 【CSDN编者按】在之前的 TIOBE 年度榜单中, 宝刀未老的 C 语言成功逆袭 ,成为 2017 年度编程语言。在本文中,我们综合...

1788
来自专栏企鹅号快讯

怀英漫谈1-JS初体验

你好,欢迎来到怀英漫谈,这次想与你聊聊初学JS的感受。 这次接触JS的时候并不是零基础,是没有系统性的对JS的认知,正好这次也借此机会,用碎片的时间将JS的知识...

1908
来自专栏数据科学与人工智能

【Python环境】人们对Python在企业级开发中的10大误解

在PayPal的编程文化中存在着大量的语言多元化。除了长期流行的C++和Java,越来越多的团队选择JavaScript和Scala,Braintree的收购也...

2047
来自专栏申龙斌的程序人生

搞定GTD - 项目分类

GTD中管理的是一堆Action,比如我的OmniFocus中当前有695个Action,包括已完成的、暂停的和未完成的。为了有效地管理这些Action,在GT...

34911
来自专栏余果的专栏

面向未来的跨界开发技术(下)

设计不等于艺术。用文艺的话说就是“艺术发现问题,设计解决问题”。也即是说,设计为商业服务。作为上市公司的设计部门,需要清晰地展现产品,构建用户的渴望。在某种程度...

7990
来自专栏达摩兵的技术空间

前端大牛or架构师应该具备这些

相信很多招聘要求上都会写明需要3-5年经验才可以达到架构师要求,并且针对其中一些必要的技术储备大家已经能够耳熟能详,那究竟为什么需要这么久时间,以及具体每项技能...

746
来自专栏华章科技

最多金的编程语言Top10:Python第3,R第10,你猜第1是谁?

本文绝非标题党,而是基于大量数据和为期两周的深入探究,在18年初,对IT行业的现状、趋势以及预测进行客观观察,让大家对编程语言有一个更清晰的认识,以选择最值得花...

962

扫码关注云+社区