所謂最小化可行產品(Minimum Viable Product,MVP),就是將產品快速推向客戶,從客戶反饋中不斷進行迭代。更重要的是,MVP 也是研發團隊進一步完善產品的基礎。php
可是,在正式代碼以前,你須要選擇從此支撐產品的 技術棧,也就是要選擇好整個產品每一層所要應用的技術語言、架構等。html
技術棧的選擇每每是創始人面臨的艱難問題。不管是技術人員仍是非技術人員,若是不具體瞭解每一個語言和架構的特色,面對如今如此多元化的IT技術,簡直能逼死糾結症患者。並且,若是選錯了語言或者框架,極可能會致使較爲嚴重的後果。前端
實際上,在選擇時須要考慮的因素並很少。其實經過簡單的分類,就能夠將選擇範圍縮小到可控制的幾個技術組合內,進而將每種技術與正確的應用範圍相對應。git
首先,你得了解「技術棧(tech stack)」的定義。github
技術棧是用於建立 Web 或移動應用的軟件產品與編程語言的組合。應用一般包含兩個軟件組件:客戶端與服務端,也稱爲前端與後端。web
應用的每一層都創建在其下一層的功能基礎上,總體構成了一個棧。上圖顯示了典型技術棧的主要區塊,可是也能夠包含其餘支持組件。編程
後端包含驅動應用運轉的業務邏輯。用戶永遠都不會與後端直接交互,全部的信息都經過前端來傳遞。後端
最著名的後端技術棧要屬 「LAMP 棧」(Linux, Apache, MySQL, PHP)。最近,該棧也出現一些變形:使用 Ruby 或 Python 取代 PHP 編程語言。瀏覽器
選擇編程語言時得選定對應的 Web 框架。框架用處極大,能爲開發者提供多種通過審查的常見 Web 功能,包括用戶驗證、數據存取等,是的開發無需從零開始。性能優化
常見的 Web 框架有:
框架 | 語言 |
---|---|
Ruby on Rails | Ruby |
Django | Python |
Node.js | Javascript |
Laravel | PHP |
.NET | C# |
前端是應用與用戶交互的圖形化實現部分,而且是用戶最直接的體驗。交互可經過 Web 瀏覽器或移動 app 進行。在建立 Web 應用時,前端棧包含:
HTML (標記語言)
CSS(樣式表語言)
JavaScript(腳本語言)
前端框架的選擇不少,咱們的建議是:
JS 框架需包含用於建立豐富且良好的交互 Web 體驗的工具。
推薦使用: AngularJS, Backbone.js, ReactJS
展現框架需提供標準化的格式,用於建立簡潔又不失美感的響應頁面。
推薦使用:Bootstrap
對於移動應用,iOS app 均用 Objective-C/SWIFT 建立,Android app 則使用 Java 建立。
若是你是不懂技術的創始人,諮詢開發者並遵從他們的建議選擇技術棧彷佛是不錯的選擇。然而,開發者可能會對本身擅長的技術工具備所偏心,或僅僅根據技術優缺點而非業務需求評價技術工具。
換個角度講,聽從下面的三個步驟評價不一樣的技術選擇可能更爲客觀。
現現在,超過 60% 的網站流量來自於移動設備,25% 的美國人只經過移動設備上網,這個趨勢還將不斷擴大;2015年是全面『無線化』的一年,在BAT(財報)幾家公司都已經超過 50% 的流量來自移動端,此次 雙11 更是佔到了68.67% 無線交易。所以,推出移動版應用只是時間的問題,而不是要不要的問題。
然而,不要只依賴整體的統計數據,而應該想一想你在設計 MVP 時必須的關鍵因素,以及這些因素在產品中的價值定位。用戶是更可能在移動中經過手機使用你的產品?仍是端坐在辦公桌前使用它?
一般,你的 MVP 應該先快速發佈於一種平臺——移動或網頁端,當產品得到承認以後,再根據反饋投資搭建新的平臺並進行良好的維護纔是理智的。
肯定總體規劃以後,用戶的使用模式會指導你進入移動優先,僅保留移動端,或移動稍後的設計方案。
1)移動優先設計
「移動優先設計」意味着搭建一個 Web 響應應用,能適應全部尺寸的屏幕,但首先保證移動端屏幕的 UI 最爲宜人。
Web 響應應用可經過谷歌搜索或共享連接快速發現,無需下載任何安裝包便可使用。相比於本地應用,他們的開發成本更低,更易迭代,能快速驗證產品的價值。
從 Web 響應應用入手,若是你的產品:
服務於桌面與移動端的普遍用戶
包含可用於 SEO 的豐富材料
具備易於在手機瀏覽器使用的簡潔 UI
例如:天貓, 愛奇藝, github
2)只開發移動端
在僅開發移動端的設計方法中,MVP 只是一個在應用商店下載的本地移動應用。移動端用戶期待看到美觀流暢的界面,固然良好的用戶體驗也是必不可少的。
一般的建議是先開發基於 iOS 的 MVP,以後再開發 Android 版本。儘管 Android 在美國的市場份額爲52%,在全球更是高達80%,但支持數百種不一樣的設備須要投入更多的開發成本。若是試試爲了驗證產品價值的話,iOS 用戶其實綽綽有餘,並且他們相比於 Android 用戶更爲投入,花在手機上的時間是後者的四倍。而且同時發佈兩個版本的應用須要更多的營銷時間,並且每次產品迭代都要投入雙倍的工做。
從本地app入手,若是你的產品:
主要使用在移動端
須要使用相機、GPS 或加速度器等設備特徵
會受益於消息推送、零星購買等實時交互
例如:Instagram, WhatsApp, Uber, Waze
3)移動端後設計
在某些狀況下,MVP 應該是傳統的 Web 應用,暫時無需考慮移動設計。好比,許多 SaaS 產品的目標客戶是企業用戶,這些用戶主要經過臺式機或我的電腦的瀏覽器與產品進行交互。附帶的移動應用主要提供互補功能,能夠稍後再開發。
從傳統 Web 應用入手,若是你的產品:
主要經過臺式機或我的電腦進行交互
須要複雜的用戶界面
會接收電子表格或大圖片文件的上傳
例如: MailChimp, ZenDesk, Xero
打形成功的 MVP 的關鍵是減小市場推廣的時間。利用現有的工具能夠有效縮小工做範圍,使產品推廣更加簡單。
在選擇編程語言與其餘後端技術時,首先考慮業內最好的開源工具,並以其技術棧爲參考。
例如:若是你只想發佈一個簡單的本地移動應用,則應該使用 Parse 或 StackMob 之類的後端服務,而不是本身開發。
不要只關注市場份額,還應瞭解 Github 中的貢獻者數量與 StackOverflow 中的問題數量,從而瞭解其近期發展狀況。最好的工具背後應該有一個生機勃勃的開發者社區。
好比,在電子商務市場,Magento 的市場份額最大,達 25%,擁有 25 萬安裝基數。Spree 則是後起之秀,僅有 5 千安裝基數。然而,後者擁有超過 500 個貢獻者,是全球 50 大開源項目之一。若是你準備開始一個新的電子商務項目,Spree 或許是一個更好的選擇,同事 Spree 是以 Ruby 語言寫就的,這也會影響你的後端語言選擇。
缺乏開發能力是許多初創企業早期的一大挑戰。所以,是否擁有高效的開發團隊也是決定技術棧選擇的一大因素。
不一樣的技術棧會吸引不一樣的研發人員,進而影響公司文化。許多有才的開發者熱衷於使用最新的工具,而極力避免他們認爲缺乏創新的工具。好比,PHP 一直是開發 Web 應用最多見的語言,但其名聲並很差,以至於一些公司會由於使用它而道歉(這是真的,並非玩笑哦)。
在選擇技術棧時,要確保業務領域內有足夠的有才能的工程師。像 NodeJS 這樣的新興技術可能會引來你中意的文化契合,但也意味着招聘時面對的人才庫相對有限。
開發人才的數量也與行業有關。好比,因爲監管與合規性問題,金融技術平臺一直以來都使用 Java 或 .NET 開發。即使這些語言經常被初創社區所看不起,若是你準備開發金融行業產品,選擇它們仍是有許多好處,可選的開發人員也會不少。
選定技術棧就好像作出承諾同樣,沒法輕易改變,所以關於將來形勢,諸如擴展性、性能變化的考慮也很常見。然而,在 MVP 階段就考慮這些問題顯得有點操之過急了。
許多性能問題實際上是應用設計缺陷,而非技術選擇致使的,而且這些問題經過性能調優就能夠解決。並且,隨着產品的發展,驚醒性能優化的預算也會逐漸增長。
固然有必要!
且不說後端,先從前端頁面來看,如今國內的主流前端包括:pc端、移動微信端、移動瀏覽器、移動應用的webview等多種場景,普通的性能優化工具根本沒法同事支持兼容諸多使用場景,同時,不少工具只是簡單的打個分數,根本沒法定位問題!
那麼,問題來了。。。
難道你能忍受只能針對一種使用場景的工具?
難道你能忍受像 yslow 這樣的沒法進行綜合比對的一次性工具?
難道你能忍受只能評分卻沒法定位問題的工具?
從國內來看,Browser Insight 這個工具提供了統一的視圖,全面涵蓋 pc端、移動微信端、移動瀏覽器、移動應用的webview多個場景。針對不一樣的前端場景,均可以進行相應的監控與分析,甚至能夠精確到代碼級,讓前端性能監控再也不糾結。
簡單的給你們看幾個 Browser Insight 的功能界面。
目前,OneAPM 針對前端性能的優化產品,Browser Insight 已經免費提供給你們使用了。同時包括針對應用服務器性能優化 Application Insight 產品以及針對存儲服務器性能優化 Cloud Insight產品也都提供了免費版產品,但願可以幫助用戶不斷優化,真正意義上作出 MVP 的產品!!!
原文連接:http://svsg.co/how-to-choose-your-tech-stack/ 做者:Gil Edelman,本文系 OneAPM 工程師編譯整理。