Martin Fowler 探讨了软件开发中三种不同类型的债务:技术债、认知债和意图债。技术债涉及代码质量,认知债关乎理解难度,意图债则源于需求不明确。理解这些区别有助于团队更有效地管理技术债务。
#software-engineering
30 条相关内容
本文探讨了软件中"slop"(低质量代码或设计)的测量方法,通过实验分析如何量化软件中的冗余、低效或设计不良的部分,为软件质量评估提供新的视角。
本文是一份关于软件缺陷的实用指南,涵盖了从类型系统漏洞到并发问题的各种常见bug模式,旨在帮助开发者识别、理解和预防编程错误。
本文探讨了Fred Brooks提出的外科手术团队模型如何为AI项目开发提供启示。该模型强调小规模精英团队的高效协作,对于当前AI开发中面临的复杂性和规模化挑战具有重要借鉴意义。
云端编程智能体相比本地版本具有持久环境、异步执行、长时任务、团队共享上下文、更易获取计算资源等优势,但当前讨论仍集中在编辑器用户体验和自动补全上。作者询问社区是否已在实际工作流程中真正使用云端编程智能体。
现代团队软件工程手册
1.0这是一本面向现代软件开发团队的实用指南,涵盖了从敏捷开发到DevOps实践的完整软件工程流程,帮助团队构建高质量、可维护的软件系统。
这是一份写于2002年的经典程序员成长指南,涵盖从新手到高级工程师所需的核心技能与职业素养。内容不仅包括编程技术,还涉及团队协作、项目管理、问题解决、代码审查等软技能,旨在帮助开发者全面提升职业能力。虽然年代久远,但其中关于学习态度、沟通技巧和职业发展的建议至今仍有参考价值。
本文探讨了如何通过系统化的工程方法来构建、测试和部署AI代理,确保其可靠性、可扩展性和安全性,从而在实际应用中发挥最大价值。
本文探讨了技术解决方案中常见的陷阱,指出过度关注解决方案本身而忽视问题本质会导致无效甚至有害的结果。作者强调理解问题根源比急于寻找解决方案更为重要。
值班(Oncall)是许多工程师工作中不可避免的一部分,但常常引发不必要的焦虑。本文列出十件关于值班不必过分担忧的事情,包括处理深夜告警、面对突发故障、以及保持工作与生活平衡等常见问题,帮助工程师以更轻松的心态面对值班挑战。
作者开发了一个研究测试套件,用于分析软件度量指标随时间的变化趋势。该工具旨在帮助研究人员追踪和评估软件项目在不同时间点的度量数据演变。
随着AI技术日益普及,雇主期望软件工程师不仅能够使用AI工具提升开发效率,还要具备将AI集成到产品中的能力,同时保持对AI伦理和风险的认知。
本文探讨了当前软件行业面临的质量危机,分析了导致软件可靠性下降、漏洞频发和用户体验恶化的系统性原因,并提出了可能的解决方案。
本文探讨了在大型语言模型(LLM)时代,软件工程师需要掌握的新技能和知识领域,包括如何有效利用AI工具、理解LLM的工作原理,以及适应不断变化的技术环境。
本文探讨了在长期运行的智能体应用中管理上下文所面临的挑战,并介绍了Slack如何通过分层存储、上下文窗口优化和智能检索策略来解决这些问题,确保应用在扩展时保持高效和准确。
软件工程法则
2.0该网站汇集了软件工程领域的核心原则与经验法则,涵盖从代码设计到团队协作的各个方面,为开发者提供实用的指导与洞见。
Postmortem-Driven Development 是一种开发方法,强调从事故后分析中学习并改进系统,通过系统性地记录、分析和实施改进措施来预防类似问题再次发生。
作者在零编程经验的情况下,通过管理AI代理而非学习编程,成功构建了一个包含22,000多行代码的复杂晚餐调度引擎。文章探讨了AI编码的现实挑战,包括代码腐化、幻觉问题,以及如何通过精心管理AI的上下文来避免项目失控。
本文介绍了一种通过编写小型、面向证明的测试来发现软件规范中隐藏漏洞的方法。这种方法结合了形式化验证和传统测试的优点,能够更有效地识别规范中的不完整性和不一致性。
软件工程的三个层次
1.0本文探讨了软件工程的三个核心层次:代码层、架构层和业务层,阐述了每个层次的重要性以及它们如何相互作用,共同构建出成功的软件系统。
这是一份AI首席软件工程师职位,面向美国SaaS初创公司,提供远程(拉丁美洲)或旧金山现场办公选项。该职位要求具备AI和软件工程专业知识,专注于为SaaS产品开发创新的人工智能解决方案。
本文探讨了如何将传统软件工程的最佳实践应用于AI开发中,通过优化提示工程、模块化设计和代码重构等技术来有效减少大型语言模型的Token使用量,从而降低API成本并提高系统效率。
本文探讨了当安全工具的核心基础组件被移除时可能引发的连锁反应,包括功能失效、安全漏洞暴露以及系统稳定性风险,强调了基础架构对安全工具完整性的重要性。
一位数据科学家询问如何提升软件工程中更"严肃"方面的能力,如撰写设计文档、决策跟踪、基础设施规划等管理性任务,以及在使用AI辅助编程的背景下如何在这些方面找到乐趣和自信。
软件工程的三个层次
0.0文章探讨了软件工程的三个核心层次:代码层、系统层和业务层,分析了每个层次的特点、挑战以及工程师在不同层次所需的不同技能组合。
资深工程师分享的职场经验与人生感悟,涵盖技术决策、团队协作、职业发展等多个方面,既有实用建议也有深刻反思。
我对程序分析的实践者视角
1.0本文从实践者角度探讨程序分析技术,分享在实际开发中如何应用静态分析、动态分析等方法来提升代码质量和开发效率,同时讨论这些技术在现实项目中的挑战与机遇。
本文探讨了概率工程的概念及其如何应用于现代工作场所,特别是关于24/7员工模式。作者分析了在不确定性和复杂系统中应用概率思维来优化员工效率和系统可靠性的方法。
循环不变代码外提
1.0编译器可以将循环中不变的代码移动到循环外部,从而提升程序运行速度。这种优化技术称为循环不变代码外提,能够减少重复计算,提高执行效率。
当编译器让你惊喜时
2.0有时编译器能让像我这样经验丰富的工程师感到惊喜和愉悦,即使是那些看似老练的开发者也会被编译器的巧妙优化所打动。