鍍金池/ 教程/ Java/ 開源與中小型軟件公司的未來趨勢(shì)
分布式鎖的簡(jiǎn)單實(shí)現(xiàn)
關(guān)于框架體系與戰(zhàn)術(shù)的思考
開源與中小型軟件公司的未來趨勢(shì)
生態(tài)圈的建立
用200行的DBF解析器來展示良好架構(gòu)設(shè)計(jì)
緣起
業(yè)務(wù)流程引擎設(shè)計(jì)
軟件開發(fā)雜談
高屋建瓴,理念先行
借船下海還是造船下海
Web界面快速開發(fā)實(shí)踐
教計(jì)算機(jī)程序解數(shù)學(xué)題
量身定制規(guī)則引擎,適應(yīng)多變業(yè)務(wù)場(chǎng)景
緩存相關(guān)代碼的演變
理想的開源框架與設(shè)計(jì)原則
框架2.0的設(shè)計(jì)梳理
與屈原對(duì)話及開源精神

開源與中小型軟件公司的未來趨勢(shì)

在我的周邊朋友身邊就發(fā)生過這樣的事情:

故事1:

A君在北京從事Java開發(fā)好多年了,萌發(fā)了創(chuàng)業(yè)的念頭,想組建了一個(gè)開發(fā)團(tuán)隊(duì)想大干一場(chǎng)。但是慢慢發(fā)現(xiàn),構(gòu)建一個(gè)有戰(zhàn)斗力的團(tuán)隊(duì)真不容易。后來技術(shù)團(tuán)隊(duì)的組建初步有了起色,但是技術(shù)路線卻非常難成一致意見。折騰來折騰去,把有點(diǎn)上道的技術(shù)人員都折騰得跳槽了。費(fèi)了巨高的成本搞了一個(gè)架構(gòu)師,就是利用SSH框架搭建了一個(gè)開發(fā)環(huán)境,數(shù)據(jù)量小,業(yè)務(wù)初期還是不錯(cuò)的,但是當(dāng)業(yè)務(wù)快速增長(zhǎng)的時(shí)候,運(yùn)行速度就無法滿足需要了。是重新來過還是在SSH的基礎(chǔ)上繼續(xù)折騰,非常難以抉擇!

故事2:

Jenny從英國(guó)回青島大半年了,很喜歡青島這座海濱城市,空氣很好,周圍的一草一木也很親切,這也是當(dāng)初為什么回來的原因之一。不過,Jenny一直在為產(chǎn)品管理的事情焦頭爛額。除了開發(fā)成本高,軟件層次一直比較低。產(chǎn)品團(tuán)隊(duì)管理之外,還要考慮技能水平、分工、角色崗位、薪酬、性格特點(diǎn)等等,各方面都耗費(fèi)了大量的時(shí)間。由于缺乏大規(guī)模的壓力測(cè)試,花了大量時(shí)間做出來的產(chǎn)品,卻不能適應(yīng)海量數(shù)據(jù)下的大并發(fā)訪問。想找一些高手吧,在軟件業(yè)本來就不發(fā)達(dá)的二線城市又不太現(xiàn)實(shí);離開二級(jí)城市轉(zhuǎn)到一級(jí)城市發(fā)展吧,又承擔(dān)不起高額的運(yùn)營(yíng)成本與人力資源成本,路在何方真的是個(gè)問題!

故事3:

經(jīng)過大半年的籌備,阿燦的技術(shù)團(tuán)隊(duì)終于組建起來了。不過,人員流動(dòng)始終是個(gè)揮之不去的話題。換了人,技術(shù)方案就要換,隨之而來的維護(hù)問題也是讓人焦頭爛額!阿燦沮喪了,他怎么也想不明白,為什么新來的人就不愿意繼續(xù)在老人留下來的系統(tǒng)上進(jìn)行維護(hù)和再開發(fā)呢?如果才能建得起來鐵大的營(yíng)盤?

類似的故事,不勝枚舉??偨Y(jié)一下問題出在如下幾個(gè)方面:

1. 人員培養(yǎng)速度緩慢

