感到无助或卡住? TDD可以帮助您实现目标

卡住卡住卡住

有几个人将失败当作学习和做事更好的手段。

迪尔伯特漫画的创作者斯科特·亚当斯(Scott Adams)写了一本书,名为《 如何在几乎所有事物上失败并仍然赢大》

纽约客已经写了关于它的文章。

《经济学人》也对此进行了报道。

这样做的想法是,您尝试实现大目标的一小部分,并获得快速反馈。 与其将所有内容都打包成一个大的命中或未命中的目标,不如将它分解成小块。 每件作品都可以成功或失败。 快速反馈可以帮助您从更大的目标中学到很多东西。

通过打破目标,您最终会浪费更少的时间。 您不会陷入浪费大量时间的兔子洞。 这个想法不是很好,应该停止/更改,或者有一种更好的方法可以实现它。

在深入探讨之前,我想解释一下TDD(测试驱动的开发)如何帮助我接受了这个想法。

这是我的第一份工作。 我们开发了电信设备(包括硬件和软件),可以帮助人们使用不同的技术(例如DSL,GPON等)将人们连接到Internet。

该公司当时(当时)非常擅长为软件开发人员提供培训,以帮助他们提高自身的技能。 这些会议之一是在TDD上进行的。

一位讲师向我们介绍了一些带有#define的C ++代码,这些代码注释掉了测试用例。 我们将首先移动#define,以便运行单元测试。 它会失败。 这是因为源代码未实现某些内容。

我匆忙实现了新功能,然后观看了测试通过。

关于TDD的最大的令人惊讶的事情是您获得的快速反馈。

而您可能必须编译一些巨大的代码,然后将其加载到系统中,然后对它进行手动测试,这件事在几秒钟内即可运行并验证。

来自……的世界

  • 10至20分钟的编译时间(对于不干净的版本,则为3至4分钟的编译时间)
  • 5分钟加载到嵌入式产品上
  • 将代码加载到板上后,启动过程需要2至3分钟

这是革命性的。 无需等待10分钟左右(不干净的版本)来测试我的代码,我可以在几秒钟内对其进行测试。 我的生产力飞速增长。

火箭火箭火箭

随着时间的流逝,我开始越来越多地看到这种模式。 不仅在软件中,而且在我的生活中。

如果我可以快速测试一下……
如果我不能快速失败而不是花数月时间才能通过验证……
如果我能比完成整个过程早点学到更多东西,那么……

我走得更远。 我节省了很多时间,最终得到了更好的结果。 这不仅适用于代码,还适用于我的所有目标。

让我做个场景…

您有这个巨大的目标。 我们将从我自己的一个开始。 我想在工作以外赚钱。 收入并不能迫使我完全依赖雇主。 我已经尝试了很长时间通过博客来做到这一点。

梦想梦想梦想

不幸的是,我失败了很多次。 我对我的观众可能会喜欢的东西抱有如此宏大的想法。

我写博客。 很长一段时间of。

几个月后,我放弃了。

我不知道您以前是否经历过此过程。 它不一定要写博客,但是可以实现任何目标。 您尝试,尝试,并且尝试了很长时间。 最终,您意识到自己没有进步并且放弃了。

这糟透了!!!

伤心伤心伤心

这个目标或其他类似的大目标(减轻体重,开始锻炼,早起……等等)的问题是,我们没有很好的方法来测试和验证我们在整个过程中的进展。

取而代之的是,我们可能需要花费大量时间来弄清楚如何进行测试并获得关于我们所做工作的快速反馈。

在博客方面,我最近加入了一个课程,该课程将使我成为一个越来越好得多的博客作者。 它还将帮助我通过博客获利。

它显示如何做的第一件事是通过使用某些指标来验证您的想法。

甚至在没有博客(无需设置WordPress)或购买域之前都会进行此验证。 您在另一个网站的页面上发布以验证或完善您的想法。

无论您的目标是什么,这都是您需要成功才能获得的快速反馈。

如果您的反馈仅在数周,数月或数年之后发生,则表明您可能会遭受巨大的失败。

不要让这种事情发生!

您可以有所不同! 您可以实现自己的目标! 只是略有不同地计划您的成功。

如果你不打网球,那就和我一起忍受。 这个例子将非常清楚地说明如何使用TDD来实现目标。

我在USTA网球联赛中打3.0人。 我想进步,成为更好的球员。 具体来说,我想成为3.5级玩家(下一个级别)。

网球网球网球

我可以极大地改善自己的比赛的一种方法是提高我的发球一致性。 为了改进遵循TDD方法的情况,我需要先将其分解为小块。 因此,我将尝试这样做。

首先是第一件事:我需要与练习保持一致。 我这个赛季的第一场比赛输了,主要是因为我已经生锈了。 我的第二盘比赛比第一盘要好得多,因为那时我已经热身了。

  • 因此,一个小目标可能是每周至少出庭3次。

上场之后,我该如何提高服务水平? 好吧,我不打算尝试大量发球(尽管不一致,我可以这样做),我需要专注于慢动作的适当形式。 因此,也许我的下一个目标可以是使用适当的形式连续击中10份。 (我倾向于在第二发时采用不同的形式,较弱的发球……这并不理想。在第一发和第二发中使用相同的动作会很有帮助。)

  • 另一个小目标是服务箱内连续10份。

连续获得10个之后,我就可以开始提供更快的服务了。 如何快速追踪? 我不太确定……所以这是我必须发挥创造力的地方。 我可以开始数一两秒,然后慢慢发球落在网的另一侧。 更快的发球将在更少(几分之一秒)秒内降落。

  • Land 10在服务箱中连续服务,服务速度更快。

等等。

因此,要分解更一致的比赛,我有3个快速反馈目标,可以告诉我我的进度:

  1. 每周在球场上击球3次。
  2. 地10使用适当的形式(缓慢)连续服务。
  3. 地10使用适当的形式(快速)连续服务。

遵循这个想法,如果我每周的练习都不一致,那就根本没有必要练习练习。 如果失败了,那么在专注于正确的服务技巧之前,我需要进行更改。

现在由您决定。 遵循我用来帮助您实现目标并摆脱困境的相同过程。

  • 将您的大目标分解成可以快速测试的小块。
  • 有时,需要大量的创造力来确定如何进行测试。 但是,这很关键-您必须能够进行测试,并快速进行测试。
  • 在继续做更大的事情之前,请确保通过一项测试。

通过分解目标并快速测试它们,可以确保您不会失败并失败。 当您了解更多信息并接近目标时,便可以快速更改课程。

说得通?

大! 现在去实现目标!