從技術經理的角度算一算,如何能夠多快好省的作個app

【導讀】前端時間,一篇「從產品經理的角度算一算,作個app須要多少錢」的文章在網上瘋傳,可見你們對互聯網創業的熱情!此次,從一名技術經理的角度再給你們分析一下,如何使用跨平臺開發技術爲你節省上百萬的開發成本。所謂「跨平臺」開發技術,就是使用一種語言和一種開發工具同時支持幾種不一樣的手機/平板設備,這樣作不只僅省錢並且開發效率高,可讓你更快的推出新版本和新功能!javascript

做爲一名軟件工程顧問,我曾參與過不少的項目,主要爲軟件團隊進行開發工具和方法論方面的諮詢/培訓/指導,我接觸過不下100個各類類型/大小的開發團隊,有傳統行業,有互聯網,有不差錢的,也有剛起步的創業者;其中也不乏app開發項目。開發團隊遇到的問題最大共性是每一個人在一個團隊中的位置很大程度上決定他的判斷,簡而言之:視野問題!而當你們問一名IT人士那個經典的「作個app要多少錢?」的問題時,他也僅僅能根據本身的技術背景和經驗給你一個答案,更加傾向於推薦那些相對穩妥的方案;而不懂技術的人更加無從判斷。我想說的是:雖然互聯網創業是個技術活,但技術選型必定要業務先行,ROI(投入產出比)優先。這就是爲何你首先應該從成本角度進行分析,作出判斷;而不要受制於技術!html

在回答完那個經典的「作個APP多少錢?」的問題後,下面這些問題就會接踵而來:前端

  • 應該開發iPhone版本仍是Andrioid版本?
  • 可能須要聘用掌握了不一樣開發語言(iPhone使用Xcode/Object-C,而Android使用Android SDK和Java)和技能的團隊成員,研發成本幾乎翻倍
  • 產品的後臺系統使用怎樣的開發環境?
  • 如何在新功能上線時保證iPhone/Android的APP與後臺系統的同步?
  • 從無到有開發這樣一款APP到底須要多少成本?
  • 如何瞭解用戶的使用習慣,並經過數據分析來指導後續版本的開發?

對於當前所流行的「互聯網+」的衆多創業者來講,如何可以以最快的速度和最小的成原本開發/運營本身的產品是決定是否可以在早期快速取得客戶,獲取生存空間和贏得將來機會的決定性因素。其實對於任何的軟件開發來講,多快好省永遠是咱們的追求,當前的創業大潮使得這一原則更加凸顯,也讓更多的人瞭解到了軟件開發。java

DevOps(研發運維一體化)也是最近幾年在軟件行業很是流行的作法,DevOps經過打通開發和運維這兩個本來屬於不一樣領域的團隊來爲咱們運營產品提供更快的價值輸出,其實也是多快好省地體現。從用戶的角度,使用手機/平板等移動設備的用戶已經超過了PC用戶,而在移動設備領域又存在着iPhone/Android/Windows三分天下的情況,這使得上面所提到的快速推出產品變得更加困難,同時因爲不一樣的設備所使用的操做系統,開發環境和運行環境都徹底不一致,讓咱們的研發管理變得更加的複雜,實現DevOps也是難上加難。程序員

本篇博客將使用MyShuttle.biz這個應用來爲你展現一個「互聯網+」時代的創業團隊如何使用跨平臺開發技術來多快好省地解決以上問題。web

在2014年的 Visual Studio and Azure Connect() 在線發佈會上,微軟使用了一套名爲 MyShuttle.biz的樣例程序來展現Visual Studio 2015和Microsoft Azure所提供的DevOps能力,這套樣例的源代碼也被分享出來。其中使用了衆多的技術來全面展現微軟開發工具和雲計算平臺所提供的跨平臺開發和DevOps能力。
全套樣例代碼能夠經過如下地址下載:
https://code.msdn.microsoft.com/windowsapps/MyShuttle-demo-applications-1a4b68fe#content數據庫

跨平臺移動開發白皮書 – MyShuttle.biz案例分析

這本白皮書將對當前2大主流跨平臺開發技術進行詳細的介紹,我將藉助MyShuttle.biz這個案例,爲你展現如何使用跨平臺開發技術結合雲計算完成一個典型「互聯網+」產品的技術佈局,團隊組織,開發環境配置和開發流程管理,最終實現基於雲的開發運維一體化(DevOps)環境。因爲內容較多,我將按照如下順序逐步發佈;本系列的前一部分不會涉及過多的技術內容,適合創業者,技術管理者和普通大衆閱讀;後半部分會涉及較多深刻的技術細節,適合對DevOps和跨平臺移動開發技術自己感興趣的朋友閱讀。windows

  1. 案例背景:MyShuttle.biz的業務模型,應用架構
  2. 跨平臺開發技術如何作到多快好省的?
  3. 跨平臺開發技術的成熟度和不一樣方案優劣比較
  4. 跨平臺開發環境配置和能力分析
    1. Apache Cordvoa HTML/JavaScript Hybrid APP 跨平臺技術
    2. Xamarin 原生APP跨平臺技術
    3. ASP.NET 5 跨平臺開發技術
  5. 基於雲端的DevOps環境配置和能力分析

