极客视点
极客时间编辑部
极客时间编辑部
113241 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/05:17
登录|注册

构建良好软件的3个原则

讲述:丁婵大小:2.42M时长:05:17
在上一篇文章中,我们分析了糟糕的软件是因为项目管理方式造成的,并提到构建良好软件的三个原则,即开始时越简单越好、发现问题并迭代修复和尽可能地雇佣最优秀的工程师。接下来我们就详细展开这三个原则的方法论。

1. 开始时越简单越好

构建好的软件需要集中精力,从能够解决问题最简单的方案开始。一个制作精良但相对简单的应用程序在添加必要的功能时从来不会遇到问题。但是,一个大的 IT 系统如果内部很多东西都很糟糕,通常是不可能简化和修复的。即使是像 WeChat 和 Facebook 这样成功且相似的应用程序,一开始时也只是包含非常特定的功能,只有在它们确立了自己的地位之后,功能才得以扩展和丰富。要知道,软件项目很少因为太小而失败,它们之所以失败是因为太大了。
不幸的是,在实践中保持一个项目的关注点是非常困难的,仅仅从所有涉众那里收集到的需求就能创建一个庞大的功能列表了。
管理这种膨胀的一种方法是使用优先级列表。需求仍会被收集,但每个需求都会根据它们的功能来进行标记。这将创建一个更轻松的规划过程,因为不再需要显式排除功能了。这样,涉众可以更理智地讨论哪些功能是最重要的,而不必担心项目中遗漏了什么。这种方法还明确了是否拥有更多功能的权衡过程。想要增加功能优先级的涉众还必须考虑他们愿意删除哪些功能。团队可以从最关键的目标开始,在时间和资源允许的情况下,按照列表进行工作。

2. 发现问题并迭代

要构建好的软件,难免会先构建糟糕的软件,然后积极寻找问题以改进解决方案。
首先,要做就是和用户交谈。我们的目标是了解用户想要解决的根本问题,而避免先入为主的解决方案。
其次,有一个清晰的问题描述可以帮助我们通过实验测试不同解决方案的可行性,这些解决方案在理论上很难确定。对于软件来说,显而易见的解决方案往往有致命的缺陷,这些缺陷在投入使用之前不会显现出来。我们的目标还不是要开发出最终的产品,而是要先尽可能快地、廉价地识别出这些问题。在解决问题的过程中清楚地理解应该构建什么。
对正确的解决方案有了清晰理解后,我们就可以开始构建实际的产品了。我们不再探索新的想法,而是将范围缩小到识别与具体实施相关的问题上。从少数测试人员开始,他们将快速发现需要修复的明显错误。随着问题的解决,我们就可以逐渐向更大范围的用户开放,他们将会发现更深奥的问题。
总的来说,本文第二点方法是使用这些不同的用户反馈有效地识别问题。构建软件并不是为了避免失败,而是为了尽可能快地在战略上失败,以获取构建好软件所需的信息。

3. 尽可能地雇佣最优秀的工程师

拥有良好工程技术的关键是拥有优秀的工程师。大厂都运行着数量惊人的大型技术系统,然而,众所周知,它们有一套最挑剔的面试流程以招募最优秀的候选人。
史蒂夫·乔布斯(Steve Jobs)和马克·扎克伯格(Mark Zuckerberg)都说过,优秀工程师的工作效率至少是普通工程师的 10 倍。这并不是因为优秀工程师编写代码的速度要快 10 倍。而是因为他们能做出更好的决策,才节省了 10 倍的工作量。
一个优秀的工程师对现有软件有更好的把握,可以重用现有软件,从而将他们必须从头开始构建的系统部分最小化。优秀的工程师自己设计的系统更健壮,也更容易被他人理解。这是一个级联效应,优秀工程师让同事在他们工作的基础上也能更快速、更可靠地构建系统。
这也意味着,由最优秀的工程师组成的小团队通常可以比由普通工程师组成的庞大团队更快地完成任务。他们充分利用了可用的开源代码和复杂的云服务,并将日常任务转移到自动化测试和其他工具上,因此他们可以专注于创造性地解决工作中的问题。
而且,小型的优秀工程师团队也会比大型的普通工程师团队产生更少的 Bug 和安全问题。要知道,如果没有简单性,就不可能有安全性,而简单性很少是大规模协作的结果。
以上就是构建良好软件的 3 个原则,希望对你有所帮助。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
大纲
固定大纲
1. 开始时越简单越好
2. 发现问题并迭代
3. 尽可能地雇佣最优秀的工程师
显示
设置
留言
收藏
41
沉浸
阅读
分享
手机端
快捷键
回顶部