由产品方案设计引申算法遐思

昨天在思考一个关于帐号登录流程的问题,如何设计登录流程才能保证多端帐号数据打通,同时能兼容多种登录方式。

这个一个技术方案和产品方案深度结合的案例,产品需懂技术上的实现,同时更需要懂得用户端需要什么,最后将两者体现在帐号登录的业务流程中。

产品端的思考维度自然是当前用户有哪些场景,是否都需要支持,以及历史用户如何兼容等问题;

然后我遇到一个新的问题,过去只讨论是否需要做,有哪些情况需要做。而面对登录流程问题,发现还需要考虑如何设计登录流程。这个流程更偏技术思维。不仅要流程走通,还要考虑是否为最优解。因为当我把过去、现在及未来可能的产品扩展考虑在内后,出现了4个终端,两种登录方式,7个不同字段,以及历史用户的兼容问题。及时不考虑未来更多的扩展,也存在80种情况,如何在登录流程中校验登录,假设真的都要实现,那登录流程如何才能降低复杂度,实现最有的登录流程呢?

这让我想起了学生时候的没有深入研究的算法设计,算法设计追求的是用最简单的算法解决最复杂的问题。复杂度包括算法的空间复杂度、算法的时间复杂度。两者反应的是程序的占用空间和响应时间

冒泡排序算法、二分查找法、动态规划。。。

动态规划尤为深刻,因为当时遇到这类算法题,一些解法通过动态规划就很牛逼。几行简洁的代码就搞定。但当时没有深入研究,因为实在没打算往这方向发展,也就没搞明白。今天不知为啥就想回去看看当初的牛逼算法的思想,是否能解答一些目前遇到的产品设计上的复杂问题。例如登录流程的问题。然后,我把多年前未搞懂的动态规划算法搞懂了。

得出以下结论:

1、算法本质还是计算机按一定的规则进行运算,得出结果。

2、算法的思想灵魂还是抽象问题,建模。

3、动态规划算法作为规则的一种,是对一类问题状态根据不同选择会发生动态变化,且问题复杂度很高的问题的抽象建模。

4、产品设计和算法设计的相似之处是:通过抽象问题的本质,找到(最优的)解决问题的方式。

5、 产品设计和算法设计的 不同之处则是:

产品设计具有主观性,取决于产品经理对用户的认知,不同产品可能会有自己认为的最优决策,怎么算最优,如何验证最优,也许都没有标准答案

算法设计则反过来,具有客观性;只要抽象出来的解题模型是对的,会有结果输出。空间复杂度是多少,时间复杂度是多少

所以做产品设计难吗?也许难,难在对用户本质的理解

做技术难吗?也许难,难在对性能的追求,对严谨性的追求

这也正是这两个职业所存在的价值,不变的是对问题本质的思考,在各自领域创造更大的价值。

你可能感兴趣的:(由产品方案设计引申算法遐思)