好的技術(shù)選型,能最大程度地提高企業(yè)和團(tuán)隊(duì)的效率,從而開(kāi)發(fā)出滿(mǎn)足用戶(hù)需求的產(chǎn)品。作為一線的技術(shù)管理者,他們都是怎樣做的呢?
大公司或者大一點(diǎn)的團(tuán)隊(duì)的技術(shù)選型幾乎不需要太多討論,因?yàn)樽詈髸?huì)不可避免地繞到技術(shù)官僚的話題上去。這里我簡(jiǎn)單說(shuō)說(shuō)技術(shù)型創(chuàng)業(yè)團(tuán)隊(duì)的技術(shù)選型問(wèn)題。
擁抱開(kāi)源技術(shù)
如果只能選擇微軟的 技術(shù)路線,比如團(tuán)隊(duì)只會(huì)用微軟技術(shù),也不想學(xué)別的,那么似乎沒(méi)有別的辦法,將就一下吧。如果還有的選擇,盡量使用開(kāi)源技術(shù)。這樣不但可以有效降低軟硬件成 本,還有更多的部署方案可供選擇,服務(wù)器上線甚至還能避免病毒的侵襲。開(kāi)源技術(shù)的好處是出了問(wèn)題,你總有辦法可以找到答案。而用微軟的產(chǎn)品,可能平時(shí)不出 問(wèn)題,但一出問(wèn)題,你根本沒(méi)什么辦法。微軟的產(chǎn)品使用門(mén)檻倒是低,但復(fù)雜度可一點(diǎn)都不小,而且隨著發(fā)展,成本越來(lái)越高。國(guó)內(nèi)有幾個(gè)大中型網(wǎng)站,比如天涯、 5173、大眾點(diǎn)評(píng)、京東等,怕是深有感觸吧,有的因?yàn)槌杀咎叨^續(xù)被捆綁,有的則破釜沉舟要擺脫這種束縛,但不管怎樣,總要付出一定的開(kāi)銷(xiāo)。
開(kāi)源技術(shù)路線有數(shù)種分支,該怎樣選擇呢?選擇大路貨,選擇可以掌控的開(kāi)源技術(shù)產(chǎn)品、語(yǔ)言、程序、框架,乃至解決方案。比如PHP,比不上Ruby陽(yáng)春白雪,但用戶(hù)基數(shù)大,總能找到不錯(cuò)的工程師。PHP雖然粗糙,但是管用。以PHP作為開(kāi)發(fā)語(yǔ)言的成功產(chǎn)品不計(jì)其數(shù),很多東西根本不需要你再開(kāi)發(fā),稍加定制即可。技術(shù)本身沒(méi)有高下之分,差別在于使用技術(shù)的人。
避免過(guò)度炫技
技術(shù)人員創(chuàng)業(yè)最容易犯的一個(gè)錯(cuò)誤就是“炫技”,即熱衷于使用最新、最時(shí)髦的技術(shù)。新東西的確可以給技術(shù)人員以滿(mǎn)足感,但也很快會(huì)將你的時(shí)間資源消耗進(jìn)去,除非你準(zhǔn)備做的是一款基礎(chǔ)產(chǎn)品,否則你要花時(shí)間去學(xué)新規(guī)范、熟悉新功能、對(duì)付新出現(xiàn)的軟件Bug……但這時(shí)你最需要做的是開(kāi)發(fā)產(chǎn)品,而不是搗鼓其他東西。一些新技術(shù)或者方案,可以花些時(shí)間分析一下但沒(méi)必要立刻就用,只需確保將來(lái)有一天能真的用上時(shí),對(duì)一些重大的陷阱或是缺陷能夠了然即可。
很多人神往37Signals的成功,但你一定要知道類(lèi)似37Signals的團(tuán)隊(duì),默默無(wú)聞地夭折掉的不知道有多少。每當(dāng)看到創(chuàng)業(yè)團(tuán)隊(duì)就那么1~2個(gè) 人還整天搗鼓Go、Erlang這些東西,并想硬生生地用到產(chǎn)品中去,我就知道,這樣的團(tuán)隊(duì)要懸了。有這些精力和能力,應(yīng)該想辦法盡快讓技術(shù)變現(xiàn),研究一 下怎樣改進(jìn)產(chǎn)品、怎樣給用戶(hù)帶來(lái)更大的價(jià)值,而這些不一定用最好的技術(shù)才能做好。想辦法盡快讓產(chǎn)品發(fā)布,盡快接受更多人給你第一輪反饋,只憑創(chuàng)業(yè)團(tuán)隊(duì)幾個(gè) 人閉門(mén)冥想是很難出來(lái)好產(chǎn)品的,有時(shí)產(chǎn)品推出的時(shí)機(jī)比完備的功能更重要:GroupOn最早不過(guò)是搭建在WordPress上的幾個(gè)頁(yè)面,而阿里巴巴網(wǎng)站最初也不過(guò)是一個(gè)論壇,你又何必等到所有細(xì)節(jié)都打磨好呢?
擁抱開(kāi)源技術(shù),避免過(guò)度炫技,如果技術(shù)型團(tuán)隊(duì)創(chuàng)業(yè)(做互聯(lián)網(wǎng)),這兩條都能堅(jiān)持的話,我想你已經(jīng)抓住了問(wèn)題的80%的部分,基本上你不會(huì)做太多的無(wú)用功。
另外,剛啟動(dòng)時(shí)不要直接招技術(shù)總監(jiān)、技術(shù)經(jīng)理、架構(gòu)師這些看起來(lái)級(jí)別很高的人,因?yàn)樗麄兾幢卣J(rèn)同你的想法和你現(xiàn)在的團(tuán)隊(duì)。建議找能實(shí)現(xiàn)你產(chǎn)品想法的人。最后有一點(diǎn)必須要說(shuō)一下:不要因?yàn)橐粋€(gè)人的技術(shù)喜好而舍棄整個(gè)技術(shù)團(tuán)隊(duì),在任何時(shí)候這都是很愚蠢的事情。
作者馮大輝,丁香園網(wǎng)站CTO
在重大產(chǎn)品決策或者大規(guī)模應(yīng)用開(kāi)發(fā)前一般需要進(jìn)行技術(shù)選型,其目的是為了降低產(chǎn)品研發(fā)的技術(shù)風(fēng)險(xiǎn)。所以首先需要明確為什么需要技術(shù)選型、需要達(dá)到什么目的,整個(gè)過(guò)程需要有一套的組織流程來(lái)保證。
一般可以將整個(gè)過(guò)程分為調(diào)研、候選對(duì)比、關(guān)鍵技術(shù)驗(yàn)證、原型驗(yàn)證幾個(gè)階段。在調(diào)研階段主要調(diào)研對(duì)象是目前該范圍業(yè)內(nèi)主要產(chǎn)品以及開(kāi)源產(chǎn)品,需要了解其主 要技術(shù)特點(diǎn)和各自的優(yōu)勢(shì)和劣勢(shì);在候選對(duì)比階段,是在前一階段基礎(chǔ)上選出兩種傾向用于最終路線的技術(shù)進(jìn)行進(jìn)一步的研究和對(duì)比。在關(guān)鍵技術(shù)驗(yàn)證階段,需要列 出所有的技術(shù)驗(yàn)證點(diǎn),對(duì)驗(yàn)證點(diǎn)描述、驗(yàn)證方法、驗(yàn)證步驟、驗(yàn)證前提、驗(yàn)證環(huán)境以及最后的交付物和評(píng)估方法指標(biāo)在驗(yàn)證方案中體現(xiàn);在原型驗(yàn)證階段,主要是針 對(duì)重點(diǎn)關(guān)注的場(chǎng)景,通過(guò)一個(gè)原型來(lái)整體驗(yàn)證比較。在這個(gè)階段一般需要進(jìn)行概念模型、編程模型以及結(jié)構(gòu)設(shè)計(jì)例如設(shè)計(jì)時(shí)視圖、系統(tǒng)結(jié)構(gòu)圖等,定義需要的 API,必要時(shí)還需要?jiǎng)澐肿訄?chǎng)景,在場(chǎng)景中包括場(chǎng)景描述、Feature、預(yù)研點(diǎn)以及相關(guān)設(shè)計(jì)。
當(dāng)然也需要對(duì)人員角色進(jìn)行分工,一般劃分程序經(jīng)理、開(kāi)發(fā)人員、測(cè)試人 員幾種角色。程序經(jīng)理需要確定原型目標(biāo)范圍,編寫(xiě)原型目標(biāo)文檔并組織評(píng)審;制訂和跟蹤原型開(kāi)發(fā)計(jì)劃,對(duì)原型進(jìn)行驗(yàn)證,確保原型符合原型目標(biāo)要求。開(kāi)發(fā)人員 需要從開(kāi)發(fā)角度提出原型需求,評(píng)審原型目標(biāo)文檔,按照原型目標(biāo)文檔和原型開(kāi)發(fā)計(jì)劃完成原型相關(guān)設(shè)計(jì)和開(kāi)發(fā)。測(cè)試人員需要Review原型目標(biāo)文檔,根據(jù)原 型目標(biāo)文檔采用一定的測(cè)試手段驗(yàn)證原型是否符合原型目標(biāo)要求。
在最近我們進(jìn)行的ESB新產(chǎn)品中,就采用了類(lèi)似上述的流程。我們確信技術(shù) 選型的最主要目標(biāo)是要自主掌控,所以從非常底層的技術(shù)開(kāi)始,重點(diǎn)關(guān)注并發(fā)、資源隔離這樣的目標(biāo),解決在不確定環(huán)境中實(shí)現(xiàn)交易控制和可擴(kuò)展的目標(biāo)。所以我們 設(shè)計(jì)了一個(gè)三段式的SEDA架構(gòu),基本原則是要實(shí)現(xiàn)架構(gòu)的資源可分配性,提升吞吐率,當(dāng)然最初實(shí)現(xiàn)的功能可以比較簡(jiǎn)單。通過(guò)上述流程,有效保證了我們?cè)谛?產(chǎn)品研發(fā)過(guò)程中的效率和產(chǎn)品架構(gòu)質(zhì)量。
最后,在技術(shù)選型產(chǎn)出物上,一般的結(jié)果可以有三類(lèi),有馬上轉(zhuǎn)化應(yīng)用的新產(chǎn)品,也可以是結(jié)合現(xiàn)有產(chǎn)品的一個(gè)解決方案,或者是某個(gè)方面的一個(gè)提升點(diǎn)(如一個(gè)新的組件)。
作者馮興智,普元信息資深架構(gòu)師
關(guān)于公司/團(tuán)隊(duì)技術(shù)選型的話題涉及到很多非技術(shù)層面的問(wèn)題,特別是大公司在技術(shù)選型方面,不可避免要受到企業(yè)官僚的影響。
下面我結(jié)合自己公司的實(shí)際情況,談?wù)劤鮿?chuàng)企業(yè)或小型開(kāi)發(fā)團(tuán)隊(duì)的技術(shù)選型。技術(shù)選型涉及產(chǎn)品/項(xiàng)目開(kāi)發(fā)流程中各個(gè)環(huán)節(jié)所用到的工具和技術(shù)。例如項(xiàng)目開(kāi)發(fā)前期的需求收集、整理分析工具、開(kāi)發(fā)階段的IDE和版本控制系統(tǒng)、測(cè)試階段的測(cè)試工具等。
我們作為初創(chuàng)企業(yè)在進(jìn)行技術(shù)選型時(shí)會(huì)根據(jù)產(chǎn)品的需求、技術(shù)的復(fù)雜性、可擴(kuò)展性、跨平臺(tái)可移植性以及成本來(lái)做出最終的決策。
成本因素
初創(chuàng)企業(yè)的資源特別是資金往往不是很充裕,如果采用商業(yè)化的技術(shù)解決方案,往往價(jià)格不菲,像Visual Studio專(zhuān)業(yè)版、Windows Server、SQL Server的價(jià)格動(dòng)輒上萬(wàn),這種情況下不妨考慮一些免費(fèi)開(kāi)源的技術(shù)框架。比如使用SharpDevelop代替Visual Studio,MySQL代替SQL Server。此外,也可關(guān)注并加入一些針對(duì)初創(chuàng)企業(yè)的扶植計(jì)劃。例如我們創(chuàng)業(yè)前所工作的公司采用的都是微軟技術(shù),大家對(duì)微軟技術(shù)掌握得很熟練,這樣自己 成立公司開(kāi)發(fā)自己的產(chǎn)品時(shí)同樣優(yōu)先考慮微軟技術(shù)。我們通過(guò)加入微軟的BizSpark計(jì)劃,有效降低了成本。
復(fù)雜性,成熟度
我們?cè)谧黾夹g(shù)選型時(shí)最忌諱的就是盲目追崇新技術(shù)和框架。有些技術(shù)剛剛面世不久,還沒(méi)有成熟的社區(qū)支持和成功案例。如果這時(shí)為了趕時(shí)髦或者在產(chǎn)品 的推廣宣傳上加點(diǎn)花頭而采用新技術(shù)的話,往往會(huì)導(dǎo)致項(xiàng)目陷入泥潭。采用不成熟技術(shù)而導(dǎo)致失敗的案例比比皆是,如網(wǎng)景在Java剛面世不久就使用Java重 寫(xiě)Netscape Navigator瀏覽器,導(dǎo)致用戶(hù)體驗(yàn)大幅下降及用戶(hù)群的流失。還有當(dāng)時(shí)被稱(chēng)為下一代Windows客戶(hù)端技術(shù)的WPF,到現(xiàn)在發(fā)展得仍然不瘟不火,如 果僅僅是為了更炫的展現(xiàn)效果而使用WPF,結(jié)果肯定會(huì)得不償失。
產(chǎn)品自身因素
技術(shù)選型不可避免地要以產(chǎn)品為中心。如果產(chǎn)品是Windows智能客戶(hù)端軟件,那么微軟的技術(shù)框架必然成為優(yōu)先考慮。如果開(kāi)發(fā)Android軟件,Eclipse和Android SDK同樣必不可少。
作者石鈺,奈特軟件聯(lián)合創(chuàng)始人、首席架構(gòu)師
我在微軟和騰訊從事了三年的軟件測(cè)試和團(tuán)隊(duì)管理工作,期間涉及兩大類(lèi)的研發(fā)工作:第一,用于質(zhì)量控制的各種平臺(tái)系統(tǒng),例如缺陷管理系統(tǒng)、用例管 理系統(tǒng)、產(chǎn)品健康指數(shù)可視化系統(tǒng)、自動(dòng)測(cè)試管理系統(tǒng)等;第二,用于具體的產(chǎn)品測(cè)試工具,例如桌面軟件的UI自動(dòng)化測(cè)試工具、JavaScript自動(dòng)化測(cè) 試工具、Web服務(wù)壓力/性能測(cè)試工具等。
在團(tuán)隊(duì)的建設(shè)和技術(shù)選型上,遇到過(guò)一些困惑也走過(guò)一些彎路,總結(jié)出來(lái)有兩點(diǎn)經(jīng)驗(yàn)。
閱讀公司文化,借鑒成功團(tuán)隊(duì)經(jīng)驗(yàn)
測(cè)試團(tuán)隊(duì)一定要深刻閱讀和理解公司文化,作為其技術(shù)選型的首要考慮因素。比如,在微軟,無(wú)論是構(gòu)建質(zhì)量控制系統(tǒng),還是開(kāi)發(fā)各種產(chǎn)品測(cè)試工具,都以Windows+IIS+.NET作為技術(shù)框架;在騰訊,就會(huì)選擇LAMP這樣的開(kāi)源技術(shù)框架。
在選定了技術(shù)框架的基礎(chǔ)上,還面臨一個(gè)問(wèn)題,就是應(yīng)該如何去設(shè)計(jì)和實(shí)現(xiàn)出具體的系統(tǒng)或者工具。一個(gè)非常重要的經(jīng)驗(yàn)就是一定要借鑒成功團(tuán)隊(duì)的經(jīng) 驗(yàn),站在巨人的肩上。例如,當(dāng)初在騰訊,我們需要評(píng)測(cè)QQ地圖的POI檢索功能的質(zhì)量和用戶(hù)滿(mǎn)意度。于是,我們花兩周時(shí)間設(shè)計(jì)了一個(gè)自以為完美的盲測(cè)系 統(tǒng),結(jié)果在評(píng)審時(shí)才發(fā)現(xiàn)該盲測(cè)系統(tǒng)功能過(guò)于簡(jiǎn)單而且性能達(dá)不到指標(biāo)。后來(lái),我們?cè)谂c騰訊SOSO團(tuán)隊(duì)討論時(shí),才發(fā)現(xiàn)他們經(jīng)過(guò)多年的研發(fā),已經(jīng)有一款非常完 善的搜索盲測(cè)系統(tǒng),直接借鑒過(guò)來(lái),就能很好地解決項(xiàng)目測(cè)試的問(wèn)題。這點(diǎn)特別是對(duì)很多新任命的團(tuán)隊(duì)負(fù)責(zé)人,是很重要的經(jīng)驗(yàn)。
敏捷務(wù)實(shí),持續(xù)集成,切勿過(guò)設(shè)計(jì)
工程的基本要素是實(shí)用和強(qiáng)調(diào)執(zhí)行力。對(duì)于一個(gè)軟件/互聯(lián)網(wǎng)企業(yè)或者團(tuán)隊(duì)而言,最重要的是先解決眼前遇到的具體問(wèn)題,而不是盲目追求系統(tǒng)的擴(kuò)展性 和性能。例如,我們?cè)跍y(cè)評(píng)QQ地圖后臺(tái)服務(wù)的性能狀況時(shí),首先想到的是選用的測(cè)試方案要具備良好的功能特性,可擴(kuò)展性要強(qiáng)、足夠開(kāi)放,能夠與已有的一個(gè)研 發(fā)管理系統(tǒng)做集成。按照這個(gè)標(biāo)準(zhǔn),我們選擇了LoadRunner,這是一個(gè)比較復(fù)雜的工具,光配置就花掉了大量的時(shí)間。結(jié)果,導(dǎo)致實(shí)際測(cè)試的時(shí)間太靠 后,發(fā)現(xiàn)的性能問(wèn)題都無(wú)法在即將發(fā)布的版本中得到修正。這就是一個(gè)非常典型的因?yàn)檫^(guò)設(shè)計(jì)而引發(fā)的技術(shù)選型耽誤工程進(jìn)度的例子。后來(lái),我們選用 http_load這個(gè)開(kāi)源、簡(jiǎn)單、實(shí)用的工具對(duì)后臺(tái)服務(wù)做快速的壓力測(cè)試,從而在第一時(shí)間得到測(cè)試報(bào)告。然后在沒(méi)有測(cè)試任務(wù)的時(shí)候,花時(shí)間將該工具集成 至研發(fā)管理系統(tǒng)中,做到了持續(xù)集成。
其實(shí)總結(jié)起來(lái),測(cè)試團(tuán)隊(duì)的技術(shù)選型首先要順應(yīng)公司的框架性要求,然后在具體實(shí)施過(guò)程中,要以解決問(wèn)題作為決策目標(biāo),多向成功團(tuán)隊(duì)取經(jīng),敏捷務(wù)實(shí),切勿過(guò)設(shè)計(jì)。
作者劉舒,阿里巴巴高級(jí)產(chǎn)品經(jīng)理,曾任微軟測(cè)試開(kāi)發(fā)工程師、騰訊測(cè)試經(jīng)理
轉(zhuǎn)載自:http://www.programmer.com.cn/8514/