...

爲(wéi / wèi)什麽我認爲(wéi / wèi)架構師需要(yào / yāo)堅持寫代碼?

2021-05-25
       最近在(zài)高可用架構群、EGO 會員群等多個(gè)場合,大(dà)家都在(zài)讨論架構師的(de)能力的(de)問題,架構師應該具備哪些能力?在(zài)面試時(shí)如何合适的(de)評估一(yī / yì /yí)個(gè)架構師的(de)能力?
架構師的(de)兩種類型
第一(yī / yì /yí)種是(shì)可以(yǐ)将業務實現的(de)人(rén),他(tā)可能需要(yào / yāo)整合公司不(bù)同部門的(de)資源、解決不(bù)同技術模塊整合、解決不(bù)同版本之(zhī)間的(de)兼容性、解決各個(gè)模塊的(de)技術選型等,解決任務的(de)分解及分配,解決進度上(shàng)出(chū)現的(de)問題。當上(shàng)面所有這(zhè)些問題都完成後,架構師順利幫助公司完成了(le/liǎo)項目目标。
第二種是(shì)在(zài)第一(yī / yì /yí)種的(de)基礎上(shàng),利用技術的(de)力量,改進了(le/liǎo)一(yī / yì /yí)個(gè)領域的(de)效率或提升了(le/liǎo)生産力。比如一(yī / yì /yí)個(gè)在(zài)現有技術基礎上(shàng)提升 20% 效率的(de)視頻解碼模塊、或者類似美劇矽谷中的(de),研發出(chū)一(yī / yì /yí)套壓縮比很大(dà)且保持高質量信息的(de)壓縮算法。目前的(de)大(dà)部分互聯網創新在(zài)某種程度也(yě)是(shì)利用技術變革的(de)力量,比如電子(zǐ)商務及在(zài)線教育等行業。
如果從輸出(chū)結果的(de)角度來(lái)看,架構師有兩種類型,具備技術杠杆能力的(de)和(hé / huò)不(bù)具備杠杆能力的(de)架構師。并不(bù)否認第一(yī / yì /yí)種架構師在(zài)戰略執行層面的(de)作用,他(tā)們是(shì)各個(gè)軟件開發團隊的(de)中堅力量。但從影響力的(de)角度,其歸根結底是(shì)在(zài)一(yī / yì /yí)個(gè)畫好的(de)表格裏面填東西,他(tā)從事領域的(de)最終的(de)格局是(shì)由市場、運營或者産品主導。而(ér)一(yī / yì /yí)種是(shì)真正具備杠杆能力的(de)工程師或者架構師,他(tā)可以(yǐ)利用技術的(de)力量,在(zài)填寫一(yī / yì /yí)個(gè)格子(zǐ)的(de)同時(shí),利用技術的(de)力量,将格子(zǐ)的(de)功效放大(dà),影響十倍或者百倍以(yǐ)上(shàng)的(de)結果。比如在(zài)音樂播放軟件中,推薦算法的(de)應用徹底改變了(le/liǎo)用戶播放音樂的(de)習慣與體驗。
很多人(rén)所說(shuō)的(de)架構師的(de)設計能力,大(dà)多也(yě)可以(yǐ)歸納到(dào)第一(yī / yì /yí)種情況。很多所謂的(de)架構設計,就(jiù)是(shì)拿着多年一(yī / yì /yí)成不(bù)變的(de)分層模式往業務上(shàng)套,把業務按照功能規劃成軟件模塊填寫到(dào)架構圖,并且把上(shàng)下遊的(de)調用串起來(lái)。這(zhè)種設計的(de)大(dà)多時(shí)候是(shì)起給客戶或者領導展示的(de)作用。程序員代碼的(de)整體構思,大(dà)多可以(yǐ)通過白闆上(shàng)或者白紙以(yǐ)及程序員直接的(de)溝通很敏捷的(de)完成,大(dà)多不(bù)需要(yào / yāo)一(yī / yì /yí)個(gè)專職畫圖紙的(de)架構師來(lái)指導。
第一(yī / yì /yí)種架構師是(shì)可以(yǐ)不(bù)寫代碼的(de),因爲(wéi / wèi)他(tā)大(dà)部分所做的(de)事情是(shì)跟人(rén)打交道(dào)、分配任務以(yǐ)及解決開發過程中各種進度問題。因此很多技術負責人(rén)面試時(shí)候看重協調能力等非真正的(de)技術能力。而(ér)那些服務甲方項目型的(de)公司,更是(shì)特别看重人(rén)際關系、溝通能力、展示能力等跟客戶打交道(dào)的(de)能力。另外一(yī / yì /yí)些軟件版本曆史包袱重的(de)企業,則看重架構師的(de)打補丁能力。由于(yú)功能型及偏執型型的(de)團隊偏多,因此在(zài)很大(dà)程度上(shàng)造成了(le/liǎo)架構師的(de)能力标準的(de)偏離,在(zài)一(yī / yì /yí)些讨論的(de)場合,過份看重項目執行中的(de)個(gè)别技巧型能力,比如項目管理、人(rén)際關系等能力常常還占據了(le/liǎo)主流的(de)聲音。
但這(zhè)類架構師隻能勉強稱爲(wéi / wèi)“技術架構師”,因爲(wéi / wèi)大(dà)部分時(shí)候,他(tā)做的(de)事情是(shì)填格子(zǐ),而(ér)無法做到(dào)利用技術的(de)力量,把一(yī / yì /yí)個(gè)格子(zǐ)放大(dà)到(dào) 10 個(gè)格子(zǐ)及更多。在(zài)另外一(yī / yì /yí)方面,這(zhè)些不(bù)寫代碼進而(ér)慢慢喪失代碼能力的(de)“架構師”,也(yě)不(bù)太可能利用技術的(de)力量去做發揮技術杠杆的(de)事情。當然技術架構師也(yě)可以(yǐ)驅動工程師去完成一(yī / yì /yí)個(gè)技術型的(de)大(dà)項目,大(dà)型的(de)項目也(yě)需要(yào / yāo)合理的(de)組織,但并不(bù)意味不(bù)寫代碼的(de)人(rén)就(jiù)比寫代碼的(de)人(rén)做得更好。而(ér)那些對技術體系有深入了(le/liǎo)解及一(yī / yì /yí)線體驗的(de)架構師,比那些隻跟人(rén)員管理打交道(dào)的(de)人(rén),更有機會利用技術的(de)力量促進變革。
因此如果希望一(yī / yì /yí)個(gè)架構師有令人(rén)滿意的(de)技術驅動能力,他(tā)應該具備代碼能力,對技術有直接的(de)了(le/liǎo)解及體驗,進而(ér)能夠精通如何利用技術來(lái)改變未來(lái)生産力。
如何面試及評估架構師的(de)能力
Tim 的(de)面試方法是(shì),候選人(rén)需要(yào / yāo)第一(yī / yì /yí)步通過電腦上(shàng)完成一(yī / yì /yí)個(gè)小型的(de)代碼實現,在(zài)代碼基本符合要(yào / yāo)求的(de)情況下,才會獲得所有面試官可以(yǐ)接受的(de)一(yī / yì /yí)個(gè)能力起點。如果不(bù)做這(zhè)一(yī / yì /yí)點,面試時(shí)候,面試官需要(yào / yāo)費盡心思去問對方項目上(shàng)更多細節問題,才可能了(le/liǎo)解一(yī / yì /yí)個(gè)候選人(rén)真正的(de)開發能力。而(ér)通過考試,則可以(yǐ)在(zài)驗證候選人(rén)具備一(yī / yì /yí)定開發能力的(de)基礎上(shàng),愉快的(de)聊一(yī / yì /yí)些其他(tā)輕松的(de)話題。
在(zài) EGO 會員讨論時(shí)候,一(yī / yì /yí)部分創業公司技術負責人(rén)擔心一(yī / yì /yí)些資深的(de)候選人(rén)不(bù)能接受這(zhè)種方式,國(guó)内這(zhè)種現象确實也(yě)不(bù)少見。但換個(gè)角度來(lái)想,創業公司大(dà)多還在(zài)起跑階段,需要(yào / yāo)的(de)肯定是(shì)從事大(dà)量一(yī / yì /yí)線開發的(de)人(rén)。如果面試通不(bù)過機考編程,或者是(shì)不(bù)願意做題,這(zhè)種候選人(rén)也(yě)未必能完全适合創業公司需要(yào / yāo)。而(ér)那些不(bù)願意做一(yī / yì /yí)線事情的(de)架構師即使進來(lái),他(tā)大(dà)部分時(shí)候在(zài)分派任務或者強化流程,可能讓公司的(de)技術層級及開發環節變多、管理成本變高進而(ér)導緻整體研發效率下降。
面試時(shí)候大(dà)家也(yě)認可的(de)一(yī / yì /yí)些驗證架構師能力的(de)方法,比如把當前技術開發中遇到(dào)的(de)一(yī / yì /yí)些典型性技術場景讓對方來(lái)提出(chū)實現方案,以(yǐ)便評估對方是(shì)否具備應對類似場景的(de)能力。在(zài)入職之(zhī)後,可以(yǐ)讓新的(de)架構師獨立承擔及完成一(yī / yì /yí)些任務,以(yǐ)便考察對方是(shì)否具備獨立的(de)架構實現能力。