從0到1打造一款產品是一種什麼樣的體驗?爲了回答這種知乎範的問題,讓我來介紹下我是如何打造交易日記這款App的過程。須要提早說明的是整款iOS APP的所有工做都是我一我的完成的。ios
全棧開發(Full-Stack)究竟是什麼?Google出的第一條結果說全棧開發就是須要對先後端技術都瞭解的人,同時能夠把產品設計界面轉化成代碼。總之就是對開發產品涉及的領域什麼都須要瞭解的人。
咱們知道現代社會的高效是創建在合理的分工合做之上的,個體的能力有限,因此須要每一個人發揮本身擅長的能力,而後合做解決一個大項目。企業的出現就是由於社會的這種需求,因此產生了上班的這個概念。這個話題討論起來很漫長,因此讓咱們看看全棧開發又是爲什麼而出現並流行起來的。可能有人不認爲全棧開發很流行,這裏有一份StackOverflow的2015年調查報告(http://stackoverflow.com/research/developer-survey-2015):
從調查結果來看連續三年全棧開發都是位列第一的,不得不說愈來愈流行。固然咱們爲何在中國感覺不是很明顯呢,看這張圖就知道了,由於國人訪問StackOverflow仍是比較少的,並且這個網站並無被牆。
全棧開發爲何愈來愈流行?我認爲這是由於技術自己的進步帶來的,技術發展已經愈來愈開放而且模塊化了,不少產品徹底能夠用現有的模塊去從新組合二次開發,不少關鍵技術和算法都已經不是什麼阻礙了,愈來愈流行的Github和StackOverflow已經代表了這一點。連機器學習和人工智能這種高大上的技術都已經有開源模塊能夠學習並應用,之後這個趨勢會愈來愈強。個體的影響力正在被不斷的放大,反而企業的影響力會下降,將來的社會中遠程工做和獨立工做者的數量會愈來愈多。社會對羣體彙集進行生產產品的模式需求在下降。
那這種趨勢的來臨對咱們個體有什麼影響?首先不論你工做和IT有無關係,你都會被互聯網這種趨勢影響的,因此有必要去了解全棧思惟對咱們個體的影響。首先讓我來解釋下我理解的全棧思惟:它應該是一種解決問題的能力。讓咱們假想兩種思惟模式就能夠看出這個定義的有趣之處了。A是你要打造一款產品,而後你須要瞭解製做這款產品須要的資源、技術和流程。B是你須要學習一門流行的技術來找工做,而後你利用這個技術來作一個Demo產品。A和B的區別在於A須要解決各領域的問題,A是一種全棧思惟,以目的爲驅動的。爲了完善這款產品你也許須要瞭解產品的各個方面,這在之前對個體是不可能完成的任務,可是在這個不斷被連接的世界裏,每一個人都變得更爲專業,經過個體的創做與連接可使你完成一項大工程,這裏面甚至你都不須要組建團隊,一我的就能夠完成產品的創做。這在接下來的部分我會介紹我如何在三個月內完成一款產品從0到1的過程。相信看完你會對全棧思惟有更深的理解。
那麼全棧開發的好處和壞處有哪些呢?我認爲好處是溝通成本爲0,溝通在一個大工程裏面是很是有影響的一個環節,不少時候項目的失敗和溝通有很大關係,根本緣由在於參與者太多,成本已經大於參與者協做的加成了。那壞處就是什麼工做都須要你來作,固然你能夠外包一些不重要的部分出去,可是必定要注意溝通成本的增長。算法
我要作的產品是一款有服務器端支持的APP,目前我只作了iOS版本,將來可能要作Android和Web版本。這款APP已經上架(http://diary.trade)。它是一款工具類的產品,因此我在開發的時候使用Native模式來開發的,並無用Web封裝這種方式,由於工具類更適合用Native來開發,內容類的用Web來開發也不錯。
這款產品前身是我設計的一個Excle版本的資金管理系統,因此不是很方便,這促使我開發了這款APP,由於我自己也是作二級市場交易的,因此這款產品自己就做爲個人一個輔助交易的工具,能夠節省我不少時間。同時這種交易理念也經受過期間的考驗,因此有必要作出來讓你們用,能夠提升你的交易能力和風險管理能力,這比選股擇時更重要。
這是規劃中的版本功能設計。sql
整個項目計劃管理是用OmniPlan製做的。APP開發花的時間最長,由於我使用了Apple的Swift開發語言,算是一遍學習一遍來開發,因此進度要比計劃的慢一些。數據庫
APP自己由服務器端來計算不少數據,和服務器經過TLS加密通道交換JSON格式數據,APP口令存儲在iOS本地Keychain中,經過OAuth服務器獲取Access_Token來受權認證,API的設計是REST風格。
系統模塊作了以下劃分:後端
數據庫設計規則:安全
考慮到i365系統中不須要作複雜的事務操做,因此採用MongoDB服務器
Document間採用關聯模式創建鏈接關係,少部分有內部關係的Document採用嵌套模式創建聯繫微信
這是用MysqlWorkbench畫的ER圖,可是我最終採用的是NoSql的MongoDB,因此這只是一個參考的圖,這不是最終設計版本。運維
此處我在Python遇到26個坑,開發時間半個月,v1版本代碼行數2K+。機器學習
此處的坑在於我沒有學過設計,須要不停的畫了再刪再畫直至滿意,固然我仍是遵循了一些基本的設計原則,這多是我之前看的設計的書籍尚未忘的緣由。
Sketch的教程我使用的是網上的視頻教程。
服務器是阿里雲1G單核配置,連多進程都玩不了。用iptables作了些安全設置。
OS是Ubuntu。
Web服務器是Nginx。
Python用的是UWSGI處理。
數據庫是MongoDB。
日誌監控是Nagios。
此處遇到22個坑。
開發平臺:Mac OSX
IDE:Xcode
開發語言:Swift2
此處遇到71個坑,開發時間兩個月,v1版本代碼行數7K+。
產品和項目展現頁面:
http://diary.trade
http://i365.tech
直接搜索App Landing Bootstrap Template
就能夠找出不少免費的模版。
API經過CURL來測試JSON數據。
APP是人肉測試。
之後考慮使用單元測試。
萬網購買的幾個域名包括cn、net、tech、trade。費點時間的就是去備案了,這個萬網有很詳細的流程說明。
經過郵件、微博和微信公衆號來接受用戶反饋意見,APP自己沒有加入崩潰檢測代碼,之後能夠考慮加入。
經過Google、Github、StackOverflow搜索來解決問題。可是若是你想對某個主題進行系統學習的話能夠經過在線MOOC課程。這個之後我會分享我在Coursera裏面上的十幾門課程。
這個就須要你多看一些產品介紹文案了,而後寫多個版本,而後挑選一個最好的。文案的關鍵是要抓眼球,也就是在最短的時間給潛在的用戶介紹你本身,同時也要遵循平臺自己的特色來推廣,要和平臺的邏輯和睦質相符效果才棒。
這是我給App Store寫的產品文案,考慮到App Store的搜索只能針對標題,因此標題的設計就很重要,這其實就是ASO優化的主題了。若是是Android的在Google的Play Store文案你就須要考慮內容的介紹加入更多的關鍵詞了,由於Google會搜索它的。
若是是工具類的產品對運營的需求倒不大,但若是是內容類的產品那麼好的運營就很重要了,須要和用戶進行互動,不斷的製造話題,這方面能夠多看看微博和知乎的熱門話題產生的邏輯,多嘗試並進行分析改善。
熱門話題通常都是通過精心設計的。
推廣有不少種方式,有錢的話那就有不少種暴力推廣方法了,好比微信公衆號的推廣平均一個用戶都漲價至幾塊錢一位了,因此你們都在作吸引眼球的動做了,只要有關注者,都是錢嘛。如下是幾種常見的推廣渠道:
郵件列表。優質的郵件列表推廣的效果很不錯,因此咱們能夠嘗試去維護一個郵件列表,按期發送用戶關注的內容,好比作一個PodCast或者週刊之類的Mail List。郵件列表發送商的話我通常用Mailchimp,發送成功率和模版及統計功能都很棒,還有移動端的App。
微博。微博的確沒有死,煥發出了第二春。微博的好處在於能夠製造傳播話題,同時和用戶互動方便。
知乎。知乎須要專業的去運營,懂得某領域的知識,而後在熱門話題下多分享回答就能夠不斷積累高質量的用戶源了。
微信公衆號。公衆號的好處在於和用戶的單向互動,有些不想讓用戶之間瞭解的內容須要運營的話很適合用公衆號,由於用戶之間不可見,能夠避免不少問題。
社區。社區的好處在於主題的集中度很高,好比雪球、V2EX社區等,都是很專業的社區。
歡迎關注個人微信公衆號:improve365