我是個大嘴巴的人,喜歡不斷的告訴別人我的感受和想法。
當我剛寫完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的過程中學到的。