追求高效的软件开发:先运行,再完善,最后加速
我坚信 Kent Beck 提出的软件开发策略:先让软件运行起来,然后使之正确无误,最后提升运行速度。在软件行业,这种思路非常常见。我的理解是,我们应先确保最基础的解决方案能够解决当前问题,再考虑进一步的时间投入。
先让它运行
解决问题的方案并非总是完美的。这意味着可能会有较少的测试,性能不佳,甚至是代码写得不够优雅。有时,我们只需要证明问题是可以解决的,即便解决方案不够理想。
例如,在我开发的应用中,处理用户输入或导航时,我经常采用“先让它运行”的方案。我不完全依赖用户输入,而是直接编写我所需要的数据。我的目的是验证在理想情况下,应用是否能够正常工作。如果连这都做不到,那么在更复杂的边缘情况下,解决方案就更没有希望了。这时,我会专注于尝试其他方案,直到找到正确的解决方法。
将处于“先让它运行”阶段的代码部署到生产环境是风险很大的,我们都应该尽量避免这样做。如果你有一个持续集成(CI)系统来运行所有的测试,那么尝试这种“先让它运行”的代码也是可行的(最好在单独的分支上进行)。但是,测试这些代码在全面的测试套件中的表现是非常重要的。
再让它正确
当我们确认问题可以通过“先让它运行”的方案得到解决后,下一步就是让方案变得正确。这包括进行全面的测试、使用适当的语法、遵循良好的命名规范,并确保代码的可扩展性。
我们需要去除所有硬编码的数据,并考虑各种边缘情况。围绕代码进行全面的测试至关重要。在这一阶段,不要轻易相信任何测试,除非你亲眼看到测试因为正确的原因而失败。
到了“让它正确”的阶段末尾,我们的代码应该非常稳固。在向用户展示这些代码时,我们应该对其不会引入任何错误感到自信。到这一步,解决方案应该已经准备好投入生产使用了。
最后让它快速
最具挑战性的是“让它快速”阶段。在软件开发领域,我们往往缺乏足够的时间和资源来进行这方面的尝试。我们刚刚将一个经过“让它正确”阶段验证的解决方案部署到了生产环境,它已经为用户带来了价值,但我们还可以使其更优。不过,通常下一个 bug 或新功能的开发会更加紧迫。
假设我们有足够的时间和资源,我们应该不断思考如何重构代码,不断优化我们的解决方案。
“让它快速”听起来像是专注于性能或响应时间。一般人会想,“我怎样才能让代码运行得更快?”但这个阶段不仅仅关注性能。我们还应该考虑如何让代码更易于测试、更具可扩展性,以及如何使代码为用户带来更大的价值。性能固然重要,但这些其他方面同样重要。
有机会进行“让它快速”阶段的优化是一种特权,我们应该尽可能利用这个机会。改进现有代码与编写新代码同等重要。
最终,我们的目标是为用户提供最有价值的软件解决方案。“先运行,再完善,最后加速”的软件开发理念能够帮助我们达成这一目标。它让我们在处理更复杂的边缘情况之前,先选择一个更为简单的问题解决路径。“先运行,再完善,最后加速”为构建出色的代码提供了坚实的基础。
先让它运行,再让它正确,最后让它对用户更有价值。想要了解更多关于快乐路径编程的信息,请阅读我之前的文章《用快乐路径让编程更简单》。