案例背景

myshuttle-logo

MyShuttle.biz是一套相似「滴滴出行」的互聯網租車應用,能夠爲企業用戶提供叫車,計費和後臺管理能力,解決企業用戶平常用車需求。雖然「滴滴出行」解決了普通民衆的出行需求,可是企業用車市場仍然是空白。做爲在公司中工做的人來講,有客戶到訪,公司團建,出遊,甚至平常的跑業務,稅務等活動都須要用車,而企業養車則是很是大的開銷;MyShuttle.bizs就是在這樣的大背景下誕生的,但願可以將租車公司的空閒車輛與企業用戶相銜接,實現社會交通資源的優化和企業用車成本的下降。瀏覽器

你們能夠經過如下視頻來了解這個應用:安全

http://v.qq.com/page/n/g/h/n0171nvm6gh.html 

應用架構

MyShuttle.biz使用3套相互獨立的系統來實現以上業務目標,後臺系統經過雲計算提供數據存儲,業務邏輯處理和後臺管理功能,並經過網頁應用/Windows APP的形式提供給租車公司/用戶企業的管理人員使用;用戶APP經過各大應用市場給用戶免費下載和使用,用戶可使用APP完成叫車,付費和訂單管理功能;司機APP則提供給司機使用,完成叫車信息的推送,接受訂單,跟蹤里程等操做。

後臺系統除了能夠由用戶經過瀏覽器完成各類操做外,還提供了流行的Restful接口供APP和其餘第三方系統集成使用。

Myshuttle.biz 總體架構

後臺系統

  • 使用SQL Azure 提供安全的高可用數據存儲服務
  • 使用ASP.NET 5 WebAPI和Azure Mobile Service 所提供的WebAPI提供數據訪問服務
  • 爲租車公司提供基於瀏覽器的SPA應用(單頁面應用)來進行車輛,司機和訂單管理服務
  • 爲用車企業管理人員提供基於Windows APP的桌面應用來管理員工,車輛訂單

用戶APP

  • 使用Xamarin跨平臺開發工具提供原生的App體驗,同時支持iPhone/Android/Windows Phone三大移動平臺

司機APP

  • 使用Apache Cordova跨平臺開發工具提供基於HTML/Js的Hybrid App體驗,同時支持iPhone/Android/Windows Phone三大移動平臺

 

「跨平臺」技術如何作到多快好省?

因爲使用了跨平臺開發技術,咱們沒必要聘用同時具有Object-C/Java/C#能力的開發人員,只須要熟練使用C#語言和Visual Studio IDE的開發人員便可,咱們的團隊組成能夠規劃爲:

– Team 1: 2名後臺開發人員:
○ 熟練使用C#開發語言,ASP.NET MVC
○ 對Microsoft Azure雲計算平臺有所瞭解
○ 瞭解Restful接口開發
○ 負責後臺系統中的數據庫,WebAPI開發

– Team 2: 2名HTML/Javascript/Web/APP開發人員:
○ 熟練使用C#/HTML/JavaScript/CSS開發語言,前端框架如Jquery, AngularJS
○ 對Microsoft Azure雲計算平臺有所瞭解
○ 瞭解Restful接口開發
○ 負責Web SPA App及Apache Cordova Hybrid APP的開發(司機APP),同時支持iPhone/Android/Windows Phone移動平臺

– Team 3: 2名原生APP開發人員
○ 熟練使用C#和Xamarin
○ 瞭解Restful接口開發
○ 負責原生APP開發(用戶APP),同時支持iPhone/Android/Windows Phone移動平臺

– Team 4: 1名設計人員
○ 熟悉移動APP和Web應用用戶體驗設計
○ 能夠獨立完成平面原型和元素切圖,熟悉應用開發過程,具有與開發人員合做的經驗

– 1名產品經理
○ 熟悉互聯網產品和移動APP運營
○ 熟悉互聯網產品開發,具有與研發團隊合做經驗
○ 能夠獨立完成用戶故事的編寫
○ 熟悉敏捷開發過程,熟練使用backlog來進行產品規劃
○ 良好的溝通能力

– 1名技術經理
○ 熟練使用C#/ASP.NET MVC/HTML/JavaScript/CSS等開發語言
○ 熟悉主流前端開發框架和Restful接口
○ 熟悉Microsoft Azure雲計算平臺
○ 熟悉互聯網開發,具有管理研發團隊經驗
○ 熟悉敏捷開發過程,數量使用backlog,sprint,burndown,kanban等工具來進行產品開發過程管理
○ 良好的溝通能力

