基本思维(1):产品思维—面向需求而非面向技术

        前两天一个朋友微信给我留言,说让我帮忙给他搭建一个高可用的Mysql集群,这让我有点疑惑。因为他并不是做技术的,前一段时间因为想自己做一个公众号,学了些前端知识,现在又搞起后端来了?还有就可能他的公众号做得太好,用户量上来了,需要一个高并发高可用的数据库。带着好奇,我拨通了他的电话......

        原来是他的公众号有一个支付功能,他想知道那些人充了钱,所以想把数据存下来。

        我说:你做好后每天大概多少人充钱?

        他说:做得好的话可能每天能有十几二十个,做的不好的话可能没有。

        我继续问:那流水呢?

        他说:估计几百块吧。

        作为一个负责人的开发,抱着充分了解用户需求的态度,我继续问:那这个充值记录除了展示以外,还有其他功能吗?

        他想了想,回答说:没有,我只是想应用的数据不都要用数据库存起来吗?我又百度了下,知道为了保证高可用,都要做成集群,但我又不会,所以想让你帮下忙。他顿了一会,似乎想又到了什么:我可能也不会看,因为看了也没用,我也不知道谁是谁。

        到这里我算是彻底明白他的需求了。其实他的想法也不能算是不对,应用运行的数据确实需要存起来,但是,他似乎钻到技术的牛角尖里了。存数据不一定都要用关系型数据库,更不一定上来就搭分布式集群,这是和你的需求密切相关的。

 技术是手段,产品需求是目的。

       所有的技术都是为了满足需求而设计和发明的,除非是科研性质的,一般商业性的技术的发展都是市场需求推动的。我们在设计产品时,首先考虑的是产品的需求,再从性能、成本、可操作性、需求的本质等决定用什么技术。而不是因为某个技术比较火,强行用起来,人为的“设计”出需求。手段可以选,需求永远不能变。

        技术很多时候本身也是一个产品。

        所有的中间件他既是一个技术的载体,本身也是一个产品。他有明确的设计目标,有解决问题的范围,有适用的场景,有自己的产品特性。当你想用某项技术时,首先要清楚该项技术产品的“说明书”,明白他是干嘛的,什么场景下适合用。

        针对该童鞋的求助,我最后给出的答案是:你根本不用数据库,你就写一个日志文件,把充值记录记下来,等你产品做大了再说。关系型数据库,或者是数据库集群是一个好东西,是一个好产品,但目前并不适合他。

        聊到这里,我突然想起来当时自学java时,看到java分为javaEE,javaSE,javaME三个体系,我一直不能理解,什么叫“三个体系”?java不就是java吗,不就那一套语法吗?其实这三套体系就是java这个“大品牌”下的三个“产品”,就像丰田旗下的汉兰达、凯美瑞、普拉多一样,他们用的基础技术都差不多,但是根据不同的用户场景提供不同的特性。他们各自有各自的产品发展路线,当然,也有自己不同的现状和结局。再扩展一下,java语言本身也是一个产品,或者说一个商品,特别是被Oracle收购后,商品属性越发明显。

你可能感兴趣的:(基本思维(1):产品思维—面向需求而非面向技术)