所謂最小化可行產(chǎn)品(Minimum Viable Product,MVP),就是將產(chǎn)品快速推向客戶掖看,從客戶反饋中不斷進(jìn)行迭代匣距。更重要的是,MVP 也是研發(fā)團(tuán)隊(duì)進(jìn)一步完善產(chǎn)品的基礎(chǔ)哎壳。
但是,在正式代碼之前归榕,你需要選擇今后支撐產(chǎn)品的 技術(shù)棧尸红,也就是要選擇好整個(gè)產(chǎn)品每一層所要應(yīng)用的技術(shù)語言、架構(gòu)等刹泄。
技術(shù)棧的選擇往往是創(chuàng)始人面臨的艱難問題外里。無論是技術(shù)人員還是非技術(shù)人員,如果不具體了解每個(gè)語言和架構(gòu)的特點(diǎn)特石,面對現(xiàn)在如此多元化的IT技術(shù)盅蝗,簡直能逼死糾結(jié)癥患者。而且姆蘸,如果選錯(cuò)了語言或者框架墩莫,很可能會導(dǎo)致較為嚴(yán)重的后果。
實(shí)際上逞敷,在選擇時(shí)需要考慮的因素并不多狂秦。其實(shí)通過簡單的分類,就可以將選擇范圍縮小到可控制的幾個(gè)技術(shù)組合內(nèi)推捐,進(jìn)而將每種技術(shù)與正確的應(yīng)用范圍相對應(yīng)裂问。
首先,你得了解「技術(shù)棧(tech stack)」的定義。
一.什么是技術(shù)棧愕秫?
技術(shù)棧是用于創(chuàng)建 Web 或移動應(yīng)用的軟件產(chǎn)品與編程語言的組合慨菱。應(yīng)用通常包含兩個(gè)軟件組件:客戶端與服務(wù)端,也稱為前端與后端戴甩。
應(yīng)用的每一層都建立在其下一層的功能基礎(chǔ)上,整體構(gòu)成了一個(gè)棧甜孤。上圖顯示了典型技術(shù)棧的主要區(qū)塊协饲,但是也可以包含其他支持組件。
二.后端技術(shù)棧
后端包含驅(qū)動應(yīng)用運(yùn)轉(zhuǎn)的業(yè)務(wù)邏輯缴川。用戶永遠(yuǎn)都不會與后端直接交互茉稠,所有的信息都通過前端來傳遞。
最著名的后端技術(shù)棧要屬 「LAMP 棸芽洌」(Linux, Apache, MySQL, PHP)而线。最近,該棧也出現(xiàn)一些變形:使用 Ruby 或 Python 取代 PHP 編程語言恋日。
選擇編程語言時(shí)得選定對應(yīng)的 Web 框架膀篮。框架用處極大岂膳,能為開發(fā)者提供多種經(jīng)過審查的常見 Web 功能誓竿,包括用戶驗(yàn)證、數(shù)據(jù)存取等谈截,是的開發(fā)無需從零開始筷屡。
常見的 Web 框架有:
<table>
<thead>
<tr>
<th>?框架</th>
<th>語言</th>
</tr>
</thead>
<tbody><tr>
<td>Ruby on Rails</td>
<td>Ruby</td>
</tr>
<tr>
<td>Django</td>
<td>Python</td>
</tr>
<tr>
<td>Node.js</td>
<td>Javascript</td>
</tr>
<tr>
<td>Laravel</td>
<td>PHP</td>
</tr>
<tr>
<td>.NET</td>
<td>C#</td>
</tr>
</tbody></table>
三.前端技術(shù)棧
前端是應(yīng)用與用戶交互的圖形化實(shí)現(xiàn)部分,并且是用戶最直接的體驗(yàn)簸喂。交互可通過 Web 瀏覽器或移動 app 進(jìn)行毙死。在創(chuàng)建 Web 應(yīng)用時(shí),前端棧包含:
- HTML (標(biāo)記語言)
- CSS(樣式表語言)
- JavaScript(腳本語言)
前端框架的選擇很多娘赴,我們的建議是:
- JS 框架需包含用于創(chuàng)建豐富且良好的交互 Web 體驗(yàn)的工具规哲。
推薦使用: AngularJS, Backbone.js, ReactJS - 展示框架需提供標(biāo)準(zhǔn)化的格式,用于創(chuàng)建簡潔又不失美感的響應(yīng)頁面诽表。
推薦使用:Bootstrap
對于移動應(yīng)用唉锌,iOS app 均用 Objective-C/SWIFT 創(chuàng)建,Android app 則使用 Java 創(chuàng)建竿奏。
四.我應(yīng)該如何選擇技術(shù)棧袄简?
如果你是不懂技術(shù)的創(chuàng)始人,咨詢開發(fā)者并聽從他們的建議選擇技術(shù)棧似乎是不錯(cuò)的選擇泛啸。然而绿语,開發(fā)者可能會對自己擅長的技術(shù)工具有所偏愛,或僅僅根據(jù)技術(shù)優(yōu)缺點(diǎn)而非業(yè)務(wù)需求評價(jià)技術(shù)工具。
換個(gè)角度講吕粹,遵從下面的三個(gè)步驟評價(jià)不同的技術(shù)選擇可能更為客觀种柑。
1. 移動還是 Web匹耕?根據(jù)目標(biāo)用戶群進(jìn)行設(shè)計(jì)聚请!
現(xiàn)如今,超過 60% 的網(wǎng)站流量來自于移動設(shè)備稳其,25% 的美國人只通過移動設(shè)備上網(wǎng),這個(gè)趨勢還將不斷擴(kuò)大;2015年是全面『無線化』的一年驶赏,在BAT(財(cái)報(bào))幾家公司都已經(jīng)超過 50% 的流量來自移動端,這次 雙11 更是占到了68.67% 無線交易既鞠。因此煤傍,推出移動版應(yīng)用只是時(shí)間的問題,而不是要不要的問題嘱蛋。
然而蚯姆,不要只依賴總體的統(tǒng)計(jì)數(shù)據(jù),而應(yīng)該想想你在設(shè)計(jì) MVP 時(shí)必須的關(guān)鍵因素浑槽,以及這些因素在產(chǎn)品中的價(jià)值定位蒋失。用戶是更可能在移動中通過手機(jī)使用你的產(chǎn)品?還是端坐在辦公桌前使用它桐玻?
通常,你的 MVP 應(yīng)該先快速發(fā)布于一種平臺——移動或網(wǎng)頁端荆萤,當(dāng)產(chǎn)品獲得認(rèn)可之后镊靴,再根據(jù)反饋投資搭建新的平臺并進(jìn)行良好的維護(hù)才是理智的。
確定整體規(guī)劃之后链韭,用戶的使用模式會指導(dǎo)你進(jìn)入移動優(yōu)先偏竟,僅保留移動端,或移動稍后的設(shè)計(jì)方案敞峭。
1)移動優(yōu)先設(shè)計(jì)
「移動優(yōu)先設(shè)計(jì)」意味著搭建一個(gè) Web 響應(yīng)應(yīng)用踊谋,能適應(yīng)所有尺寸的屏幕,但首先保證移動端屏幕的 UI 最為宜人旋讹。
Web 響應(yīng)應(yīng)用可通過谷歌搜索或共享鏈接快速發(fā)現(xiàn)殖蚕,無需下載任何安裝包即可使用。相比于本地應(yīng)用沉迹,他們的開發(fā)成本更低睦疫,更易迭代,能快速驗(yàn)證產(chǎn)品的價(jià)值鞭呕。
從 Web 響應(yīng)應(yīng)用入手蛤育,如果你的產(chǎn)品:
- 服務(wù)于桌面與移動端的廣泛用戶
- 包含可用于 SEO 的豐富材料
- 具有易于在手機(jī)瀏覽器使用的簡潔 UI
例如:天貓, 愛奇藝, github
2)只開發(fā)移動端
在僅開發(fā)移動端的設(shè)計(jì)方法中,MVP 只是一個(gè)在應(yīng)用商店下載的本地移動應(yīng)用。移動端用戶期待看到美觀流暢的界面瓦糕,當(dāng)然良好的用戶體驗(yàn)也是必不可少的底洗。
通常的建議是先開發(fā)基于 iOS 的 MVP,之后再開發(fā) Android 版本咕娄。盡管 Android 在美國的市場份額為52%枷恕,在全球更是高達(dá)80%,但支持?jǐn)?shù)百種不同的設(shè)備需要投入更多的開發(fā)成本谭胚。如果試試為了驗(yàn)證產(chǎn)品價(jià)值的話徐块,iOS 用戶其實(shí)綽綽有余,而且他們相比于 Android 用戶更為投入灾而,花在手機(jī)上的時(shí)間是后者的四倍胡控。并且同時(shí)發(fā)布兩個(gè)版本的應(yīng)用需要更多的營銷時(shí)間,而且每次產(chǎn)品迭代都要投入雙倍的工作旁趟。
從本地app入手昼激,如果你的產(chǎn)品:
- 主要使用在移動端
- 需要使用相機(jī)、GPS 或加速度器等設(shè)備特征
- 會受益于消息推送锡搜、零星購買等實(shí)時(shí)交互
例如:Instagram, WhatsApp, Uber, Waze
3)移動端后設(shè)計(jì)
在某些情況下橙困,MVP 應(yīng)該是傳統(tǒng)的 Web 應(yīng)用,暫時(shí)無需考慮移動設(shè)計(jì)耕餐。比如凡傅,許多 SaaS 產(chǎn)品的目標(biāo)客戶是企業(yè)用戶,這些用戶主要通過臺式機(jī)或個(gè)人電腦的瀏覽器與產(chǎn)品進(jìn)行交互肠缔。附帶的移動應(yīng)用主要提供互補(bǔ)功能夏跷,可以稍后再開發(fā)。
從傳統(tǒng) Web 應(yīng)用入手明未,如果你的產(chǎn)品:
- 主要通過臺式機(jī)或個(gè)人電腦進(jìn)行交互
- 需要復(fù)雜的用戶界面
- 會接收電子表格或大圖片文件的上傳
例如: MailChimp, ZenDesk, Xero
2. 考慮業(yè)內(nèi)的現(xiàn)有工具
打造成功的 MVP 的關(guān)鍵是減少市場推廣的時(shí)間。利用現(xiàn)有的工具可以有效縮小工作范圍趟妥,使產(chǎn)品推廣更加簡單猫态。
在選擇編程語言與其他后端技術(shù)時(shí),首先考慮業(yè)內(nèi)最好的開源工具披摄,并以其技術(shù)棧為參考亲雪。
例如:如果你只想發(fā)布一個(gè)簡單的本地移動應(yīng)用,則應(yīng)該使用 Parse 或 StackMob 之類的后端服務(wù)行疏,而不是自己開發(fā)匆光。
不要只關(guān)注市場份額,還應(yīng)了解 Github 中的貢獻(xiàn)者數(shù)量與 StackOverflow 中的問題數(shù)量酿联,從而了解其近期發(fā)展情況终息。最好的工具背后應(yīng)該有一個(gè)生機(jī)勃勃的開發(fā)者社區(qū)夺巩。
比如,在電子商務(wù)市場周崭,Magento 的市場份額最大柳譬,達(dá) 25%,擁有 25 萬安裝基數(shù)续镇。Spree 則是后起之秀美澳,僅有 5 千安裝基數(shù)。然而摸航,后者擁有超過 500 個(gè)貢獻(xiàn)者制跟,是全球 50 大開源項(xiàng)目之一。如果你準(zhǔn)備開始一個(gè)新的電子商務(wù)項(xiàng)目酱虎,Spree 或許是一個(gè)更好的選擇雨膨,同事 Spree 是以 Ruby 語言寫就的,這也會影響你的后端語言選擇读串。
3.誰是項(xiàng)目的builder?
缺少開發(fā)能力是許多初創(chuàng)企業(yè)早期的一大挑戰(zhàn)恢暖。因此排监,是否擁有高效的開發(fā)團(tuán)隊(duì)也是決定技術(shù)棧選擇的一大因素。
不同的技術(shù)棧會吸引不同的研發(fā)人員杰捂,進(jìn)而影響公司文化舆床。許多有才的開發(fā)者熱衷于使用最新的工具,而極力避免他們認(rèn)為缺少創(chuàng)新的工具琼娘。比如峭弟,PHP 一直是開發(fā) Web 應(yīng)用最常見的語言,但其名聲并不好脱拼,以致于一些公司會因?yàn)槭褂盟?a target="_blank" rel="nofollow">道歉(這是真的,并不是玩笑哦)坷备。
在選擇技術(shù)棧時(shí)熄浓,要確保業(yè)務(wù)領(lǐng)域內(nèi)有足夠的有才能的工程師。像 NodeJS 這樣的新興技術(shù)可能會引來你中意的文化契合省撑,但也意味著招聘時(shí)面對的人才庫相對有限赌蔑。
開發(fā)人才的數(shù)量也與行業(yè)有關(guān)。比如竟秫,由于監(jiān)管與合規(guī)性問題娃惯,金融技術(shù)平臺一直以來都使用 Java 或 .NET 開發(fā)。即便這些語言常常被初創(chuàng)社區(qū)所看不起肥败,如果你準(zhǔn)備開發(fā)金融行業(yè)產(chǎn)品趾浅,選擇它們還是有許多好處愕提,可選的開發(fā)人員也會很多。
4.我的技術(shù)棧容易擴(kuò)展么皿哨?
選定技術(shù)棧就好像做出承諾一樣浅侨,無法輕易改變,因此關(guān)于未來形勢证膨,諸如擴(kuò)展性如输、性能變化的考慮也很常見。然而央勒,在 MVP 階段就考慮這些問題顯得有點(diǎn)操之過急了不见。
許多性能問題其實(shí)是應(yīng)用設(shè)計(jì)缺陷,而非技術(shù)選擇導(dǎo)致的崔步,并且這些問題通過性能調(diào)優(yōu)就可以解決稳吮。而且,隨著產(chǎn)品的發(fā)展刷晋,驚醒性能優(yōu)化的預(yù)算也會逐漸增加盖高。
5.是否有必要選擇強(qiáng)大的前端性能優(yōu)化工具?
當(dāng)然有必要眼虱!
且不說后端喻奥,先從前端頁面來看,現(xiàn)在國內(nèi)的主流前端包括:pc端捏悬、移動微信端撞蚕、移動瀏覽器、移動應(yīng)用的webview等多種場景过牙,普通的性能優(yōu)化工具根本無法同事支持兼容諸多使用場景甥厦,同時(shí),很多工具只是簡單的打個(gè)分?jǐn)?shù)寇钉,根本無法定位問題刀疙!
那么,問題來了扫倡。谦秧。。
難道你能忍受只能針對一種使用場景的工具撵溃?
難道你能忍受像 yslow 這樣的無法進(jìn)行綜合比對的一次性工具疚鲤?
難道你能忍受只能評分卻無法定位問題的工具?
從國內(nèi)來看缘挑,Browser Insight 這個(gè)工具提供了統(tǒng)一的視圖集歇,全面涵蓋 pc端、移動微信端语淘、移動瀏覽器诲宇、移動應(yīng)用的webview多個(gè)場景际歼。針對不同的前端場景,都可以進(jìn)行相應(yīng)的監(jiān)控與分析焕窝,甚至可以精確到代碼級蹬挺,讓前端性能監(jiān)控不再糾結(jié)。
簡單的給大家看幾個(gè) Browser Insight 的功能界面它掂。
目前榕茧,OneAPM 針對前端性能的優(yōu)化產(chǎn)品,Browser Insight 已經(jīng)免費(fèi)提供給大家使用了客给。同時(shí)包括針對應(yīng)用服務(wù)器性能優(yōu)化 Application Insight 產(chǎn)品以及針對存儲服務(wù)器性能優(yōu)化 Cloud Insight產(chǎn)品也都提供了免費(fèi)版產(chǎn)品用押,希望能夠幫助用戶不斷優(yōu)化,真正意義上做出 MVP 的產(chǎn)品0薪!r卟Α!
原文鏈接:http://svsg.co/how-to-choose-your-tech-stack/ 作者:Gil Edelman桩引,本文系 OneAPM 工程師編譯整理缎讼。