摘要:畢竟,架構(gòu)師不參與寫(xiě)代碼的工作。例如,通常架構(gòu)師需要針對(duì)可能發(fā)生的每種情況進(jìn)行規(guī)劃。這種架構(gòu)師需要信任開(kāi)發(fā)團(tuán)隊(duì)來(lái)編寫(xiě)代碼。
Talk is cheap, show me the code!
但是在互聯(lián)網(wǎng)企業(yè)中,身處技術(shù)要職的架構(gòu)師到底需不需要寫(xiě)代碼?
在我們的專業(yè)領(lǐng)域中有一種普遍存在的誤解:架構(gòu)師的工作不需要寫(xiě)代碼。
就目前看來(lái)這似乎沒(méi)什么問(wèn)題。畢竟,寫(xiě)代碼是開(kāi)發(fā)人員的工作。架構(gòu)師就應(yīng)該在更重要的任務(wù)上忙碌。
但是,讓架構(gòu)師遠(yuǎn)離寫(xiě)代碼會(huì)限制開(kāi)發(fā)團(tuán)隊(duì)的潛力。當(dāng)需求和業(yè)務(wù)需要發(fā)生變化時(shí),也可能導(dǎo)致架構(gòu)混亂。
所以對(duì)于業(yè)界的誤解,今天我想要為架構(gòu)師正名,接下來(lái),就讓我們來(lái)看看為什么讓你的軟件架構(gòu)師參與寫(xiě)代碼的工作是一件好事。不過(guò),在此之前,我們首先來(lái)看看架構(gòu)師的日常工作。
01
架構(gòu)師的工作是什么?
01
這是一個(gè)很常見(jiàn)的問(wèn)題。許多開(kāi)發(fā)人員、產(chǎn)品經(jīng)理、甚至連有些架構(gòu)師都不確定架構(gòu)師的工作是什么。一般的定義說(shuō)他們需要做出高層決策并規(guī)定標(biāo)準(zhǔn)。
但是這種說(shuō)法很模糊。讓我們來(lái)深入看看。
架構(gòu)師應(yīng)該承擔(dān)的工作
理想情況下,架構(gòu)師需要?jiǎng)?chuàng)建一個(gè)技術(shù)愿景,通過(guò)該愿景我們可以獲得可維護(hù)又可靠的產(chǎn)品。架構(gòu)師需要協(xié)調(diào)不同的團(tuán)隊(duì),共同構(gòu)建一個(gè)相互依存的軟件生態(tài)系統(tǒng)。此外,他們還需要分享高層的集成決策,傳達(dá)應(yīng)用程序和組件之間協(xié)同工作的方式。除此之外,他們還需要根據(jù)常見(jiàn)的軟件問(wèn)題審查并規(guī)定工具和框架,并通過(guò)向利益相關(guān)者和領(lǐng)導(dǎo)層傳達(dá)最終產(chǎn)品的目標(biāo)和愿景,將所有這些聯(lián)系在一起。
所以架構(gòu)師的工作聽(tīng)起來(lái)很偉大。你可能想知道為什么我把如此之多的工作都推給了忙忙碌碌的架構(gòu)師。為了理解這一點(diǎn),讓我們來(lái)看看我剛描述的情況與現(xiàn)實(shí)生活的對(duì)比。
現(xiàn)實(shí)
現(xiàn)實(shí)情況看起來(lái)因公司而異。事實(shí)上,有些公司確實(shí)讓他們的架構(gòu)師在履行其他所有職責(zé)的同時(shí)也擔(dān)負(fù)了編程的任務(wù)。但是這些公司不是這篇文章的討論對(duì)象。我想重點(diǎn)討論曾經(jīng)與我合作過(guò)的不參與編程工作的架構(gòu)師在公司里究竟做了哪些工作。
首先,這位不參與編程的架構(gòu)師將大部分時(shí)間都花在了開(kāi)會(huì)上。他還為這些會(huì)議準(zhǔn)備大量 PPT 和 Visio 的資料。實(shí)際上,這是“PPT 架構(gòu)師”一詞的來(lái)源。除此之外,他編寫(xiě)了設(shè)計(jì)文檔,將自己對(duì)軟件設(shè)計(jì)的看法寫(xiě)成一本 50 頁(yè)的書(shū),與開(kāi)發(fā)人員共享。(可惜這個(gè)前期設(shè)計(jì)已經(jīng)過(guò)了批準(zhǔn)的日子)。后來(lái),他還審查其他設(shè)計(jì)文檔,簽署設(shè)計(jì)選擇,并重復(fù)所有這些工作,直到他忘記了 IDE 應(yīng)該是什么樣子。
02
如果架構(gòu)師不參與編程會(huì)怎么樣?
如果看不到產(chǎn)品的日常開(kāi)發(fā)過(guò)程,那么人們可能會(huì)認(rèn)為一切都很順利。 時(shí)間線看起來(lái)還不錯(cuò)。功能也在持續(xù)增加。我們正在朝著我們的目標(biāo)前進(jìn)。
首先,庫(kù)和工具無(wú)法解決問(wèn)題時(shí),架構(gòu)師有可能并不知情。可能有一些架構(gòu)師規(guī)定的工具在理想情況下可以正常運(yùn)行,但是在復(fù)雜且常見(jiàn)的用例中這些工具可能會(huì)帶來(lái)很多困難。 或者恰恰相反,他們推薦了一種適用于復(fù)雜場(chǎng)景的工具,但是對(duì)于開(kāi)發(fā)人員遇到的簡(jiǎn)單日常問(wèn)題則過(guò)于苛刻。
除非架構(gòu)師使用他們自己推薦的工具,否則就無(wú)法真正意識(shí)到他們的選擇產(chǎn)生的影響。
設(shè)計(jì)無(wú)法滿足不斷變化的需求
在考慮軟件開(kāi)發(fā)的時(shí)候,我們不能假設(shè)一個(gè)靜態(tài)的世界。架構(gòu)師做的提前設(shè)計(jì)并不能考慮到所有的可變因素和極端情況。在軟件編寫(xiě)工作完成之前,我們無(wú)法發(fā)現(xiàn)其中的細(xì)微差別。
總之,架構(gòu)和設(shè)計(jì)決策經(jīng)常需要做出改變。
你可能會(huì)說(shuō)這不是問(wèn)題。架構(gòu)師可以回去重新設(shè)計(jì)系統(tǒng)。然而,實(shí)際情況卻并非如此。開(kāi)發(fā)人員注意到有些事情不太對(duì)勁。這些事情變得越來(lái)越困難。而他們可以做的有:他們可以向架構(gòu)師匯報(bào)這個(gè)問(wèn)題,但是架構(gòu)師不在其中無(wú)法真正掌握情況;他們可以自行重新設(shè)計(jì)系統(tǒng);或者他們也可以盡可能地想辦法彌補(bǔ)問(wèn)題,然后繼續(xù)前進(jìn)。
如果架構(gòu)師能夠與開(kāi)發(fā)團(tuán)隊(duì)近距離相處,并擔(dān)任編程的工作,那么他們就可以看到變化即將到來(lái),并實(shí)時(shí)修改設(shè)計(jì)。他也可以預(yù)先做最小的設(shè)計(jì),并與團(tuán)隊(duì)合作,隨著時(shí)間的推移改進(jìn)系統(tǒng)的架構(gòu)。
開(kāi)發(fā)人員備受打擊
如果設(shè)計(jì)只能自上而下地傳達(dá),而且架構(gòu)師又不在身邊,那么開(kāi)發(fā)團(tuán)隊(duì)也會(huì)在各個(gè)方面遭受困苦。首先,正如我上面提到的,情況會(huì)發(fā)生變化。 如果架構(gòu)師不在身邊共同討論,那么這些變化會(huì)導(dǎo)致延遲。
其次,許多開(kāi)發(fā)人員都不喜歡刻板的編程,他們希望能夠創(chuàng)造設(shè)計(jì)并做出決策。 如果設(shè)計(jì)過(guò)于精細(xì),那么創(chuàng)造過(guò)程就會(huì)消失。
最后,當(dāng)開(kāi)發(fā)團(tuán)隊(duì)注意到實(shí)際情況與架構(gòu)圖上的不一致時(shí),他們會(huì)責(zé)怪計(jì)劃。而且他們會(huì)覺(jué)得架構(gòu)師沒(méi)有搞明白狀況。無(wú)論這是實(shí)情還是他們的想象,編寫(xiě)軟件過(guò)程中的障礙都可以視作架構(gòu)師的失職。
03
解決方案
在我們注意一些陷阱的前提下,如果架構(gòu)師參與寫(xiě)代碼的工作,那么我們可以獲得哪些好處呢?
尊重架構(gòu)師
我曾經(jīng)見(jiàn)過(guò)一些開(kāi)發(fā)人員忽略了對(duì)架構(gòu)師的尊重。畢竟,架構(gòu)師不參與寫(xiě)代碼的工作。他們不知道如何平衡可讀性、設(shè)計(jì)和可維護(hù)性。
因此,如果架構(gòu)師參與寫(xiě)代碼的工作,那么他們就可以告訴開(kāi)發(fā)團(tuán)隊(duì)他們?cè)诓⒓缱鲬?zhàn)。他們了解實(shí)際情況。而且如果有必要他們也愿意攜手同行。
此外,架構(gòu)師還可以更頻繁地分享設(shè)計(jì)見(jiàn)解。通常,開(kāi)發(fā)人員看不到架構(gòu)模式的需求,因?yàn)樗麄儚膩?lái)沒(méi)見(jiàn)過(guò)可以讓他們的日子更好過(guò)的模式。架構(gòu)師可以通過(guò)傳達(dá)設(shè)計(jì)中重要部分的架構(gòu)來(lái)解決這個(gè)問(wèn)題。或者他們可以幫助團(tuán)隊(duì)將代碼中的混亂部分重構(gòu)成優(yōu)雅的東西。
更好地理解設(shè)計(jì)
如果架構(gòu)師參與寫(xiě)代碼的工作,那么他們就有機(jī)會(huì)向開(kāi)發(fā)人員傳達(dá)更具影響力的設(shè)計(jì)思想和原則。看到白板上畫(huà)出來(lái)的適配器模式是一回事,而在 IDE 中親眼看到一個(gè)適配器模式是另一回事。
此外,架構(gòu)師應(yīng)該鼓勵(lì)開(kāi)發(fā)人員多多思考設(shè)計(jì)。作為導(dǎo)師,你可以教導(dǎo)開(kāi)發(fā)人員處理意外的變化,并找到解決問(wèn)題的模式和設(shè)計(jì)。你應(yīng)該公開(kāi)討論解決方案的優(yōu)缺點(diǎn),提出問(wèn)題和討論,并開(kāi)展設(shè)計(jì)合作。
另一種方法是利用原型。如果架構(gòu)師將他們的一些架構(gòu)設(shè)計(jì)原型化,那么就可以部分地看到該原型在實(shí)際生活中的運(yùn)作方式,并為團(tuán)隊(duì)提供需要構(gòu)建的東西。
實(shí)時(shí)設(shè)計(jì)更新
參與寫(xiě)代碼工作的架構(gòu)師可以實(shí)時(shí)地評(píng)估備選方案。過(guò)度架構(gòu)的解決方案需要花費(fèi)太多實(shí)現(xiàn)的時(shí)間,架構(gòu)師可以為團(tuán)隊(duì)提供有關(guān)開(kāi)源或購(gòu)買(mǎi)庫(kù)的信息。
讓架構(gòu)師與團(tuán)隊(duì)在一起可以確保根據(jù)不斷變化的需求調(diào)整架構(gòu)。此外,過(guò)度提前設(shè)計(jì)的工作壓力也會(huì)減少。
如果架構(gòu)師每周都可以參與一點(diǎn)寫(xiě)代碼的工作,那么他們就可以及時(shí)地注意到代碼偏離了愿景,從而可以及時(shí)地調(diào)整方向。此外,架構(gòu)師還可以更好地處理正在創(chuàng)建的技術(shù)債務(wù)。而且他們能夠指導(dǎo)團(tuán)隊(duì)何時(shí)增加技術(shù)債務(wù),何時(shí)不能增加技術(shù)債務(wù)。
最終產(chǎn)品的架構(gòu)所有權(quán)
如果架構(gòu)師參與最前線的寫(xiě)代碼工作,那么他們就會(huì)擁有更多產(chǎn)品的主動(dòng)權(quán)。可以更好地了解他們的解決方案為企業(yè)帶來(lái)的成本。如果他們能夠親手實(shí)現(xiàn)自己的解決方案,那么他們就會(huì)很快意識(shí)到哪些設(shè)計(jì)決策非常重要,而哪些設(shè)計(jì)決策可有可無(wú)。
例如,通常架構(gòu)師需要針對(duì)可能發(fā)生的每種情況進(jìn)行規(guī)劃。 但是在項(xiàng)目開(kāi)始時(shí),通常很難知道哪些問(wèn)題是真實(shí)的,哪些是想象的。 或者至少哪些情況不太可能出現(xiàn)。如果最終我們只有 100 個(gè)客戶,那么就沒(méi)有必要?jiǎng)?chuàng)造一個(gè)冗余且規(guī)模巨大的迷宮。 我們應(yīng)該專心提供價(jià)值。
04
潛在問(wèn)題
有關(guān)為什么架構(gòu)師不應(yīng)該參與寫(xiě)代碼的工作,支持者們有以下幾點(diǎn)理由:
他們會(huì)忽略長(zhǎng)期愿景或更大的問(wèn)題。
理解原本不需要了解的應(yīng)用程序的細(xì)節(jié)。
架構(gòu)師參與寫(xiě)代碼的工作等于鼓勵(lì)團(tuán)隊(duì)不配置架構(gòu)師。
我完全明白。你們希望確保架構(gòu)師只承擔(dān)自己的職責(zé),即制定長(zhǎng)期和高層決策。但是,我們并不是要求架構(gòu)師花費(fèi)所有時(shí)間來(lái)編寫(xiě)代碼。相反,我們只是他們花費(fèi)少量時(shí)間來(lái)幫助他們?cè)O(shè)計(jì)的應(yīng)用程序變成現(xiàn)實(shí)。
至于不配置架構(gòu)師的觀點(diǎn),我在別的地方看到過(guò)這樣的例子。我們常常會(huì)遇到有的架構(gòu)師很喜歡寫(xiě)代碼,卻不愿意將最基本部分之外的東西交給其他開(kāi)發(fā)人員。這種架構(gòu)師需要信任開(kāi)發(fā)團(tuán)隊(duì)來(lái)編寫(xiě)代碼。隨著時(shí)間的推移,開(kāi)發(fā)人員應(yīng)該能夠承擔(dān)越來(lái)越復(fù)雜的工作。
05
人人受益
最后我認(rèn)為,讓軟件架構(gòu)師參與寫(xiě)代碼的工作有益于整個(gè)團(tuán)隊(duì)和最終產(chǎn)品。同時(shí)也可以鼓勵(lì)分享設(shè)計(jì)理念和快速反饋,可以幫助團(tuán)隊(duì)中每個(gè)人的成長(zhǎng)。
所以讓你的架構(gòu)師參與寫(xiě)代碼的工作吧。讓開(kāi)發(fā)人員參與設(shè)計(jì)的工作吧。加強(qiáng)團(tuán)隊(duì)合作才能提供最佳解決方案。
作者:Sylvia Fronczak
來(lái)源:
https://mp.weixin.qq.com/s/m_...
原文:
https://dzone.com/articles/sh...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/100114.html
摘要:自動(dòng)填補(bǔ)分號(hào)的規(guī)則在說(shuō)要不要寫(xiě)分號(hào)之前,先了解一下自動(dòng)填補(bǔ)分號(hào)的規(guī)則。后來(lái)看到知乎上的作者尤雨溪和前端大神賀師俊的回答后,我對(duì)寫(xiě)分號(hào)的想法完全顛覆了。總是寫(xiě)分號(hào)并不能完全解決缺陷如后換行會(huì)自動(dòng)插入分號(hào)。 在打算寫(xiě)這篇文章之前,我是一個(gè)分號(hào)黨,在寫(xiě)這篇文章之后,可能會(huì)轉(zhuǎn)為無(wú)分號(hào)黨了。之前是寫(xiě)分號(hào)是編輯器語(yǔ)法較檢所養(yǎng)成的強(qiáng)迫癥,現(xiàn)在觀念的轉(zhuǎn)變,是因?yàn)榭戳瞬簧俅笊竦挠懻摵螅X(jué)得javascr...
摘要:命令模式的由來(lái),其實(shí)是回調(diào)函數(shù)的一個(gè)面向?qū)ο蟮奶娲罚钅J皆缫讶谌氲搅苏Z(yǔ)言之中。 模式是對(duì)某情景下,針對(duì)某種問(wèn)題的某種解決方案。而一個(gè)設(shè)計(jì)模式是用來(lái)解決一個(gè)經(jīng)常出現(xiàn)的設(shè)計(jì)問(wèn)題的經(jīng)驗(yàn)方法。這么說(shuō)來(lái),每個(gè)模式都可能有著自己的意圖,應(yīng)用場(chǎng)景,使用方法和使用后果。本文的行文思路和目的皆在于了解各個(gè)模式的定義,應(yīng)用場(chǎng)景和用實(shí)例說(shuō)明如何在前端開(kāi)發(fā)中使用。 本文所設(shè)計(jì)到的概念和實(shí)例大多來(lái)自《H...
摘要:從根本上講,架構(gòu)師是一個(gè)技術(shù)領(lǐng)導(dǎo)者的角色,這就是最大的區(qū)別。對(duì)于這個(gè)問(wèn)題來(lái)說(shuō),沒(méi)錯(cuò),有一些相關(guān)主題沒(méi)有出現(xiàn)在這本書(shū)中,這些主題可以構(gòu)成一本與程序員必讀之軟件架構(gòu)相互補(bǔ)的書(shū)。我從軟件架構(gòu)的視角特別能注意到這件事。 非商業(yè)轉(zhuǎn)載請(qǐng)注明作譯者、出處,并保留本文的原始鏈接:http://www.ituring.com.cn/article/178034 Simon Brown 是全球知...
摘要:移動(dòng)精英開(kāi)發(fā)社群的第期,也是圍繞架構(gòu)這個(gè)話題進(jìn)行討論。本次我們希望結(jié)合實(shí)際開(kāi)發(fā)中遇到的問(wèn)題,來(lái)聊聊移動(dòng)端的架構(gòu)設(shè)計(jì)。這樣的模式改進(jìn)一些,可能會(huì)更適合移動(dòng)端架構(gòu)。潘衛(wèi)杰之前我們公司移動(dòng)端的大項(xiàng)目就是插座式開(kāi)發(fā)的,批量出各個(gè)行業(yè)的。 此前,58 同城的技術(shù)委員會(huì)執(zhí)行主席沈劍在 OneAPM 的技術(shù)公開(kāi)課上分享過(guò)一個(gè)主題,「好的架構(gòu)不是設(shè)計(jì)出來(lái)的,而是演技出來(lái)的」。因?yàn)閷?duì)很多創(chuàng)業(yè)公司而言,隨...
摘要:年月日,第屆技術(shù)管理工作坊將在深圳華僑城洲際酒店舉行。壹佰案例在開(kāi)始前采訪了沈劍老師,先行劇透架構(gòu)師轉(zhuǎn)型做管理的感悟。 showImg(https://segmentfault.com/img/bVxMfU);2016年6月25-26日,第27屆MPD技術(shù)管理工作坊將在深圳華僑城洲際酒店舉行。本次工作坊,我們邀請(qǐng)了58到家技術(shù)總監(jiān)沈劍老師,分享《技術(shù)團(tuán)隊(duì)的接手、搭建與發(fā)展實(shí)踐 》, 講...
閱讀 2989·2023-04-25 21:23
閱讀 3021·2021-09-22 15:24
閱讀 862·2019-08-30 12:55
閱讀 2094·2019-08-29 18:42
閱讀 2606·2019-08-29 16:27
閱讀 942·2019-08-26 17:40
閱讀 2172·2019-08-26 13:29
閱讀 2603·2019-08-26 11:45