写点什么

如何锻炼开发人员“简单设计”的思维力?

  • 2019-10-25
  • 本文字数:1791 字

    阅读完需:约 6 分钟

如何锻炼开发人员“简单设计”的思维力?

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


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


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


简单设计能指导开发, 指的是: 代码隔离:


简单设计能使开发人员, 在开发前, 有一清晰且明确的指导地图; 开发人员沿著这指导地图, 便可开发出高质量的代码。使得代码不仅能符合各个质量属性上的要求, 更能使代码具备好的 “隔离“; 不会因后续需求上的变更, 而产生新的缺陷或失败。


测试用例定义“开发完成”的标准:


简单设计能使开发人员, 在开发前, 便设计出测试用例; 使得开发人员可明确的定义, 每日所开发的 TASK, 完成的标准是什么? 需通过那些测试用例的场景?


每日目标(风险)管理:


简单设计能使开发人员, 明确且客观的做出结论: 今天该完成的 TASK 完成了没? 假如, 没完成, 真正的问题是什么? 该寻求什么样的协助?

简单设计要如何做?

有的人是天生就会的。


而大部分的我们,简单设计的思维,是需要经过一段时间锻练的,不是天生就会的。


Matei Zaharia; Spark 开发的主导者。

Matei 当在用 Scala 开发 Spark 时, 并没有做所谓的简单设计。

Matei 在开发前, 会先在脑中清楚的浮现出软件的架构。

Matei 便照着脑中的软件架构, 开发完了一行又一行伟大的代码。

Matei 每次在开发完一段代码后, 便会根据代码的弱点, 设计所谓 “灾难测试” 的测试用例;测试自己所开发的代码,在架构上的弱点为何?


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


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


为何 Story 场景树,可帮助开发人员,锻练“简单设计”的思维?


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



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


从图中的 Story 场景树中, 清楚的指导著开发人员在“客户租 CD” 的这个 Story 中, 总共有 3 个关注点所产生的 3 个 TASKs 需完成开发; 分别是:


1.获取客户租 CD 的数据 (历史数据)。


2.校验客户已租的 CD 片数是否已超过 3 片?


3.计算客户所租的 CD 需归还的日期。


开发人员亦可在图一的 Story 场景树中, 分析、标示每个将进行开发的 TASK 需调用的外部接口。


开发人员按照 Story 场景树中的 TASK,进行代码上的隔离;使得 Story 不会因后续某个 TASK 需求上的变更, 而使得其他的 TASKs 引入新的缺陷或失败。


例如:开发人员从图一的场景树中很清晰的就能分析出: “TASK 获取客户租 CD 的数据(历史数据)” 与 “TASK 计算客户所租的 CD 需归还的日期”, 需要进行代码上的隔离。因为, 开发人员希望当 “TASK 计算客户所租的 CD 需归还的日期” 的运算逻辑的代码改变时, 不致于会在 “TASK 获取客户租 CD 的数据(历史数据)” 中引入新的缺陷或失败。


当然, 代码隔离的实现方式可藉由不同的接口或是适当的引用设计模式 (Design Patterns) 来完成。


更重要的是 : 开发人员亦可从图一的 Story 场景树中, 设计每个将进行开发的 TASK 所需的“测试用例”; 当开发人员能设计出 TASK 相对应的测试用例时, 所代表的意义不仅是开发人员已能充分的理解了需求, 更说明了开发人员已能从 TASK 相对应的测试用例中, 明确的定义出 “TASK 完成的标准”。


当开发人员已能从 TASK 相对应的测试用例中, 明确的定义 “TASK 完成的标准” 时, 开发人员便能明确且客观的做出结论:


1.今天该完成的 TASK 完成了没?


2.假如,没完成,真正的问题是什么?该寻求什么样的协助?

结论

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


本文转载自公众号云加社区(ID:QcloudCommunity)。


原文链接:


https://mp.weixin.qq.com/s/IEFsYqDd850oaGOqYl3glQ


2019-10-25 19:04821

评论

发布
暂无评论
发现更多内容

缓解等待焦虑,华为云CDN为您提供畅快下载体验

爱科技的水月

界面原型设计

芯动大师

android GUI设计 mockplus droiddraw

FL Studio2024中文版本水果软件下载

茶色酒

FL Studio FL Studio 21

【web 开发基础】PHP查询数组中的指定元素 (50)

迷彩

数组 数组操作 二维数组 PHP基础 数组查询

据+AI赋能教育智能化转型,华为云技术优势明显!

爱尚科技

2022-12-29:nsq是go语言写的消息队列。请问k3s部署nsq,yaml如何写?

福大大架构师每日一题

云原生 k8s k3s nsq 福大大

让下载速度更快更稳,华为云CDN多重技术助力网络加速

爱科技的水月

智能且高效,华为云CDN三大特点助企业云上创新

爱科技的水月

cleanmymac2024永久版mac系统清理软件

茶色酒

CleanMyMac CleanMyMac X

人生的喜悦、不快与成长,都在那一篇篇的文字中得到记录 | 2022 年终总结

宇宙之一粟

年终总结 人生故事 代码之外 12月月更

华为云大数据BI,助力电商企业打赢“年货节”攻坚战

秃头也爱科技

“一粒米”的故事:哈工程昇智识米团队基于昇腾AI创新提出水稻适度加工智能化解决方案

极客天地

华为云大数据BI,企业数字化运营得力助手

爱尚科技

超融合一体流式引擎,打造分布式数据库新纪元

亚信AntDB数据库

AntDB 国产数据库 AntDB数据库

【web 开发基础】PHP中获取数组的元素个数 (51)

迷彩

数组 数组操作 PHP基础 数组查询 统计数组

浅谈华为云大数据BI对企业数字化转型的助力

秃头也爱科技

【web 开发基础】如何删除数组中的重复元素(52)

迷彩

数组 数组操作 PHP基础 唯一性

HarmonyOS多媒体框架介绍

HarmonyOS开发者

HarmonyOS

直播回顾 | 根因分析助力AIOps走得更远!

博睿数据

可观测性 智能运维 博睿数据

openEuler委员会主席江大勇:跨越生态拐点 欧拉逐梦新征程

科技热闻

亚信科技通信、交通行业数据库项目入选“星河”标杆、优秀案例

亚信AntDB数据库

AntDB 国产数据库 AntDB数据库

华为云大数据BI,如何助力智慧医院数字化升级

秃头也爱科技

跳槽一次能涨多少?总算是见识到跳槽天花板了

程序知音

Java java面试 后端开发 八股文 Java面试题

【架构设计】保持简单轻量设计的三个原则——DRY,KISS, YAGNI

JAVA旭阳

Java 架构

CleanMyMac2024激活码使用教程

茶色酒

CleanMyMac CleanMyMac X

华为云大数据BI平台,助力电商企业破除数据孤岛,轻松备战双十一

秃头也爱科技

Mysql索引覆盖

京东科技开发者

MySQL 数据库 sql 搜索引擎 优化

助力网络碳中和 | 华为发布站点能源十大趋势

极客天地

HTTPS基础知识

穿过生命散发芬芳

https 12月月更

华为云CDN引领网站性能全面优化

爱科技的水月

共创精彩游戏未来,华为云大数据解决方案助力游戏企业成功转型!

秃头也爱科技

如何锻炼开发人员“简单设计”的思维力?_文化 & 方法_方俊賢_InfoQ精选文章