寫在前面
出于對(duì)產(chǎn)品的執(zhí)念,從去年9月開始,我決定動(dòng)手開發(fā)一款開源產(chǎn)品——TailLog。
這種沖動(dòng)和小時(shí)候肢解電器或撒尿和泥源自一套邏輯——興趣,特長(zhǎng),創(chuàng)造。
從醞釀idea,需求分析,產(chǎn)品設(shè)計(jì),到開發(fā),到去年10月24日第一個(gè)預(yù)覽版上線,以及隨后進(jìn)行的版本迭代,中間又經(jīng)歷停滯,再至今天正式發(fā)布開源版本,終于完成了第一階段的目標(biāo)。
如果不出意外,又會(huì)停滯一些時(shí)間了。

這是我很早就想寫的一篇文章,但幾次下筆都未能完成。主要是想寫的太多,內(nèi)容又七零八散,太過零碎,沒想清楚要表達(dá)哪些主題。
想介紹一些專業(yè)話題,卻發(fā)現(xiàn)自己還不夠?qū)I(yè)。想總結(jié)一些經(jīng)驗(yàn)教訓(xùn),但事無巨細(xì),不一而足。所以我要講述的內(nèi)容即不是教程,也不是結(jié)論,唯一的優(yōu)點(diǎn)是我經(jīng)歷了從0到1的全過程,期間有了一些體會(huì)和思考,這種從零開始的狀態(tài)也恰好代表了很多起步想做產(chǎn)品的想法和疑問,所以我就隨性的聊一聊這個(gè)產(chǎn)品誕生的“心路歷程”。如果對(duì)這些話題感興趣,不妨直接找我直接交流溝通,我會(huì)分享的更多。以后若有機(jī)會(huì),再沉淀吧。
一.
如果被困難打趴下了,那就匍匐前進(jìn)吧
作為程序員,開發(fā)一款產(chǎn)品似乎并非難事,只需要敲敲代碼,實(shí)現(xiàn)需要的功能即可。但這只是狹義的產(chǎn)品開發(fā)。而一款相對(duì)完整的產(chǎn)品開發(fā)過程一般會(huì)包括如下一些關(guān)鍵詞:
idea(痛點(diǎn)),需求,原型,UI,UX,研發(fā),測(cè)試,運(yùn)維,運(yùn)營(yíng)
在成熟的產(chǎn)品公司里,每個(gè)關(guān)鍵詞都可以成為一個(gè)獨(dú)立的職位,由專業(yè)人士專業(yè)完成。每個(gè)關(guān)鍵詞拓展出來都是一門學(xué)問,每門學(xué)問都有很多坑,“坑之大,一人填不下”。
因此,獨(dú)立完成一款“完整”的產(chǎn)品并非易事。hold住全過程,是必須面對(duì)的挑戰(zhàn)。我也希望利用這個(gè)機(jī)會(huì)實(shí)踐和總結(jié)一下這些年所學(xué)所想,發(fā)現(xiàn)彌補(bǔ)一些不足。
另一方面,由于是開源產(chǎn)品,非盈利,利用空閑時(shí)間完成,雖然產(chǎn)品不復(fù)雜但也非一朝一夕之事。沒有收益驅(qū)動(dòng),放棄娛樂時(shí)間,能否堅(jiān)持、自律進(jìn)而完成產(chǎn)品是另一種挑戰(zhàn)。
更何況我是一名傳統(tǒng)的后端開發(fā)人員,主要的編程語(yǔ)言是Java。而這款“應(yīng)用”并非技術(shù)類框架項(xiàng)目,我需要掌握更“全面”的技術(shù)棧,尤其是前端技術(shù),畢竟需要可見可得。所以,我還需要一些額外的“學(xué)習(xí)成本”。
接下來的內(nèi)容不會(huì)介紹實(shí)現(xiàn)產(chǎn)品所使用的編程語(yǔ)言或技術(shù)框架。這些“開發(fā)技能”是我已經(jīng)或比較容易掌握的“工具”。這些“工具”主要提升了開發(fā)效率和質(zhì)量,但做出“更好的,有用的,易用的”產(chǎn)品才是我的目標(biāo)。所以我重點(diǎn)會(huì)聊一聊對(duì)開發(fā)來說,屬于比較薄弱,不擅長(zhǎng)的兩個(gè)話題:
1.idea/需求
2.設(shè)計(jì)/交互
二.
我有一個(gè)程序員,只差一個(gè)好點(diǎn)子了
“我沒有好想法”是很多想做開源項(xiàng)目,但又自認(rèn)為沒有好的點(diǎn)子或項(xiàng)目來分享的開發(fā)者通常會(huì)抱怨的一點(diǎn)。這和想創(chuàng)業(yè),但沒有好項(xiàng)目的情景一樣。我也為此苦惱過,并且至今也沒有特別好的解決方案?!昂命c(diǎn)子”總是可遇不可求。
我也希望做出一個(gè)大受歡迎的產(chǎn)品,但我主動(dòng)降低了這個(gè)目標(biāo)。不是不可能,只是概率太低了,這需要掌握的知識(shí)面和分析問題的能力極強(qiáng),具有良好的商業(yè)感以及一些運(yùn)氣。同時(shí),我也為了防止自己總在想點(diǎn)子,防止由于各種顧慮和期望,結(jié)果停滯在這一階段。
我明白,盡早動(dòng)手,盡早實(shí)現(xiàn)MVP(最簡(jiǎn)化可實(shí)行產(chǎn)品),盡早接觸用戶,由用戶反饋來改進(jìn)產(chǎn)品。
說到“MVP”,這個(gè)詞有必要多提一句。這是我在目前就職公司學(xué)到的第一個(gè),也是最重要的一個(gè)概念。詳細(xì)內(nèi)容強(qiáng)烈推薦讀一讀《精益創(chuàng)業(yè)》這個(gè)本書。
由于一些歷史原因,在思考“做什么”時(shí),我先為自己限定了范圍:
1. 做工具類型的產(chǎn)品
2. 做開發(fā)者相關(guān)的產(chǎn)品
這似乎有些不合常理,理論上應(yīng)該“發(fā)散思維”,“放飛自我”。這就要聊一聊“歷史原因”了。
我有幾個(gè)小伙伴,我們都有一顆“做些什么”的心,經(jīng)常聚在一起“頭腦風(fēng)暴”,“創(chuàng)意無限”。也動(dòng)手做了一些項(xiàng)目,但這些項(xiàng)目最終都半途而廢了。總結(jié)原因可以分成兩類:
1.人員因素:多人異地開發(fā),周期過長(zhǎng),自由開發(fā),約束力較弱,后期惰性。
2.產(chǎn)品因素:需求離我們太遠(yuǎn),為做產(chǎn)品而做產(chǎn)品,認(rèn)同感不足。
第一類是主觀因素,還是有方法克服。但第二類則是根本原因。
我和小伙伴一開始的動(dòng)機(jī)就有待商榷:我們總是為了做產(chǎn)品而做產(chǎn)品,雖然想出了一些自認(rèn)不錯(cuò)的想法,但有很多是我們并不熟悉的領(lǐng)域,只是管中窺豹,無法把握核心需求,沒有經(jīng)驗(yàn),分辨不出需求真?zhèn)危ó?dāng)然有一些方法,如問卷調(diào)研,用戶訪談等,這是產(chǎn)品設(shè)計(jì)和需求分析的內(nèi)容,不展開)。由于我們沒有資源和能力去深入挖掘,所以“臆想”的需求和功能并不能得到廣泛認(rèn)同,成員之間理解程度有偏差,容易產(chǎn)生分歧。最后導(dǎo)致產(chǎn)品形態(tài)、方向模糊,動(dòng)力不足,也就不了了之了。
想法太多,但是不靠譜的想法更多,對(duì)于我們這種“業(yè)余”選手,如果不是鐵了心創(chuàng)業(yè),并且已經(jīng)深入了解某一領(lǐng)域,那么應(yīng)該先考慮從身邊熟悉的事物尋找思路。
于是,我開始關(guān)注我擅長(zhǎng)的領(lǐng)域——開發(fā)——我是開發(fā),所以我的需求很有可能就是大部分開發(fā)人員的需求——畢竟“察己知人”(《呂氏春秋——察今》)。
如果留意身邊的問題,并積極思考總結(jié),那么總會(huì)發(fā)現(xiàn)很多“至今沒有很好解決方案的問題”。
例如,我想起了工作中常會(huì)遇到的一段對(duì)話:
測(cè)試:“XX,剛才測(cè)試客戶模塊的郵件發(fā)送功能,但沒有收到郵件,不確定是客戶程序還是郵件程序出了問題,要不你先看確認(rèn)下?先提個(gè)Bug放你這兒了?!?/p>
開發(fā):“其實(shí)你可以先看下郵件程序的日志,看有沒有收到請(qǐng)求發(fā)送郵件的日志,或者可以看到有沒有去請(qǐng)求第三方SMTP接口的日志。就能明確是誰(shuí)的程序問題了”
測(cè)試:“你們機(jī)器環(huán)境太多,程序也多,日志路徑又深,查起來很麻煩,要執(zhí)行好多操作。還是你看下吧,你了解你的程序?!?/p>
開發(fā):“······,嗯,主要是查起來麻煩,如果有個(gè)工具,配置好這些服務(wù)器和日志路徑,一目了然,鼠標(biāo)一點(diǎn)就可以查看日志就方便多了?!?/p>
測(cè)試:“是的,但那你也就失去和我聊天的機(jī)會(huì)了~哈哈?!?/p>
于是,一個(gè)idea(痛點(diǎn))產(chǎn)生了。開發(fā),調(diào)試,測(cè)試過程中需要頻繁的查看分析日志,但打開日志的過程總是包含相似的步驟和操作。而這些操作是核心工作中非必要的。那么是否可以簡(jiǎn)化操作?自動(dòng)化過程?是否有一些好用的工具解決這些問題?
不滿就是問題,抱怨就是機(jī)會(huì)。我為了“偷懶”,決定開發(fā)這款工具。
三.
產(chǎn)品經(jīng)理失蹤了,程序員第一時(shí)間到警察局報(bào)警。?
警察對(duì)程序員說:你先冷靜一下,你這樣一直笑沒辦法做筆錄
想好了“做什么”,接下來就要考慮“怎么做”了。這時(shí)我要變身為“產(chǎn)品經(jīng)理”。
這令我很興奮,終于可以做我最想做的工作了,如果不寫程序,我一定選擇成為產(chǎn)品經(jīng)理。
這里先聊一個(gè)題外話:我們經(jīng)常會(huì)說“做開發(fā),要有產(chǎn)品思維。做產(chǎn)品經(jīng)理,要懂一些開發(fā)?!?這里不去爭(zhēng)辯這個(gè)觀點(diǎn)對(duì)錯(cuò),我比較想強(qiáng)調(diào)這句話所表達(dá)出的這個(gè)“態(tài)度”。
這個(gè)觀點(diǎn)其實(shí)是告訴我們應(yīng)該不斷拓展領(lǐng)域知識(shí),學(xué)會(huì)換位思考,也許并不要求某一方精通領(lǐng)一方的知識(shí)技能,而是應(yīng)主動(dòng)學(xué)習(xí)對(duì)方的一些思路,了解一些原則,熟悉做事的方法,這將有助于自身工作的專業(yè)性?!扒秩胧健睂W(xué)習(xí)能起到相輔相成的作用。比如一個(gè)設(shè)計(jì)師如果了解一些html和css,那么就不會(huì)設(shè)計(jì)一些特別炫酷的動(dòng)效,陰影讓開發(fā)人員罵街。如果開發(fā)人員擁有良好的產(chǎn)品思維,那么就能更好理解產(chǎn)品口中的需求,理解用戶的痛點(diǎn),進(jìn)而提高溝通效率,減少實(shí)現(xiàn)誤差,設(shè)計(jì)更恰當(dāng)?shù)某绦蚝图軜?gòu)來解決問題。
關(guān)于產(chǎn)品思維,可以參考這篇文章《新人如何培養(yǎng)自己的產(chǎn)品思維》
回到產(chǎn)品本身。在這里,我確實(shí)是把自己當(dāng)成產(chǎn)品經(jīng)理來工作的。工作內(nèi)容包括但不僅限于如下幾點(diǎn):
1.需求分析
2.競(jìng)品調(diào)研
3.需求設(shè)計(jì)
4.原型設(shè)計(jì)
5.交互設(shè)計(jì)

