CTO訓(xùn)練營:用進(jìn)化的思維做架構(gòu)
原創(chuàng)【51CTO.com原創(chuàng)稿件】經(jīng)歷國慶七天假期,又經(jīng)歷了七個(gè)工作日,在大多數(shù)人們忙不迭度周末的時(shí)候,CTO訓(xùn)練營第六課又開課了。
這期的CTO訓(xùn)練營活動(dòng),培訓(xùn)的主題只有一個(gè):如何在公司不斷發(fā)展的過程中,確保技術(shù)能夠靈活地因需而動(dòng)?這個(gè)話題非常有實(shí)戰(zhàn)性,因?yàn)闊o論公司是剛剛組建還是發(fā)展到一定規(guī)模,語言的選擇、架構(gòu)的調(diào)整一直伴隨其中。那么當(dāng)面臨老系統(tǒng)重構(gòu)、拆分亦或是解耦,管理者們應(yīng)當(dāng)注意哪些問題?隨著業(yè)務(wù)的發(fā)展,時(shí)間的推移,IT技術(shù)逐步在進(jìn)化,在進(jìn)化演變的過程中又應(yīng)該如何把握,應(yīng)該用什么樣的思想去迭代產(chǎn)品?七樂康技術(shù)VP曲毅給出了一個(gè)新的思路:用進(jìn)化的思維做架構(gòu),給與會(huì)者們開辟了更多思考方向。
語言選型需要注意6大因素
曲毅,從事互聯(lián)網(wǎng)研發(fā)工作12年,曾在高陽、空中網(wǎng)、新浪、樂蜂網(wǎng)等互聯(lián)網(wǎng)公司擔(dān)任構(gòu)架師、高級(jí)技術(shù)經(jīng)理、技術(shù)總監(jiān)等職位。他對(duì)HTML5技術(shù)有非常深刻的認(rèn)識(shí)和理解,有著豐富的實(shí)踐經(jīng)驗(yàn),同時(shí)也是HTML5引擎Crow5的創(chuàng)造者。
“是什么在左右你選擇語言?”曲毅一開場就拋出了一個(gè)問題。經(jīng)過六個(gè)小組的簡短討論,最終曲毅在白板上將選擇語言需要考慮的問題歸納成六點(diǎn)。
一是團(tuán)隊(duì)。訓(xùn)練營的一位小伙伴表示,招到優(yōu)秀的人才最難得,***是能招募一個(gè)靠譜的團(tuán)隊(duì),有了團(tuán)隊(duì),語言的選擇就順理成章了。
二是成本。這里面主要是時(shí)間成本和質(zhì)量成本。曲毅認(rèn)為此外還需要考慮人員培養(yǎng)的周期、學(xué)習(xí)的周期、團(tuán)隊(duì)配合的周期,以及人員流失帶來的人力成本。
三是控制。選擇了這種語言能不夠始終保持控制度。
四是項(xiàng)目特點(diǎn)。根據(jù)不同的項(xiàng)目需求,最終選擇最適合這個(gè)項(xiàng)目的語言。
五是技術(shù)健壯性。所謂技術(shù)健壯性主要包括技術(shù)是否安全,文檔是否健全,以及活躍性,例如這種框架社區(qū)是否活躍,是否有持續(xù)性。
六是技術(shù)多樣性。產(chǎn)品合作的需要取決于團(tuán)隊(duì)語言的多樣性,曲毅認(rèn)為前期搭建團(tuán)隊(duì)時(shí),采取的語言***要統(tǒng)一,但是后期團(tuán)隊(duì)發(fā)展起來后,***能夠有多樣語言,因?yàn)榻?jīng)常會(huì)與外部合作,語言的多樣性可以帶來更多的選擇。
好的架構(gòu)是設(shè)計(jì)出來的,還是改出來的?
“好的架構(gòu)是設(shè)計(jì)出來的,還是改出來的?”曲毅又拋出一個(gè)問題,***他談出自己的觀點(diǎn):長遠(yuǎn)地看,架構(gòu)是改出來,短期地看是設(shè)計(jì)出來的。
他解釋道,企業(yè)發(fā)展是從無到有,從小到大的過程,而企業(yè)產(chǎn)品演化的方向同樣也是變化的,而且有時(shí)間和成本的限制,因此架構(gòu)在前期、中期、后期需要考慮的點(diǎn)都不盡相同,應(yīng)當(dāng)因地制宜地選擇語言,選擇合適的容器,合適的架構(gòu)。“在我看來,做架構(gòu)就是做技術(shù)創(chuàng)業(yè)。”
龐大復(fù)雜的系統(tǒng)如何進(jìn)行解耦?
“解耦主要用的逆向思維,這一點(diǎn)和寫游戲外掛非常相似。”曲毅表示,“那么解藕是否有規(guī)律可尋?”答案顯然是肯定的,曲毅給出5個(gè)方法,根據(jù)這5個(gè)步驟就可以逐一替換拆分出的模塊。
***步,抽象+分層是一種解決方案,采用代理模式,從整體把握,按照業(yè)務(wù)拆;第二步,在模塊內(nèi),熟悉系統(tǒng),研究數(shù)據(jù)流。用逆向工程模擬交互接口,猜表;第三步,逐一替代,按照功能和數(shù)據(jù)流向?qū)?。需要注意的是,前期涉及?shù)據(jù)同步、臟數(shù)據(jù)等問題,需要寫外掛處理臟數(shù)據(jù);第四步,針對(duì)臟數(shù)據(jù),收集bug。使用數(shù)學(xué)歸納法窮舉問題,逐一修復(fù);第五步,***打破現(xiàn)在方案,根據(jù)對(duì)現(xiàn)有業(yè)務(wù)的需求,重新設(shè)計(jì),曲毅表示,這里要注意,是按照業(yè)務(wù)需要設(shè)計(jì),并非技術(shù)架構(gòu)。
主流電商業(yè)務(wù)流程介紹
“在主流電商平臺(tái)中,若需精細(xì)化管理各個(gè)業(yè)務(wù)流程,一般會(huì)涉及到上百個(gè)系統(tǒng),系統(tǒng)之間的交互接口更是不及其數(shù),任何系統(tǒng)環(huán)節(jié)出現(xiàn)問題,都會(huì)對(duì)業(yè)務(wù)帶來或多或少的影響。”曲毅以電商為例。
系統(tǒng)解耦案例2
設(shè)計(jì)的進(jìn)化
曲毅用發(fā)生在自己身上的真實(shí)案例給大家講解設(shè)計(jì)前端,寫代碼的方法論。“如果都采用標(biāo)準(zhǔn)化語言規(guī)范和配置方式,給我30分鐘就可以教會(huì)大家使用JS語言”
他的方法是首先要編寫公用模塊給大家用,編寫規(guī)則引擎大家可以按照相同方式編寫。***階段要編寫完整的模塊,并且書寫風(fēng)格優(yōu)良。講到這里,曲毅分享他的心得,他認(rèn)為少寫代碼就可以減少復(fù)雜度,約定模式是一種很好的方式,用配置的方式可以減少代碼的編寫,而且降低具體細(xì)節(jié)的復(fù)雜度
***他提醒大家,要回歸本真,標(biāo)記替代配置,這樣更簡潔,更容易理解。
“學(xué)會(huì)忘記,也許設(shè)計(jì)的本真就在開始的時(shí)候,就在你覺得簡單的時(shí)候。”
輕松熱鬧的沙盤活動(dòng)
瀚海商學(xué)院劉達(dá)開,是一位有豐富管理經(jīng)驗(yàn)的老師,在下午沙盤活動(dòng)環(huán)節(jié),也給學(xué)員們帶了輕松交流交流和項(xiàng)目管理的經(jīng)驗(yàn)分享。
劉達(dá)開,瀚海商學(xué)院資深講師、管理咨詢師,是瀚海商學(xué)院沙盤【地租交易】【超級(jí)公司】【捕魚達(dá)人】研發(fā)者,主要研究方向是“PDP測評(píng)”“工作壓力和情緒管理”“沙盤管理”,掌握企業(yè)管理學(xué)、心理學(xué)、人力資源管理等知識(shí),擁有豐富的教學(xué)經(jīng)驗(yàn)。
他首先讓大家將座位調(diào)整成一個(gè)圓圈,每兩位學(xué)員開始互相介紹自己,然后通過一兩個(gè)互動(dòng)的小游戲,讓大家在輕松愉悅過程中認(rèn)識(shí)彼此。
小伙伴們開始面對(duì)面互相握手介紹自己
在體驗(yàn)活動(dòng)中,劉達(dá)開將學(xué)員分成7個(gè)小組,每個(gè)小組自己領(lǐng)取了不同形狀不同顏色的任務(wù)卡,只有小組之間相互合作,互相共享信息,齊心協(xié)力才能完成。最終學(xué)員們經(jīng)過“激烈”的溝通,順利地完成了任務(wù)。
【CTO 訓(xùn)練營】是51CTO高招旗下,面向中高端技術(shù)管理人才,提供技術(shù)和管理的學(xué)習(xí)以及人脈和資源平臺(tái),旨在打造技術(shù)經(jīng)理的MBA,為行業(yè)輸送更多CTO人才,第三季CTO訓(xùn)練營課程內(nèi)容參照CTO勝任能力以及延展能力設(shè)計(jì),包含技術(shù)與架構(gòu)、技術(shù)與管理、商業(yè)運(yùn)營、敏捷個(gè)人管理4大模塊,聘請(qǐng)一線互聯(lián)網(wǎng)平臺(tái) CTO擔(dān)任導(dǎo)師,完成為期12天的課程學(xué)習(xí)之后,參與畢業(yè)典禮,輔修學(xué)分,完成結(jié)業(yè)。
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】