我对又大又杂的APP一点兴趣也没有

朋友拜托我做一个新的网络应用,是要基于小程序进行开发。但是我看了一下原型设计,又大又杂。本来只是一个很小的网络服务,非要做的好像一个门户、好像一个社区一样,臃肿无比,这是令我反感且毫无兴趣的。 如果不是因为抹不开面子,我是一定不会做这样的门户级应用的。原因在于:你做的像个门户,却没有足够多的内容支撑其内容,有没有足够的技术支撑其底层,最后就一定会烂尾。即便有足够的内容和技术将它强行的承托起来,但这样的门户感给人的感觉就是专业和庞大,这种“装”出来的庞大,如果没有真实的用户基础,依然会在运营过程中渐渐的枯萎、最终无疾而终。 所以这样的项目基本上是三岁看老,一眼就能看到头的。 我更喜欢小巧的、纯粹的、单一的服务,一个事情就是一个功能,一个功能就是一个应用。但这样形态的产品现在好像不吃香,至少在我生活的地方不吃香,大家都更喜欢大而全。 花里胡哨的华丽,是他们更喜欢的,在他们看来这才叫“应用”。这样的应用我曾经不知道做过多少,但这么多年下来,一个活着都没有,导致我在自己的“成功案例”里面完全是空白的。有的时候甲方会问我为什么没有成功案例,我怎么回答呢?全都死掉了?如果这样回答,甲方一定会觉得我做的不行、或者我骗人其实从来没有做过,所以最终谈项目的时候会荒掉。 如此陷入的就是恶性循环,累死累活不说,还总也没有拿得出手的东西,没有成功的作品。但事实就是这样。 这次朋友找到我,我就和他说的十分明白,一定要小而精,一定要纯粹。他答应的好好的,结果今天原型图出来给到我,我头就大了。这那里是小而精了? 产品原型规划中,仅仅APP端的业务页面就有173个,还不计后台、接口层,只是单纯的前端数据展现页面,不是那种可以复用的、而是彼此毫无无用关系的,每个页面都是独立功能的,整整173个不同的数据类型和相关的展现页面!!! 除了慢慢的一屏幕的SNS味道,还有无数的通栏广告位,还有各种点赞与收藏的机制,还有分享,还有开屏广告……这不是小程序,这活生生的又是一个巨大的门户网站啊! 没有办法,只能硬着头皮答应朋友做。2个月之后交工。这个工期其实也十分的扯,因为我们约定的是个“小程序”,所以2个月其实时间上都比较长了。但实际上他最终要的东西是个门户,我内心估计至少需要4-6个月才能有个模样。可是当我说出需要3个月的时候(这还是我咬着牙说出来的),朋友已经瞠目结舌,问为什么一个“小程序”需要那么长的时间? 这种尴尬的时刻,再多的解释其实都没有意义,解释的多了反而徒增烦恼,所以我就垂头丧气的告诉他那就加加班、2个月做出来吧。其实看得出来,当他听到“2个月”时,还是觉得太久了,但朋友终究没有再压缩时间,只是说尽量赶。我心想:这样赶出来的,能是什么狗熊样子呢? 翻翻自己曾经做过的项目,拿一个差不多的出来给他改吧,反正这个项目我也不看好。如果真的能够(几乎不可能)做出一些客户和流量来,我再对细节进行返工就是了。但我现在的估计是——指不定又是那个天使倒霉蛋儿,要亏钱了。

自己动手写个小应用

一、放弃wxWidgets 之前尝试用wxWidgets框架写应用,后来越写越不顺手,所以当代码到达3000行的时候,我就动摇了。想了2-3天,不断地摇摆,最终决定放弃使用wxWidgets,自己实现。而且不借助已有的GUI框架,自己实现用到的UI组件。 因为我想实现的应用程序本身并不复杂,用到的UI组件也不会很多,所以实现难度估计应该不大。实际上经过这几天的初步尝试,感觉也还是非常良好的。 自己实现组件,主要就是对渲染和交互的控制,而且我只需要不到10个基础组件,所以现在代码量2000行左右,已经有了一个大概的模样,预计再有一周左右就可以粗糙的实现出来了。 自己动手实现这些组件更大的好处是控制权限更高,例如事件的传递机制,我可以按照自己的想法进行链式的、广播式的、或者就是定向的传递,十分的灵活。当然这种灵活的前提是建立在良好的封装的基础上的,否则一旦没有及时的进行归纳和封装,就有可能将代码写乱、写花,所以每一个新机能的增加,都要对所有已实现的部分进行一边重构、归纳,这是比较花时间的事情。 不过这样做也有好处,就是一旦当前的小工具实现完毕,就拥有了一个简陋的Simple GUI,这样可以为今后再实现其他软件进行复用,持续做下去,不仅能够丰富自己的基础代码库,也能令后期的开发越来越便捷。 如此看来,现在经历的“枯燥”也许是有价值的,只不过它需要时间去验证、还需要一定的坚持才能见到回报。 二、初步的实现和初步的想法 既然已经决定自己从底层一点点慢慢写起,我也就不急于将最终的工具实现出来了,至少不基于做出一个“公众版”出来,只要自己能先用起来也就可以了。 而且自己实现就意味着要在一张画布上自己实现每一个控件和事件,也就无所谓用什么引擎。基本上能用的窗口管理器+图像引擎都可以拿来使用。这样想来,OpenGL应该是首选、其次SDL2、再次DirectX12。既然无所谓,所以我索性就三种引擎都试一试,都写了一写,最终哪一套的实现效果好并且开发难度小,最终的“公众版本”就基于哪一套继续开发就好了。 至于这个工具的目标平台,其实最初我考虑就是做在Windows系统上,虽然当初选择wxWidgets也有一定的跨平台考虑,但并不迫切。可既然如今决定“在一张白纸上”实现自己的基础控件,也就是说理论上它的跨平台移植能力应该也是有的,所以等到做公众版的时候,可以考虑多平台一起实现出来。 不过上面这些也只是初步的想法、幻想。我甚至这样做的工作量将是巨大的,没有3、5个月,估计连个影子都看不到。所以还是要坚持每天写上一写,才有可能将这个美好的“幻想”尽可能想着“现实”实现出来。