這些工作并非傳統(tǒng)開發(fā)人員所擅長(zhǎng),但我都努力去完成。我認(rèn)為這是必要的,這些過程是比開發(fā)更為重要的工作。所謂“低頭走路不忘抬頭看路”,方向?qū)α瞬拍苓_(dá)成目標(biāo),否則越努力,偏差越大。
通過分析、研究、設(shè)計(jì),能更好的理解產(chǎn)品,規(guī)劃產(chǎn)品,實(shí)現(xiàn)有價(jià)值的產(chǎn)品。
這些技能和知識(shí)可以有很多方式學(xué)習(xí)。我本身對(duì)這些很感興趣,就自學(xué)了很多,比如最基本的能熟練使用各種原型工具,思維導(dǎo)圖等。

這個(gè)過程幫我梳理需求,明確功能點(diǎn)。確認(rèn)MVP,形成產(chǎn)品閉環(huán)。嘗試從全局出發(fā)去思考一個(gè)產(chǎn)品,而不是只關(guān)心技術(shù),技術(shù)只是一個(gè)手段,只是一個(gè)產(chǎn)品中的很小的一個(gè)環(huán)節(jié)而已。
我特別想把上面提到的五個(gè)點(diǎn)展開來說,可我知道一旦開了口,就停不下來了,這篇文章也就收不住了,所以專業(yè)的問題,反而要簡(jiǎn)單的回答。這里先留個(gè)坑,以后來填。
倒是可以推薦一些我看過的適合入門學(xué)習(xí)產(chǎn)品的書籍:
方法論相關(guān):
《人人都是產(chǎn)品經(jīng)理?寫給產(chǎn)品新人》
《從點(diǎn)子到產(chǎn)品:產(chǎn)品經(jīng)理的價(jià)值觀與方法論》
《絕密原型檔案?看看專業(yè)產(chǎn)品經(jīng)理的原型是什么樣》
《用戶故事與敏捷方法》
價(jià)值觀相關(guān):
《用戶體驗(yàn)要素?: 以用戶為中心的產(chǎn)品設(shè)計(jì)》
《用戶思維+:好產(chǎn)品讓用戶為自己尖叫》
《點(diǎn)石成金?: 訪客至上的網(wǎng)頁(yè)設(shè)計(jì)秘笈》
《啟示錄》
四.
這個(gè)字體能不能在放大的同時(shí),再縮小一些?
關(guān)于設(shè)計(jì),又是一個(gè)大話題。
設(shè)計(jì)需要一些專業(yè)技能和經(jīng)驗(yàn)積累,門檻較高。所以對(duì)個(gè)人獨(dú)立產(chǎn)品來說,這一項(xiàng)常常是個(gè)弱點(diǎn),或不受重視,經(jīng)常以實(shí)現(xiàn)功能為先。
但我認(rèn)為這里很多機(jī)會(huì):很多產(chǎn)品已經(jīng)存在了,是否有必要“造輪子”?有,因?yàn)槿绻隳茏龀鲆粋€(gè)更好的,那就是新產(chǎn)品。比如以前使用eclipse,它很強(qiáng)大,很主流,但當(dāng)intellij出來后,我就被其顏值所吸引,果斷放棄了eclipse。
在做競(jìng)品分析時(shí),或多或少也有一些類似的產(chǎn)品,但我始終有一個(gè)想法:就算是已經(jīng)存在了這個(gè)產(chǎn)品,如果它做的很丑,那么就可以做一個(gè)更漂亮的替代它。在這一點(diǎn)上,我會(huì)“本末倒置”,特別更重視UI和交互體驗(yàn),哪怕功能沒那么強(qiáng)大。
那么問題來了,非設(shè)計(jì)人員如何解決設(shè)計(jì)問題?
先說說我自己吧。
我上學(xué)期間學(xué)過一段時(shí)間美術(shù),當(dāng)時(shí)自認(rèn)有一些天賦,繪畫能力不錯(cuò)。也學(xué)過一段時(shí)間書法,雖然學(xué)習(xí)成績(jī)不錯(cuò),但我卻是以“藝術(shù)特招生”的身份考入中學(xué)。后來為了“學(xué)業(yè)”放棄了這些,技能也就漸行漸遠(yuǎn)了。但這些經(jīng)歷培養(yǎng)了藝術(shù)的“感覺”。
培養(yǎng)這種感覺很重要。美雖然是主管感受,但符合“主流價(jià)值觀”比較容易得到共識(shí)。
另一方面,我認(rèn)為應(yīng)該始終有“精打細(xì)磨”,不斷追求的態(tài)度。之前在華為工作時(shí),有個(gè)內(nèi)部工具由內(nèi)部IT小組開發(fā),界面分布了很多輸入框和按鈕,但那些輸入框長(zhǎng)短不一,按鈕也大小不整,組件沒有任何排版,僅僅是按順序排列在頁(yè)面上,簡(jiǎn)直忍無可忍,果斷辭職?。ㄩ_玩笑的)
事實(shí)上,現(xiàn)在有很多開源的UI交互框架,這在一定程度上解決了獨(dú)立產(chǎn)品的UI問題,不至于開發(fā)出“原生應(yīng)用”。稍微重視這個(gè)問題,利用統(tǒng)一的UI交互框架,基本可以做到不丑。
如果平時(shí)比較關(guān)注設(shè)計(jì),常常溜達(dá)一些設(shè)計(jì)網(wǎng)站,找找靈感,培養(yǎng)一下sense。如有精力,學(xué)習(xí)常用設(shè)計(jì)工具就再好不過了。
正如這款產(chǎn)品也利用了這個(gè)便捷:Ant Design。
這是阿里開源的一整套設(shè)計(jì)方案和理念,資料齊全,社區(qū)活躍,采用react等。它不僅僅是一套完整的UI,也包含了統(tǒng)一的交互,如按鈕,編輯框的動(dòng)效等。節(jié)省了很多時(shí)間,提高了開發(fā)效率。
然后,我在框架的基礎(chǔ)上,按個(gè)人理念稍作修改即,比如:首先我明確這是一個(gè)開發(fā)人員常用的工具,而開發(fā)工具往往偏“暗”色系??雌饋怼翱帷币恍?。然后我尋找了一些設(shè)計(jì)圖,借鑒其用色和風(fēng)格。



