本文探讨了在小型工程团队中,如何在没有专职设计师的情况下交付美观、直观的软件。作者提倡将设计工作与工程工作分离,即先进行纯粹的设计,再进行工程实现。作者认为,工程师在编码时容易受限于现有代码和技术能力,导致设计缺乏创造性。而将设计与工程分离,可以让工程师跳出思维定式,设计出更优秀的产品。作者还分享了具体的实践方法,例如离开工作站、寻找新的环境、手绘设计稿等。
本文介绍了TLA+的基础数学原理,以及如何用其进行系统建模。文章以银行账户转账为例,逐步讲解如何使用谓词逻辑、时间变量、状态转换等概念描述系统行为。并引入了时间逻辑、Stutter步骤、不变式等关键概念,最终用TLA+语言表达了转账模型和无透支属性。文章还讨论了如何简化模型以提高可验证性,并鼓励读者思考如何扩展模型以支持双向转账。