软件开发中容易被忽视的细节
在开发新软件产品或服务时,人们往往会忽视一些细节,因为这些细节并不需要日常思考。公司应创造一个环境,让每个人都能表达自己的意见和担忧,并鼓励提出问题,以探索不同角度并加深理解。
忽视的原因
Ilian Iliev 在 Dev Challenge Accepted 2023 上解释了为什么在软件开发中人们会忽视某些事情。他指出,忽视的原因并非团队缺乏知识,而是因为这些事情不常被日常思考。例如,尽管大家都知道需要监控 API 性能、成功率等指标,但由于这些已经存在于所有项目中,成为常见事物,因此在规划时往往被遗忘。
新项目中的意识
Iliev 提到,开始新项目的团队通常更了解基础设置中的各个细节。然而,如果你在同一个项目上工作多年后开始新项目,很可能会忘记一些细节。在架构和规划过程中,人们往往过于关注实际功能,而忽略了周围的细节,类似于在高速公路上驾驶时的隧道视觉。
团队参与和沟通
Iliev 建议团队尽早提出问题,这有助于确保每个人都充分理解项目及其细节。他强调,每个人都是利益相关者,只是从不同角度看待问题。例如,产品负责人关注最终结果,架构师关注整体系统设计,QA 关注质量。无论从哪个角度,理解问题的特殊性越深入,提供的解决方案就越好。
公司环境的建设
公司应创造一个开放的环境,鼓励员工不仅提出问题,还能表达意见和担忧。员工也应学会如何表达自己。
InfoQ 采访 Ilian Iliev
探索被忽视问题的动机
Iliev 表示,这一探索源于他自身的经验以及与其他软件行业人士的交流。他不仅致力于创建稳定有用的软件,还致力于改进开发过程。目标是让每个人都对结果感到满意,并减少团队的压力。因此,他关注如何避免那些随时间变大的小问题。
系统架构中被忽视的问题
Iliev 指出,系统架构中经常被忽视的一个主要问题是与现有代码库的(解)耦合。人们往往走向极端,要么添加不必要的隔离层次,要么使新部分与现有代码库过于耦合,导致后期分离或替换时需要进行大规模系统重构。另一个问题是,在需要支持多个客户端版本时,如何维护系统的兼容性,例如在移动应用中,无法控制终端用户何时更新设备。
系统实现中的缺失部分
Iliev 提到,在为非技术用户创建工具时,我们投入大量精力使其用户界面友好且直观。然而,当用户是开发人员时,我们往往忽视了这一点,假设他们对问题有额外的了解。例如,内部 API 通常缺乏文档,我们依赖于一些部落知识来了解每个字段的含义。这种知识是脆弱的,因为人们会休假或换工作,公司会雇佣新员工,突然间大家意识到拥有一个易于访问的单一信息源不仅是便利,而且是必要的。在代码层面,情况更糟,我们依赖开发者能阅读代码,并假设这能解决问题。然而,阅读代码是困难的,因为代码编写时有意义的属性名可能不再有意义。此外,阅读代码只能告诉我们某物如何工作,而不能告诉我们为什么这样设计。所有复杂决策背后的推理都消失了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。