2011年6月21日

文摘:選個程式語言好創業

Choosing a Programming Language and Framework for Your Startup》作者Tony Karrer,是TechEmpower的CEO兼任CTO,這家網站開發公司位於洛杉磯,擁有e-Learning領域的頂尖技術。Kareer講授資訊科學11年,並有20年擔任CTO的經驗,他在多家財星500大企業從事社群媒體(social media)、e-Learning及績效支援(Performance Support)工作。

日前在洛杉磯資訊技術長論壇(LA CTO Forum),他們做了一場有趣的簡報,關於那些採用GroovyGrails開發框架的新創事業。對於創業技術長們,該如何選擇程式語言和開發框架,有了一場精采的討論,以下是從討論產出的一些見解。

清楚你該何去何從

在實際開發任何軟體之前,必須先做足功課,再來思考選什麼語言及框架。
(譯註:有很多人做專題或專案,一開始就不斷思考、嘗試有趣的技術,並不斷圍繞這些技術進行辯論,但是並沒有深入去瞭解這些技術,或是仔細去思考要做什麼產品。)

盡可能貼近功能需求

假設你的產品或服務,功能方面需要內容管理、組織會員的功能,找一個功能接近的軟體(通常是自由軟體)當基礎,例如DrupalJoomla等架站軟體,幾乎就能將基本功能都搞定,開發團隊可以把時間用在那些影響產品或服務成敗的關鍵。如果你選擇這樣做,在你的選擇的技術組合中,就至少會包含這些軟體本身的開發語言和基礎框架(如PHPCodeIgniter)。

同理,如果你需要開發一組函式庫,而某一種語言已經有現成的程式庫,選那個語言就能省下一些力氣。(例如想要整合Plurk功能,而Python提供的plurkapipy正好可以滿足需求。)

如果你想發展行動應用軟體,或是以某個程式庫為基礎發展應用,這時候你選擇的語言和框架,就必須跟某樣東西緊密的結合在一起。舉例來說,當你的Web-based應用程式,想要在PC瀏覽器有豐富的畫面元件,而在iOS或Android手機上,可以操作起來就好像專屬開發的App應用程式,就可以考慮Sencha(Ext JS開發者)的解決方案。

考慮那些人

那些已經存在的程式碼,還有撰寫那些程式碼的人,他們瞭解哪些程式語言,會影響最終的選擇。你組織的那些人或股東們,他們可能有特定的程式語言偏好或已經擁有的才能,有時候你想找來投資者(或共同創辦人),你或許需要使用某一種程式語言完成工作。(有些創投目前很喜歡Ruby)

常見的迷思

迷思一、你如果用Ruby開發將可以快10倍

確實用Ruby on Rails或Groovy on Grails,以及其他許多敏捷開發框架,都可以讓軟體專案開發的速度明顯加快。但是別以為原本要花30天的專案,現在只要3天就能完成,這些進步的開發框架,讓開發團隊能省下一些時間,也許是整個專案之中1~2成的部分,可以提升個3倍開發速度。但別忘了真正影響專案開發時間的因素還有很多,撰寫程式只是其中一小部分。

(譯註:雖然用了先進的開發框架,並不會讓專案進度從三輪車變火箭,但如果已經有那麼多進步的框架和工具,你身為CTO卻仍堅持要用那些陳年的老方法,就是不重視開發人員寶貴的時間、以及對技術學習的熱情;許多不必要的加班可能因此產生,例如延後下班好幾個小時,只為了解決一個難搞、不在進度之內的複雜設定。因此技術雖然不是重點,但CTO選擇了什麼樣的技術組合,最後就會吸引什麼樣的人一起共事。明白的說法是,如果CTO堅持用陳年的蠢方法開發軟體,就會擁有一批不願意求進步的蠢蛋開發團隊,最後只好採取更先進的有效管理方法,但仍然造不出卓越的軟體。)

迷思二、用Ruby就對了

StackOverflow有一篇討論,從2011年這個時間點,比較Rails及Grails兩種開發框架。其中被評選為最佳解答的回覆這麼說:
  • Rails的水平擴充(scale)不如Grails
  • Rails在NoSQL替代方案稍微贏了一些,但Grails即將趕上 (譯註:此處講的NoSQL是MVC框架中Model對NoSQL資料庫的支援度)
  • Rails有更多擴充套件(Plugins)
  • 此時此刻Rails更成熟且有更多功能特點(features),因為它發展比較久
  • Rails對REST(一種Web Services的實作方式)支援非常好
  • 關於Rails的"大"站比Grails多
  • 在JVM環境Grails的整合比JRuby更好
2011年的TIOBE程式語言排名,你可以看到趨勢,Ruby仍佔有一席之地。(譯註:但Java仍大幅領先,PHP也維持前五名,C#持續熱門,Lua大幅晉升前10名,JavaScript也快逼近了,而古老的C/C++仍有屹立不搖的地位。Ruby/Rails是很棒的程式語言/開發框架,但可不要把它當成救世主。)


眉批:CTO掛上一個「長」字輩,決策往往是牽一髮而動全身,對技術保有開闊的視野更顯得重要。

沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!