当从头开始构建产品时,您需要用有限的资源一次做很多困难的事情。标准的建议是采取迭代的方法,确定事情的优先顺序,然后快速循环,找到足够好的解决方案,在进行下一件事情之前将事情向前推进。
这是个好建议,但在实践中很难执行。通常,当你探索问题的解决方案时,即使是简单的问题,问题本身也比你预期的要复杂得多。你会发现子问题和切线问题,它们看起来和原始问题一样重要。你很容易偏离正轨,最终陷入你本应迅速找到解决方案的问题中。毕竟,这只是另一件事,你正在考虑它,无论如何你都得在某个时候解决它。为什么不是现在呢?
这个错误我已经犯了很多次了。对于我在迭代过程中发现的新问题,我正努力变得更严格地说不是现在,并避免因为处理可以留到以后的事情而偏离了发货的方向。我想和大家分享我用来做这件事的一个策略,这个策略对我很管用。对于我遇到的每个新问题,我都要问一个简单的问题:从我现在的角度来看,这是一个很好的问题吗?如果是,我就跳过它。如果没有,我会立即处理。
要说明的一个示例是注册功能。比方说我正在着手开发一种新产品。没有注册,就不可能获得任何用户,这是一个问题。从我现在的角度来看,这是一个很好的问题吗?不-我现在没有用户,在注册完成之前无法获得任何用户。前进的唯一途径就是注册。
虽然我正在建立注册,我意识到我可能也需要重置密码功能。如果用户注册了,但随后忘记了密码,那就是一个问题。但从我现在的角度来看,这是一个好问题吗?事实上,是的!我没有用户,但是有这个问题意味着我会有用户,那就太好了。重置密码功能很重要,最终绝对需要,但我可以稍后再做。首先,我应该发送任何一开始就阻碍我获得用户的东西。
总有几层功能是建立在彼此之上的,这个简单的问题提供了一个巧妙的技巧,按照它们什么时候真正有用的顺序对它们进行排序,这样你就可以在更快的迭代中构建和发货该功能,而不是在你预先批量和构建所有东西的时候延迟发货。下次构建时尝试一下。