想想科学史上的伟大时刻是很有趣的,尤其是那些有令人难忘的轶事的时刻。在公元前3世纪,一个赤裸的阿基米德在城市街道上奔跑,尖叫着尤里卡,因为他发现了如何测量不规则固体的体积。在1600年代,一个致命的苹果bonks伊萨克牛顿的头,使他吐出引力理论。在20世纪00年代初中,另一位物理学家坐在那里,思考宇宙,当pops E = MC ^ 2时。
这些故事都有两个共同的线索: 它们非常引人注目,完全是伪造的。因此,他们制作了伟大的迪士尼电影,但没有那么伟大的纪录片。重点是,作为人类,我们喜欢 “尤里卡时刻” 的故事和闪电般的灵感,这比准备,稳定的工作以及在2,943次失败的尝试之后正确进行2,944次尝试的故事要好得多。
但它不仅仅是欣赏前一种类型的故事。我们实际上制造它们。也许最著名的例子是史蒂夫·乔布斯 (Steve jobs) 的传奇人物,“哦,是的,还有一件事” 在一些新产品或服务发布之前。乔布斯和苹果是 “帽子里的兔子” 营销大师,他们透露了一些迄今为止一直保密的产品,就好像这是国家机密一样。所做的一切都是为了创造大揭露的魔力 — 一种幻觉,认为某个问题的解决方案只是凭空出现的。
不切实际的期望
有了这个想法背后的所有文化动力,我们很容易将其内化。我们很容易看到这些关于科学和产品进步的民间故事,并假设没有想法或软件从我们这里掉下来,完全形成和完整,就构成了失败。我们怎么了?为什么我们不能只写一个端点,考虑到安全性,适当的API设计,向后兼容性等?我们是专业人士,对吧?我们怎么会失败呢?
你可能认为这里最糟糕的结果是 “失败” 和周围的不安全感。但我认为情况根本不是这样。就像那些历史科学家的流行故事是不现实的,就像苹果没有挥动魔杖和眨眼的iPod Nano一样,没有程序员认为一切都通过,编码,并得到它从一开始就正确和防弹。根本不会发生。
瘫痪分析
因此,这里最糟糕的问题不是 “失败”,因为没有失败。不完全是.这里最糟糕的问题是当你陷入这种心态的痛苦时,你往往会面临分析的瘫痪。你担心你会忘记一些事情,犯了一个错误,或者朝着错误的方向前进。相反,你坐。想想。没完没了地考虑你的选择,什么都不做。这就是问题所在.
我敢肯定,您可能会在internet上找到很多文章,建议通过分析解决瘫痪的6个问题。我不会用类似的方式对待你。相反,我会提供一个修复。解决小问题。
进度通过缩小
构建具有安全性,规模,向后兼容性等的服务端点是一堆问题,而且没有一个问题特别小。你知道什么是小问题吗?(假设您正在使用Visual Studio) 为您的项目创建Visual Studio解决方案是一个小问题。添加一个Web API项目 (或任何) 的解决方案是一个小问题。添加单个控制器方法并向其路由GET请求是一个小问题。在运行时进入调试器中的方法是一个小问题。返回一个JSON “Hello World” 是一个小问题。
如果你把这些组合成一个列表,你可以想象每一个旁边有一个概念性的复选标记。
- 生成解决方案文件。
- 添加项目。
- 添加控制器。
- 在运行时使用GET请求命中控制器。
- 从控制器返回JSON。
没有担心方面,身份验证,以前的版本,或其他任何东西。只有一个构建块列表,这些构建块相当容易执行,相当容易验证,并且对于您的项目是绝对需要的。
这里的想法是要动起来-无忧无虑地建立动力并继续前进。这种方法有两个关键的考虑因素,它们相互平衡。它们也按重要性排序。
- 不要让自己陷入困境-选择一个需要解决的小问题并解决它。
- 尽最大努力以非限制性的方式解决您的问题。
第一个是最重要的,因为你收集薪水是为了做事,而不是什么都不做。或者,为了减少对此的反感,必须取得进展。第二项是重要的,但是次要的。你最好以不会在以后咬你的方式取得进展。
对于这里相互作用的一个例子,考虑一下我提到的一个方面 — 比如说安全性。在当前待办事项列表上的一系列问题中,没有提到安全性。现在这不是你的问题 — 你稍后会解决这个问题,当安全的第一步成为你的问题时。但是,这并不意味着你应该做一些迟钝的事情来解决你的问题,或者你应该做一些你知道会更难实现安全性的事情。
对我来说,各种风格的测试驱动开发 (TDD) 是我实现这一目标的机制。我当然建议试一试,但无论如何,这不是唯一的方法。只要你总是有一种方法来保持一个小的可实现的任务在你面前,并防止拍摄自己的脚,你的方法应该工作。
关键是要继续通过您的清单,划掉项目,并获得小的胜利。你通过构思和解决小问题来做到这一点。如果你这样做,你可能永远不会成为迪士尼阿基米德或爱因斯坦,但你不必在下一次绩效评估期间拉史蒂夫·乔布斯魔术来确保加薪。你已经在包里了。