代码精进之路
范学雷
前 Oracle 首席软件工程师,Java SE 安全组成员,OpenJDK 评审成员
38234 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
结束语 (1讲)
代码精进之路
15
15
1.0x
00:00/00:00
登录|注册

19 | 怎么避免过度设计?

练手题:银行账户管理App
微信的简洁设计
克制过度设计的倾向
回答两个问题
影响代码效率的两个重要问题
时刻准备提问和回答两个问题
设计的容易膨胀性
优先满足现在就必须满足的需求
迭代演进
回归到最终用户
从最终用户的眼里看需求
选择必须做的事情
多姿多彩的现实 vs. 抽象程序的简化
频繁的需求变更
一起来动手
小结
避免过度设计
不要一步到位
识别最核心需求
过度设计的问题
怎么避免过度设计?

该思维导图由 AI 生成,仅供参考

俗话说,“过犹不及”。“过度”这个词仿佛会给我们一些不好的暗示。不要紧张,我们先聊一个轻松的话题。
假设有一个小地方,要建一个火车站。这个地方有数十万人口,每列火车预计上下乘客数十人,高峰时段大概近百人。你会怎么设计这个火车站?
这个火车站可能是个富丽堂皇的建筑,有宽敞的售票厅和候车室。这种设计到处可见,你可以想一想你熟悉的火车站, 也可以观察一下旅途中的火车站。
也有些火车站可能只是一个一百平米左右的小房子,只有简单的售票窗口、进站口和出站口。 比如说北京的清华园火车站,就是这样的。
也有的火车站只有标牌、售票机和遮阳棚的一小块地方,告诉人们火车在这儿停靠,就像我们常见的公交车站。
这三种火车站,都能实现旅客购票、候车、上车和下车的核心需求,帮助他们实现乘车旅行的目的。
既然乘坐火车的核心需求基本是一样的,为什么车站的差别这么大呢?
乘车旅行这个需求,衍生出了购票、候车、上车和下车的需求。
购票的需求衍生出了售票、购票、验票、检票以及各个环节排队的需求。
售票的需求衍生出了要有售票办公室和售票大厅、管理售票人员、购票人员和票贩子的需求。
售票办公室衍生出了科长办公室、科员办公室、会议室、售票窗口。售票窗口的需求也可以接着衍生出更多的需求。这个列表我们可以列很长很长,最后的结果就是火车站的建设耗资大,建设周期长,运营成本高。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文讨论了在软件开发过程中避免过度设计的重要性,以及如何管理需求和设计。通过火车站设计的例子,阐述了需求的膨胀和变更对软件开发的影响。在软件开发中,识别最核心需求和迭代演进是关键。作者强调了从最终用户的角度出发,识别最核心需求,避免无效需求的膨胀。此外,迭代演进也是管理需求的重要方法,通过多轮迭代,筛选出真正重要的需求,避免过度设计。文章提供了实用的建议,帮助读者更好地管理软件开发过程中的需求和设计,提高工作效率和软件效率。文章还强调了避免过度设计和需求膨胀的关键问题:什么是必须做的?什么是现在就必须做的?最后,通过微信的设计案例和银行账户管理App的思考,引导读者思考如何克制过度设计的倾向,并提出了练手题,鼓励读者分享自己的看法。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《代码精进之路》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(25)

  • 最新
  • 精选
  • Demon.Lee
    想了想,打开银行app。首先想看到总余额以及每张银行卡里的余额,第二,汇款功能,第三费用明细。

    作者回复: 嗯,这些是核心的用户需求。不幸的是,很多App并没有第一时间、用最便捷的方式满足这些需求。

    2019-02-16
    3
    11
  • Ricky
    现在的很多银行APP和电信运营商的APP做的真的是够了,一大堆花里胡哨的东西,真正想要的使用高频的功能都特别难找。

    作者回复: 不知道给谁用的😂

    2019-03-17
    2
    7
  • 卞雪达
    哈哈哈,我经常有过度设计的冲动,有时候忍不住就实施了出来。冲动的原因可能是想试试新的技术,包括大小轮子、各种优化、编程思想等等。但是更多的原因是项目某些时候给与的时间较充裕,不折腾一下总觉得没发挥,我面向对象、接口、切面、组件等编程思想,都是在这个过程中学习的。有时候弄出来发现其实过度了,又往下砍。

    作者回复: 工具一定要掌握一大把,还要不停的折腾它们,这就是学习啊。但是产品,要把它变成折腾后的东西,而不是折腾中的东西。折腾,需要充裕的时间。我们的很多设计和实现,都是反复折腾、反复砍减后的结果。

    2019-05-28
    4
  • 摩诃不思议
    有没有考虑过,有些问题不是程序员能决定的,而是产品经理决定的,产品经理一定要做呢?

    作者回复: 希望你碰上一个好的产品经理;产品经理也不一定都是对的;等你做产品经理或者更高职位的时候,希望你保持定力。

    2023-02-12归属地:浙江
  • aoe
    银行App主要功能是广告,查余额只是吸引用户来使用,所以在启动页就能看到广告

    作者回复: 使用它来干什么呢?看广告吗?

    2021-12-14
    3
  • 进化菌
    过度设计,让我想起过去领导总喜欢为后面的发展设计一些细节,比如数据库多留几个用不上的一段,比如代码预留未来会用到的功能……有未来思想是极好的,但是在工期紧的时候,让人很烦,甚至那些用不上的东西不仅增加不必要的风险,还真的可能几年都用不上。

    作者回复: 未来思想,恐怕我的理解不是这样的。代码里现在用不到的东西,必须干干净净地删掉,减碳又环保。

    2021-11-27
  • 第一装甲集群司令克莱斯特
    主功能没有过度设计,只是加了很多广告,商业,运营设计,人家不是慈善,要恰饭的好嘛。

    作者回复: 没明白什么意思。

    2021-08-11
    2
  • xavier
    避免过度设计的意识,我想大多数人都有。但是真正能实践起来,太难了。 有时候在支付宝APP里找个功能都要找半天, 最近用了招行APP,又开了眼界。

    作者回复: 嗯,是一个非常难的事情!在设计的世界里,做复杂的事很简单,做简单的事情很复杂!

    2019-04-18
    2
  • 风清扬笑
    话说第一眼看到钱这个需求貌似是很多人想要的,但是我觉得有部分原因也是基于安全考虑,一些app设计里把余额放到二级菜单里,而且想看的话还得输入密码

    作者回复: 不登录有什么必须要看的吗?现代的App,登录很方便的,比如指纹,刷脸。

    2019-03-03
  • 唐名之
    登录用户 绑卡 账户余额 收支明细 转账

    作者回复: 绑卡是一个一次性的事情,非常重要但是使用频率不高。这个可以通过设计解决,你有什么好办法吗?

    2019-02-18
收起评论
显示
设置
留言
25
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部