固然,根據應用的複雜度和業務量的不一樣,咱們也能夠對以上團隊結構進行簡化或擴展;若是咱們資源有限,能夠按照如下思路簡化團隊

  • 將Team 1和Team 2合併,節省2名開發人員;由於你們都使用C#語言,MVC架構和REST接口的實現與前臺開發關係緊密,這樣作不只僅能夠節約成本,還能夠提升開發效率,節約團隊間的溝通成本;當前,前提是工做量和進度的要求能夠知足。
  • 在Team 1/2合併的基礎上,咱們還能夠考慮只使用一種跨平臺技術(Apache Cordova或者Xamarin),這個案例中,爲了可以展現不一樣跨平臺技術的優劣而同時使用了2種技術;而在真實的項目中,咱們徹底能夠只使用一種;這樣,咱們還能夠考慮砍掉team 3,而由Team 1/2完成全部工做,這也是使用HTML/javascript做爲統一的前端語言以及Apache Cordova提供的最大優點;讓咱們可使用最少的團隊實現最多的移動平臺覆蓋;固然,若是用戶對於界面體驗要求較高,使用Xamarin原生跨平臺方案仍是有其優點的。

隨着業務的推動,咱們也許須要擴展團隊,使用跨平臺開發技術前提下,不管簡化或者擴展團隊,咱們的團隊永遠會和業務對齊,不會有多條業務線使用同一個技術團隊的狀況出現。在傳統的開發模式下,若是你沒有足夠的資源給每一個業務線(司機/租客等)配備獨立的技術團隊,而按照技術平臺(iPhone/Android)來組建團隊架構的話,就會出現不一樣的業務線須要同一個技術團隊作不一樣的事情,這時候必然會形成資源衝突,形成內耗。而使用跨平臺開發技術就很好的避免了這個問題,由於咱們沒必要由於技術不一樣而割裂本應該跟隨業務的團隊結構。大型軟件研發團隊的管理中的首要原則就是團隊應該和業務對齊,而不要受技術選型的影響;這樣作的目的是爲了咱們能夠根據業務線的需求,最小化外界因素對交付的影響,作到按照業務功能持續交付;而多條業務線使用同一個技術團隊,不只僅開發人員無所適從,也會大幅增長溝通成本,形成質量問題。

最後,對於團隊建設和能力成長,採用跨平臺技術的團隊使用一樣的語言,工具,開發環境;這使得團隊成員的溝通變得容易,你們能夠一塊兒交流技術,互相幫助對方完成工做,這樣更加有利於咱們創建健康的團隊氛圍,培養你們互相協做的氣氛。

按照以上團隊能力,下表中咱們看到研發成本的計算:

(如下開發人員工資的數據採集自CSDN的2013年開發者薪資調查,根據這份調查的數據我大體估算了各個類別程序員的薪資中上位水平,同時乘以1.4的係數以考慮社保等因素來計算整體月成本。調查原文:http://www.csdn.net/article/2014-03-26/2818997/1 )

cross-plat-cost-analysis-1

須要特別提一句,這裏的團隊配置中咱們對每一個技術崗位的職位都配置了2個開發人員,同時不一樣技術崗位由於所使用的技術很是類似,都具有互換性。崗位的互換性對於咱們避免員工生病/請假/離職所帶來的影響很是重要!並且我這裏的平均工資達到了18000元/月,比產品經理的那個計算方式更高!這意味着你能夠聘用更高水平的開發人員。

按照以上咱們也能夠推算出前3年的開發成本:

cross-plat-cost-analysis-3years

若是按照以上計算,單單使用跨平臺移動開發技術,就能夠在第一年爲你節省將超過60萬元的研發成本,隨着團隊的擴大(由於APP團隊佔研發成本的大部分),節省的比例和金額會變得更加驚人!請你們注意,在「產品經理」的計算中,他所使用的「初版」成本是按照6個月計算的,大體100萬的研發成本,和我這裏的「傳統」計算方式基本一致,而實用「跨平臺」技術的「初版」成本比「產品經理」的計算方式低20萬元!

在現實中,我遇到的朋友不少都問我怎樣多快好省地開發一款app,我經常告訴他們應該用跨平臺技術;但最後的結果他們仍是會選擇傳統的各平臺獨立開發的方式,但願以上的分析可以幫助這些朋友能夠對「跨平臺」技術的成本優點有所瞭解。固然,你內心關於這些技術的其餘疑問,好比他們和傳統原生app有哪些不一樣,各類不一樣的跨平臺技術間有哪些優劣,在後續的文章中我都會一一解答……  

更多內容,請關注公衆微信號 DevOps

世界上不是全部的東西都是用直接經濟契約來維繫的,好比:陽光,空氣,愛情和開源軟件。
相關文章
相關標籤/搜索