我是个大嘴巴的人,喜欢不断的告诉别人我的感受和想法。
当我刚写完MiniCMS的产品介绍后,发现吐槽的文字比产品介绍还长很多,使得产品介绍根本不像产品介绍。但是有很多话又不吐不快,所以我把想吐槽的话和产品介绍分开来,各自作为一个独立页面,防止部分潜在用户因为不耐烦我的吐槽而流失,呵呵。
MiniCMS的功能很简单,开发MiniCMS的目的也很简单。
我用WordPress用得腻烦了,我想要一个功能简单,并且容易备份和迁移的个人建站程序,所以我自己开发了一个,并且也为了练练PHP,因为我的PHP一直都是很业余。
但是开发MiniCMS的历程并不像它的功能那么简单。
几年前,我很幸运的参与并主导开发一个代号为BlogMax的博客程序。那时的我对产品缺乏理解,单纯的以为有好的技术就可以出好的产品。我对产品的肤浅理解最后导致了这个项目以停止开发而告终。
随后的几年,我都在从事互联网相关的产品技术研发工作,虽然不直接参与产品策划工作,但是与各种产品打交道久了,慢慢的也开始懂得从技术以外的角度去“鉴别”产品。
慢慢的,我发觉好产品是有共性的,这种共性是没有领域区别的。
一份美食、一张好照片、一段好程序、一首好歌、一部好电影、一个好的互联网产品,它们之间都有共同的“味道”,那就是人文。
而乔布斯通过苹果的产品,更是一再的向世人证明,人文与技术相结合的力量是多么巨大。
于是我再次开始策划开发一个博客程序。
但是做着做着,我发现我根本就是在做另外一个WordPress。跟别人做同样的事情有什么意义呢?如果不跳出别人的思维方式,找到自己的真正方向,那开发这个产品根本没有意义。
这样的过程经历了2 - 3次,每当我有一些空闲时间的时候,我就会开始尝试,然后放弃,再尝试,再放弃。
为什么不懂任何美工的我,直接在服务器上的命令行界面用VI手写HTML和CSS,可以做出一套小清新的界面呢?
因为我已经做过很多次尝试了,以至于我爱人看到我在做MiniCMS的时候就说:“你又在做这个啊。”。
做MiniCMS和上一次尝试大概隔了一年多。这一年多我都忙于开发公司的产品,忙结婚,忙产品上线,忙到处救火,这一年真的非常非常的忙,以至于忘记了很多事情,而有时候能忘记是最难得。
这次,当我再次做博客程序的时候,我已经忘记我要做一个产品了。这次的动机变得很单纯,我想把自己的博客整得好用一些,让我可以为我平时做的一些项目创建独立页面,并且又可以写写日志和文章,这是发自内心的需要,我没有太多时间做太复杂的功能,我只想早点做完早点能用上。
但是,刚开始做MiniCMS我一样又遇到复制WordPress的问题。我设计完第一版的后台界面的时候,我发现完全是另一个WordPress嘛,让我纠结的是,好像每个功能都是必须的。
我把界面发给我弟看,把我的苦恼告诉他,他说:“有时候做减法比做加法难。”
我想一想,的确是如此。做加法,只需简单的借鉴模仿别人的产品,而做减法,必须认清自己要做的是什么样的产品。
我提醒自己,我一开始只是想做一个自己够用的程序,不是想做一个大而通用的程序。而这个程序顺便满足一些跟我一样的个人站长的需求,我们这些人需要的不是一个带三温暖和三百六十度海景的超豪华办公室,我们只是需要一个地方能让人静下来记录和整理想法。
于是我开始砍功能。
最先砍掉的是用户管理功能。因为我的网站只有我一个人在使用,这功能我从来没用过。
接着砍掉的是主题和插件。我想,如果需要什么特定的功能或界面,直接拿代码改就是了,而且作为一个小众的建站程序,不可能有很多人,甚至不可能有别人为它制作主题和插件,做这两个功能岂不是自作多情。
然后我又砍掉了分类功能。因为用WordPress期间,我经常纠结于如何分类和贴标签,分类的树状结构也让人煞费苦心。索性只留下最随意的标签功能,能按标签索引文章就行了,网站的层级结构就交给页面系统。
在砍掉功能的过程中我慢慢的找到感觉,最后我总结出一点:创造内容和展现内容是个人CMS的核心功能,凡是与核心功能无关的,或者分散用户使用核心功能的注意力的,都应该砍掉。
最后我还决定不开发评论功能,因为我自己没用到,而且也没什么人写评论。并且有Disqus这样的第三方评论系统可以提供评论功能,无需把评论内置到MiniCMS中,这样可以让MiniCMS更简洁。
最后得到的MiniCMS后台很简单,只有三个标签页,分别是”文章“、”页面“、”设置“。
我用WordPress的时候有一点觉得特别不方便,就是备份网站。
网站的数据和文件是相关的,如果用数据库的话只能导出SQL文件,并不能同文件一起备份。而且还原数据库时还经常受到各种限制或遇到编码问题。
于是,我把MiniCMS设计成只需要PHP就可以运行,不需要数据库的支持。
对程序来说,这是变复杂了,因为要自己用文件组织数据又要保证效率。但是对用户来说这是变简单了,易于安装,易于备份。
我希望用户把MiniCMS上传到服务器就可以开始使用,备份网站只需要备份整个网站的文件夹就行了。
当完成MiniCMS的总体功能以后,我做的第一件事就是把自己几年来的博客文章整理复制到新的程序中。
没有任何多余功能的MiniCMS用起来果然高效许多。
我回想使用WordPress的感受,再对比使用MiniCMS的感受。我发现,正是由于WordPress的目标是做一个极度通用的建站程序,使得用户在为了达到某个目的的适合没办法以最佳路径达到,而必须走折中路线。
再回想曾经参与开发的产品以及用过的各种产品,我总结出一点:追求产品的通用化,会使得每个需求都没办法以最佳的方式满足,因为你要在诸多的需求之间妥协和平衡,最后得到的只能是一个平庸的产品。
其实在程序方面我很早就发现同样的规律,好的程序员总是在最求代码更通用的过程中不断进步成长,但是追求到了痴迷状态就会产生过度设计的东西,不必要的程序通用性反而带来很多副作用,所以我经常说:“通用往往就是统统不好用”。
简单的功能让用户专注于创造,好产品应该像《道德经》里说的:“上善若水,水善,利万物而不争”
简单的功能让开发者专注于解决核心需求,简单的产品不是为了简单而简单,而是清楚的知道用户的核心需求,并专注于解决核心需求而简单。
保持简单,保持专注,这就是我在开发MiniCMS的过程中学到的。
作者:达达
文章来源:1234nocom