關(guān)于Logo
其實(shí)這個(gè)Logo是個(gè)臨時(shí)方案,是為另一個(gè)項(xiàng)目設(shè)計(jì)的。只是這個(gè)logo是個(gè)字母T,和產(chǎn)品名稱“Taillog”首字母不沖突,就拿來一用。
這個(gè)logo很簡(jiǎn)單,中間字母T,采用特斯拉字體演變而來,通過ps工具修改顏色以及陰影效果。

設(shè)計(jì)logo是個(gè)艱難的過程,整整花費(fèi)了三天時(shí)間,我嘗試了一些在線設(shè)計(jì)logo的網(wǎng)站,基本都是弄些藝術(shù)字加一些圖形拼湊出來,不甚滿意。
盡管現(xiàn)在這個(gè)logo也沒達(dá)到藝術(shù),漂亮的層面,但我覺得還看的過去。
出于對(duì)設(shè)計(jì)的關(guān)注,也看了一些書和一些優(yōu)秀的資源網(wǎng)站,這里也列出來:
書:
《寫給大家看的設(shè)計(jì)書》
《設(shè)計(jì)心理學(xué)》
《About Face 3 交互設(shè)計(jì)精髓》
網(wǎng)站:
創(chuàng)造獅導(dǎo)航
Dribbble
Behance
站酷
設(shè)計(jì)師網(wǎng)址
牛大拿
UI中國(guó)
字由
MyFont
千庫(kù)網(wǎng)
攝圖網(wǎng)
圖蟲網(wǎng)
圖片壓縮
包圖網(wǎng)
花瓣
UIgradients
優(yōu)優(yōu)教程網(wǎng)
阿里巴巴圖標(biāo)庫(kù)
EASYICON圖標(biāo)庫(kù)
Noun圖標(biāo)庫(kù)
TOICON圖標(biāo)庫(kù)
WORLDVECTOR
FreeDownloads
ICONFINDER
ICONS8
五.
再講兩句
其實(shí)還有一個(gè)主題可以聊聊——運(yùn)營(yíng)推廣。
所謂“酒香也怕巷子深”,再好的產(chǎn)品,如果沒人知道,也不會(huì)被使用。
雖然我知道這個(gè)道理,但這個(gè)話題真真的是我的弱點(diǎn)。
出于幾個(gè)原因:
1.我比較反感廣告。
2.比較反感軟文。
3.比較反感臉皮厚。
所以我目前只是“佛性”運(yùn)營(yíng)。但也做了不少工作:
1.申請(qǐng)域名,備案,建立官網(wǎng)
2.建交流群,回復(fù)問答
3.編寫各類說明文檔
4.開源社區(qū)推薦
5.接入數(shù)據(jù)統(tǒng)計(jì)分析
6.寫了這篇文章
這些工作是我認(rèn)為我能做到的,就做了,至于一些其他的推廣手段和方法,目前沒有興趣去做,就暫且不表了。