從人力資源團(tuán)隊(duì)的角度來講,更多考慮人員的職業(yè)道德是否符合企業(yè)文化和價(jià)值觀。而軟件開發(fā)項(xiàng)目經(jīng)理更多考慮的是,新成員是否能夠?yàn)檐浖_發(fā)項(xiàng)目做出貢獻(xiàn),并符合項(xiàng)目文化和價(jià)值觀。如果你的軟件開發(fā)團(tuán)隊(duì)都不是自己親手組建起來的,你又如何能夠保證軟件開發(fā)團(tuán)隊(duì)能夠按你期望的模式運(yùn)作?應(yīng)聘人員通過各種認(rèn)證,僅僅代表具備了基本的知識(shí)體系和理論基礎(chǔ)。但任何認(rèn)證都無法真正體現(xiàn)出每個(gè)人的學(xué)習(xí)能力和應(yīng)用知識(shí)的能力,而這兩點(diǎn)恰恰是軟件開發(fā)項(xiàng)目最關(guān)心的技能。尤其是,要成為一個(gè)優(yōu)秀的軟件架構(gòu)師,往往需要具備10年以上的軟件開發(fā)經(jīng)驗(yàn),入門的門檻是相當(dāng)高的,尤其是在互聯(lián)網(wǎng)產(chǎn)品愈發(fā)重要的當(dāng)下,一個(gè)軟件架構(gòu)師往往需要掌握多項(xiàng)技能,他所需要的知識(shí)面會(huì)很廣,需要過程更需要時(shí)間的學(xué)習(xí)和磨練。

2. 人員開發(fā)效率低下

一個(gè)產(chǎn)品往往需要多個(gè)部門的合作,各部門溝通的有效性直接會(huì)影響到產(chǎn)品的質(zhì)量和產(chǎn)品的進(jìn)度。如果技術(shù)開發(fā)人員沒有良好的交流溝通能力,可能會(huì)嚴(yán)重阻礙項(xiàng)目的推動(dòng)。尤其是小型的團(tuán)隊(duì)開發(fā)中,缺乏溝通往往會(huì)導(dǎo)致成員對(duì)任務(wù)內(nèi)容、要求和職責(zé)理解有誤,導(dǎo)致開發(fā)效率低下,甚至引發(fā)成員間的矛盾。開發(fā)人員如果不能清楚地表達(dá)工作計(jì)劃、遇到的困難、需要什么支持,會(huì)導(dǎo)致項(xiàng)目負(fù)責(zé)人無法及時(shí)掌握項(xiàng)目進(jìn)展情況,并進(jìn)行合理分配資源。在工作中時(shí)常會(huì)發(fā)生別人(通常是上級(jí))征詢意見時(shí)不知如何表達(dá),但被分配具體工作后又覺得自己未被尊重,從而產(chǎn)生挫折感。技術(shù)開人員大多思維能力強(qiáng)于交流溝通能力,性格也大多趨向于內(nèi)向,喜歡做事多于說話。如何提高自身溝通交流能力是擺在很多開發(fā)人員面前的一大難題。

3. 技術(shù)架構(gòu)不統(tǒng)一沒有延續(xù)性

作為設(shè)計(jì)師,需要保證產(chǎn)品功能的現(xiàn)實(shí),產(chǎn)品功能的可持續(xù)性,產(chǎn)品的穩(wěn)定性及產(chǎn)品的可用性等。產(chǎn)品的這些需求都依賴于架構(gòu)師對(duì)產(chǎn)品技術(shù)的規(guī)劃。架構(gòu)師在接到商業(yè)需求之后,最主要的工作就是將其轉(zhuǎn)化為技術(shù)需求。這個(gè)過程的完成與架構(gòu)師抽象思維的能力密不可分。好比說Tiny框架這個(gè)項(xiàng)目,主架構(gòu)師第一個(gè)閃過的念頭多半就是:這個(gè)系統(tǒng)必須具有長(zhǎng)期的統(tǒng)一性。而負(fù)責(zé)每一個(gè)Tiny框架功能的架構(gòu)師,又需要對(duì)這些部分進(jìn)行進(jìn)一步的抽象化。這些往往是中小企業(yè)團(tuán)隊(duì)所不具備的。由于缺乏優(yōu)秀的架構(gòu)師,導(dǎo)致團(tuán)隊(duì)在產(chǎn)品的現(xiàn)實(shí)規(guī)劃上沒有自己明確的目標(biāo)和具體的可行性實(shí)施方案,缺乏統(tǒng)一的延續(xù)性,導(dǎo)致后期難以滿足產(chǎn)品在升級(jí)、改版方面的需要。

4. 性能不能滿足運(yùn)營(yíng)要求

整天只知道大談“云計(jì)算,SaaS”這些東西的團(tuán)隊(duì),注定開發(fā)不出優(yōu)秀的產(chǎn)品。這種毛病在新的開發(fā)團(tuán)隊(duì)非常常見,因?yàn)檫@可以忽悠更多的客戶。不過,新的技術(shù)雖好,程序員接受和再培訓(xùn)還需要時(shí)間,還要考慮到系統(tǒng)的兼容性問題。因此,夸夸其談的名詞專家,往往死得更慘。尤其是出現(xiàn)大并發(fā)的數(shù)據(jù)考驗(yàn)時(shí),做出來的產(chǎn)品往往會(huì)難以滿足運(yùn)營(yíng)要求。

5. 構(gòu)建開發(fā)框架成本太高無法承受

