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

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 条评论
登录 后参与评论

相关文章

来自专栏web前端教室

只会写js而不会排bug的人,做不了好前端

什么叫好前端?定义有很多,在我这至少包括能写js能排错。有些人因为面试的次数多了,什么样的面试题都见过,成了面霸成了面试小能手。js面试题写的666,面试谈话也...

1978
来自专栏企鹅号快讯

为什么源码分析味同嚼蜡?浅析技术写作中的思维误区

码个蛋第225次推文 ? 不是干货不够,而是干货太干 作者:doodlewind 博客:https://juejin.im/user/57d732a7816df...

2046
来自专栏封碎

如何成为Android高手 博客分类: 经典文章转载 Android互联网中国移动网络应用应用服务器

若立志成为Android高手 ,如有耐心,“一瓶一钵足矣”。   “天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。人之为学有难易乎?学之,则...

852
来自专栏架构师之路

“选redis还是memcache”,面试官究竟想考察啥?

昨天发布的《缓存架构,到底设计些什么?》一文,评论里问“究竟啥时候用memcache,啥时候用redis”的比较多。

1392
来自专栏Crossin的编程教室

答同学问

很多大学今天开始新学期了,咱们教室也增加了不少新同学。刚来的同学,可以发送p查看python入门课程的目录,也可以直接发送1~53,进入对应的课程。不用被已经进...

2937
来自专栏带你撸出一手好代码

会当凌绝顶,一览众山小,宇宙第一的visual studio诞生20年回顾

IDE华山论剑,天下第一非微软家的visual studio莫属。 visual studio以极佳的用户体验和高效的协助工程师工作而著称, 深得无数开发者喜爱...

28710
来自专栏我就是马云飞

一个 2 年 Android 开发者的 18 条忠告

我仍记得2014年我决定做安卓开发的那天,这是我一生中做出的最好决定之一。到现在已经有2年半了, 最初的时候,并没有人告诉我如何做才是正确的。我犯了很多错误,浪...

2258
来自专栏跨界架构师

不知道是不是最通俗易懂的《数据一致性》剖析了

  本文是本系列的第一篇。从普遍认为的分布式系统中最最最重要的数据一致性开始。内容适合人群>=0年技术相关经验。

964
来自专栏CSDN技术头条

Docker在Uber服务部署中的应用

无论你如何理解政治,毫无疑问UBER就是创新的代名词,正如它颠覆了传统的交通运输行业在这个分享体系中的领导地位。但是问题在于最快的创新者往往会遇到一些问题,正如...

1905
来自专栏企鹅号快讯

各种流行的编程风格 你属于哪一种?

在编程中,会遇到很多使用囧然不同风格的开发者,下面是小于所知道的一些,你还知道其它的吗? ? 一、散弹枪编程 ? 这种编程风格是一种开发者使用非常随意的方式对待...

21911

扫码关注云+社区