准备写一个软件

最近在想着财务管理类的事情,想着做一个记账本类的小app,看了一下比较多人用的几个,发觉都没太大的特色,而且杂乱的东西太多,广告也不少,重点还是那种让你投钱购买它什么理财产品的模块。

发觉这个社会其实比较浮躁,造出来的产品也是比较浮躁,很多产品人说,做的产品要将客户放第一位的,将客户体验放第一位,其实很多时候,却是将能引导用户花钱放在第一位,想法设法引流、导向,让客户心甘情愿掏钱,导致好的产品不多。当然了,这个社会讲求生存,好的产品吸引用户最后也是要想办法赚钱啊,这也是产品的使命,也是无可厚非的。打造一个好的产品需要时间和金钱,所以很多产品根本来不及真正做一个好产品就要被淘汰了。

看不到好的记账类app,然后就自己构思设计,想法还挺好的,然后自己找了个本子画原型,然后用软件开始设计,做着做着,发觉和自己想象的又出入有点大,可能设计和审美的能力还不足,不过准备以后花时间学一下,设计、画画什么的。

最后不得而还是继续找,还是找到了一款符合心水的一个app,spendee,功能比较集中,分类比较明确,页面简洁,确实是在做一个记账的事情,分享个截图:

最后决定了,基本按照这个app来做一个,然后按照想法修改其中的东西,因为刚开始还是觉得不同模块之间耦合还是比较多,有些东西又重复了,不过总体还是非常不错的app,好了,有空就开始做。

一个例子

        突然想起了一个生活例子,和思维方式很有关系的一个例子。

        早前洗手间的洗手盆的水龙喉开关坏了,我爸买个新的来换,换的时候下面有两个接口,我知道一边进热水口,一边进冷水口,但是我们的配到手洗盆的两个出水口都是接在普通的冷水管上,所以我叫我爸不用装左边的热水进口,装右边的就行了,因为左边装了也是进冷水的。

        用后才发觉,开关把手转到中间的时候下面漏水了,原来是从没有接的热水进口漏出去了。

        想后才发觉,两边联通的才能混合出不同温度的水,所以其实两边可以相通的,所以下面一定要接紧热水进口,不接就会漏出去,再回想一下,难怪以前即使两个冷水出口,也要将热水进口接进去了。

        这是一种思维导向,从进水口出发,理所当然地认为都是冷水,就无需将冷水接到热水进口了,用后才发觉热水进口会是一个bug,所以其实解决一个问题的时候,应该从完成的问题之后的情形出发,去思考它的实际意义,存在价值,再回过头来想如何去做,做什么事情,才能解决这个问题。

        有些启发。

 

 

思维方式

        为了给这个栏目开个头,写了个思维方式的题目,其实是在学习编程语言的过程中想到了一个很著名的递归例子:汉诺塔。

        引用百度关于汉诺塔的故事:“大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。”

        其实生活中的iq题就有这种汉诺塔,就是一个碟子,上面放个杯子,杯子里面放个勺子,在三张桌子之间移动,从一张桌子移动到另一张,大的必须在下面,每次移动一个东西,求移动的最快的方法。

        这个汉诺塔的递归问题,要回想到高中的时候,那时候就是一道求解圆盘数量n,对应的移动次数f(n)之间的一个公式,其实是一个递归的思想。

        记得那时候我问同桌,他是这样跟我解释这道题:你不管有多少个圆盘,你将最底的一块圆盘看成是第二块,然后上面的所有圆盘是一大块,总共只有两块要移动,所以如果要从A柱子移动到C柱子,只需要将上面一大块移到B柱子,然后将底下那块移动C柱子,然后将B柱子那一大块移动C上面,那就完成了。所以对应圆盘数n的移动次数公式是:f(n) = 2*f(n-1)+1

        当然,那时候就是哦一声就说明白了,到最近再想这个问题的时候,我这样想,既然可以将上面的看成一个整体,为什么不能将第一块看成一块,下面的全部看成第二块,然后移动的时候也一样啊,第一块从A柱子移到B柱子,然后将下面整大块移到C柱子,然后将B柱子那一块移到C柱子就行啦,不就可以得出这样的公式咯:f(n) = f(n-1)+2

        然后我带着这个疑问重新问一下我那个高中同学,人家现在已是数学专业的在留学读博的学生了,对于他来说easy job的问题立刻给我解疑了。

        因为当你移动了最后一块到C柱子的时候,其实剩下的在B柱子那一大块实质不是一块,还是要再分为最下面一块,和上面的一大块来移动,所以其实你将B柱子的那大块移动到C柱子,就要借助A柱子了。因为最大块在最下面,所以其实你一开始将A柱子最底下的那最大块的移动到C柱子,就可以想象为它消失了,下一个任务就是将B柱子那一大块移动到C柱子了,方法就和前面一样了,借助A柱子移动到C柱子了,这就是递归思想了。如果像我的那个错误的想法那样,就会出现大块的压着小块的情况了,当然是不行的。

        所以其实我们抽象为一大块的时候,你有没有想过下一步,当你想到下一步连贯下去的动作,并形成常规的做法,那才是递归。

        说到底其实要回到自己说的主题,思维方式。我们很多时候的思维方式是一步到位,一步求成,其实很多时候是需要一步一步下去,认真想想一步之后的一步,才能验证自己的猜测。

        发觉说得有点乱,不过,思维方式确实决定我们解决问题的想法,和生活中的处理事情的方式,这个是很重要的。