時(shí)下各種軟件系統(tǒng)發(fā)展越來越復(fù)雜,尤其是框架軟件,其涉及的問題以及知識(shí)面太多。當(dāng)網(wǎng)站變大后,不可避免的需要拆分應(yīng)用進(jìn)行服務(wù)化,以提高開發(fā)效率,調(diào)優(yōu)性能,節(jié)省關(guān)鍵競(jìng)爭(zhēng)資源等。當(dāng)服務(wù)越來越多時(shí),服務(wù)的URL地址信息就會(huì)爆炸式增長(zhǎng),配置管理變得非常困難,F(xiàn)5硬件負(fù)載均衡器的單點(diǎn)壓力也越來越大。當(dāng)進(jìn)一步發(fā)展,服務(wù)間依賴關(guān)系變得錯(cuò)蹤復(fù)雜,甚至分不清哪個(gè)應(yīng)用要在哪個(gè)應(yīng)用之前啟動(dòng),架構(gòu)師都不能完整的描述應(yīng)用的架構(gòu)關(guān)系。接著,服務(wù)的調(diào)用量越來越大,服務(wù)的容量問題就暴露出來,這個(gè)服務(wù)需要多少機(jī)器支撐?什么時(shí)候該加機(jī)器?等等……在遇到這些問題時(shí),開發(fā)成本往往會(huì)正比例飛速增長(zhǎng),甚至讓中小企業(yè)團(tuán)隊(duì)無法支撐。

想要減少開發(fā)工作量或是縮短時(shí)間,降低成本,使用框架便是一個(gè)很好的選擇。尤其是,使用質(zhì)量好且有延續(xù)性的開源框架正在成為主流!

1. 節(jié)省團(tuán)隊(duì)時(shí)間和精力

框架節(jié)省了我們不少的時(shí)間,并且讓擴(kuò)展變得更容易。由于擁有完整的生態(tài)體系,以及活躍的社區(qū)氛圍,使得團(tuán)隊(duì)?wèi)?zhàn)斗力更強(qiáng)!由于框架強(qiáng)制使用公共的約定,因此它能有效地解決一些共有的問題。框架能夠讓工作更連貫,也能避免我們寫一大堆自定義模塊來實(shí)現(xiàn)某些性能,我們所需要做的,就是將這些共用模塊放在框架中實(shí)現(xiàn)。以Tiny框架為例,一年的開發(fā)就需要提交數(shù)千個(gè)Commits,解決了無數(shù)個(gè)疑難雜癥。此外,從文檔維護(hù)的角度來看,一年900多頁(yè)的文檔內(nèi)容,也能夠幫助開發(fā)團(tuán)隊(duì)解決許多難題。

2. 技術(shù)支撐更有保障

優(yōu)秀的開源框架,通常具有高內(nèi)聚、低耦合、高質(zhì)量的代碼,專職的團(tuán)隊(duì),可以保持項(xiàng)目持續(xù)不斷的前進(jìn)。還是以Tiny框架為例,Tiny主工程共有621個(gè)Issues,里面有需求,和改進(jìn),有BUG。由于有良好知識(shí)積累體系,使得使用Tiny框架的人們?cè)接迷綇?qiáng),越用越爽!相當(dāng)于有一個(gè)強(qiáng)大的后援團(tuán)隊(duì)在為你的項(xiàng)目服務(wù)。這些優(yōu)點(diǎn),不勝枚舉。當(dāng)A君在青島的海邊悠閑地喝著咖啡時(shí),完全不用擔(dān)心客戶的跟蹤電話了。

3. 成本更低,附加值更高

在優(yōu)秀的開源框架體系里,由于頂層設(shè)計(jì)避免了重復(fù)勞動(dòng),所有軟件參與者都會(huì)避免做重復(fù)的事情。尤其是對(duì)于個(gè)體或小型企業(yè),很明確,光是SSH/I已經(jīng)不足讓你的方案看起來高大上,也不足以支持業(yè)務(wù)數(shù)據(jù)量比較大的時(shí)候的應(yīng)用場(chǎng)景,也不足以支撐居高不下的軟件開發(fā)實(shí)施成本。在優(yōu)秀的開源框架開發(fā)團(tuán)隊(duì)里,整個(gè)團(tuán)隊(duì)配置往往更加合理,高低水平者各司其職,使得運(yùn)營(yíng)成本更低、附加值也更高。以Tiny為例,正在構(gòu)建的Tiny生態(tài)圈,上百個(gè)UI組件及流程組件已經(jīng)足夠你日常使用,還會(huì)有更多被不斷加入,這些完全就是超值服務(wù)了!

總之,使用質(zhì)量好有延續(xù)性的開源框架,基于開源框架做應(yīng)用是未來中小型軟件公司的發(fā)展趨勢(shì),你將獲得更加超值的回報(bào)!