警惕发布前夕的“致命遗忘”
软件开发人员往往会忘记那些他们不需要每天思考的事情,这可能会在软件项目交付期间造成延迟或影响产品功能。为了防止忽略某些东西,Ilian Iliev 建议尽早开始自动化部署、设置错误日志记录,并使用清单和提醒记录以前容易被忘记的东西。
Ilian Iliev 在 2023 年 Dev Challenge Accepted 大会 上谈到了软件开发人员可以做些什么来防止疏忽一些事情。
Iliev 表示,人们在开发新的软件产品或服务时往往会忽视一些事情,因为他们不需要每天考虑这些事情。这可能会导致软件项目延迟,或者影响产品的功能,或两者兼而有之。在计划阶段忘掉的每一件事情都意味着要么推迟交付日期,要么走捷径,发布不如预期的产品:
想象一下,在发布前两天,你突然意识到你完全忽略了新版应用程序与现有数据不兼容这一事实,并且没有制定迁移计划。这可能意味着几天的交付延迟,或者需要进行数周的重构。
Iliev 回忆起他们的一个服务器在深夜因操作系统的闰秒处理错误而发生崩溃:
整个系统都在运行,除了处理客户订单的部分。问题是我们几天后才从客户那里得知这个问题,他们问为什么系统仍然没有处理完他们的订单。
Iliev 说,这既是对公司声誉的打击,也是对开发人员自尊心的打击,因为我们从未考虑过对那一部分进行全天候监控。
Iliev 说,从部署和运维的角度来看,早期需要关注自动化部署。你不需要一个复杂的 CI/CD 管道,当然,如果有那也很好,但也许可以先从一个简单的可以执行所有步骤的脚本开始。千万不要过于依赖人们会记住按特定顺序执行的各种命令,即使它们有文档记录。部署应该是一键或一个命令就可以搞定的事情。
Iliev 认为,对于运营来说,可用性监控和警报是必须的。恰当的错误日志记录也是,如果系统出现问题,你应该能够追踪到问题根源。他补充说:
没有适当的日志记录,你只能去猜测是什么导致了问题,甚至更糟糕的是,直到客户开始抱怨时才知道有问题。
Iliev 提到,将某事认定为一个糟糕的决定通常会被解释为心怀敌意,也不会给讨论带来价值。他建议通过指出具体的原因来表达对某事可能不奏效的担忧,这样就有可能在早期发现可能存在的问题。
Iliev 说,软件开发人员不应害怕提出外部问题。最终,我们所有的工作都会结合在一起,因此对其他方面有一个大致的了解对于产品的整合是非常重要的。
Iliev 建议团队在启动新项目时,思考一下上次所有出错的地方,并确保不重蹈覆辙:
思考一下你的产品将如何演进,以及你将如何维护系统。保持团队之间良好的沟通,并确保所有利益相关者都了解所有复杂性和可能的陷阱。
他总结说,总会有一些事情会被忘掉或忽略,但被忘掉的事情越少,结果就越好。
InfoQ 采访了 Ilian Iliev ,讨论了关于开发人员如何防止忽略某些事情。
Ilian Iliev:在这个过程中,使用包含应该注意的事项的清单对你会有很大帮助。将其按阶段切分,作为验证某些步骤是否已完成的工具,也可以作为帮助你更好地了解项目需求的问题来源。这些清单的好处在于它们可以快速查看,并帮助你避免错过可能会在未来导致问题的步骤。
Iliev:我创建了一个 Github 项目,其中包括我在架构、实现、部署和操作、演化和维护阶段所使用的清单的草稿。
这里有两个清单摘录以供参考:
实现:
文档
数据模型文档——不同属性代表什么
API 文档——端点的功能、预期的输入和输出是什么
业务逻辑——为什么做出某些决定
代码质量——样式指南、代码检查器、评审过程
版本控制
稳定性——单元测试、端到端和集成测试、负载测试
部署与运维:
单命令部署
可用性监控——你确定你的系统在运行吗?
指标报告——如何衡量系统性能
错误日志记录——操作日志应易于访问和理解
无噪音服务——系统不应生成不必要的噪音,例如日志、电子邮件、通知,因为它可能掩盖真正的问题
查看英文原文:
https://www.infoq.com/news/2024/02/software-developers-forgetting/
声明:本文为 InfoQ 翻译,未经许可禁止转载。
重磅!英伟达官宣全球最强AI芯片:性能提升 30 倍,并将重新设计整个底层软件堆栈
刚刚!马斯克开源 Grok:参数量近 Llama 四倍,成全球最大开源模型
零一万物刷榜,Zilliz 呛声:面向投资人编程;李彦宏称“程序员将会消失”,周鸿祎回怼;TikTok 危在旦夕 | Q资讯
微信扫码关注该文公众号作者