總的說來,產(chǎn)品上線至今,在沒有大力推廣的情況下,就獲得了一些關(guān)注,平均每天都有一些訪問和下載量。也有一些朋友會(huì)主動(dòng)找到我咨詢問題,提出建議,甚至希望參與開發(fā)。

一些反饋也很好的幫助我更好的設(shè)計(jì)、迭代產(chǎn)品,比如:離線使用功能
第一個(gè)版本需要在線注冊(cè)登錄。其原因是需要保存數(shù)據(jù),所以做了后端存儲(chǔ),數(shù)據(jù)會(huì)存在云端數(shù)據(jù)庫(kù)。但有小伙伴反饋擔(dān)心安全問題,畢竟涉及服務(wù)器用戶名密碼問題。所以我第一個(gè)迭代版本就重點(diǎn)解決了這個(gè)問題。
事實(shí)上,必須登錄才能使用確實(shí)不合理,沒必要。完全是“被動(dòng)需求”,即為了區(qū)分用戶存儲(chǔ)配置數(shù)據(jù),才要求用戶注冊(cè)登錄。這是工具類客戶端產(chǎn)品,這些配置數(shù)據(jù)完全可以存儲(chǔ)在本地。這就是開發(fā)思維影響了產(chǎn)品思維。
還有很多話題沒有涉及,比如如何解決技術(shù)瓶頸,如何測(cè)試,如何發(fā)布,甚至如何寫文案等等,太多了,溜了溜了。