chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何寫一個(gè)架構(gòu)設(shè)計(jì)

jf_ro2CN3Fa ? 來源:知乎 ? 作者:芋道源碼 ? 2022-10-31 10:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近要多帶一個(gè)架構(gòu)團(tuán)隊(duì)做一個(gè)新版本,我寫一些基本邏輯來給團(tuán)隊(duì)建第一層策略建模,以便我們后面的討論有基礎(chǔ),由于這種問題是普適的,也不會(huì)涉及什么具體的保密問題,所以我公開來寫。

架構(gòu)是一個(gè)充滿了自由度的工作,是一個(gè)最不適合用過去的成功指導(dǎo)下一波策略設(shè)計(jì)的領(lǐng)域,無論你過去的領(lǐng)域和這個(gè)領(lǐng)域有多相像,你過去的成功經(jīng)驗(yàn)都只能拿來參考,不適合用來拷貝。

因?yàn)榧词故峭耆嗤念I(lǐng)域,時(shí)間已經(jīng)不同了,行業(yè)生態(tài),技術(shù)發(fā)展已經(jīng)不同了,你面對(duì)的人不同了,業(yè)務(wù)的瓶頸已經(jīng)不同了,生態(tài)的各個(gè)利益體的投資已經(jīng)不同了,成熟的領(lǐng)域人員可能減少,當(dāng)初的績(jī)優(yōu)股可能已經(jīng)失敗,你面對(duì)的是一個(gè)新的領(lǐng)域,我們做架構(gòu),永遠(yuǎn)不能被過去的“定義”,左右了我們的判斷。所以,做新的架構(gòu)設(shè)計(jì),你可以參考過去的成功pattern,但你的分析,必須建立在現(xiàn)在的條件上,不能離開對(duì)現(xiàn)在問題的調(diào)查,直接打算使用過去的模式。

這是我對(duì)我們進(jìn)行產(chǎn)品戰(zhàn)略設(shè)計(jì)的第一個(gè)建議。

架構(gòu)設(shè)計(jì)是一個(gè)非常微妙的設(shè)計(jì)領(lǐng)域,它是完全建立在形而上的邏輯上的,它是抽象的,非具象的。但這種抽象必須要以可以實(shí)施為底線,否則就淪為紙上談兵了。所謂高以下為基,貴以賤為本。所以,我們不要出現(xiàn)“架構(gòu)上我們應(yīng)該如何如何,但我們現(xiàn)在人力不足啊”這樣的思維角度,這是廢話,架構(gòu)就是建立在準(zhǔn)備實(shí)施這個(gè)角度上的,你不能把架構(gòu)設(shè)計(jì)和實(shí)施隔離,說一堆“我們要如何如何,只是某某條件不成熟?!边@樣的鬼話,如果某某條件不成熟,你就不該做出這個(gè)設(shè)計(jì)來浪費(fèi)我們的時(shí)間。

架構(gòu)設(shè)計(jì)是實(shí)施團(tuán)隊(duì)的一部分,沒有獨(dú)立于實(shí)施的架構(gòu)設(shè)計(jì)。架構(gòu)設(shè)計(jì)90%的工作是輔助實(shí)施團(tuán)隊(duì)實(shí)施架構(gòu)戰(zhàn)略和挑戰(zhàn)架構(gòu)戰(zhàn)略,不是實(shí)施之外的獨(dú)立設(shè)計(jì)。把人分離出來是為了保證投入,不是為了讓這個(gè)團(tuán)隊(duì)成為實(shí)施團(tuán)隊(duì)的競(jìng)爭(zhēng)者。

但反過來說,你不能說我們現(xiàn)在只有多少多少人,我們就做一個(gè)基于現(xiàn)在有多少人的方案,因?yàn)槭虑槭亲兓?,在架?gòu)設(shè)計(jì)初期,給你很多的人,你也用不了,人力多了是個(gè)累贅,看在財(cái)報(bào)上每個(gè)月花出去的錢就讓人害怕,但如果你的設(shè)計(jì)只是現(xiàn)在有多少人,那后面開始展開了,你根本就發(fā)展不了。沒有準(zhǔn)備,未來有可能給你補(bǔ)人你也接收不了。如果人力不是這樣從小到多的一個(gè)變化過程,我們也不需要架構(gòu)設(shè)計(jì),架構(gòu)設(shè)計(jì)必須可以響應(yīng)這種人力,資源,市場(chǎng)等各方面的變化。

所以,我們從一開始就做好了做這種多步的策略的打算,考慮整體目標(biāo)的時(shí)候,要用整個(gè)市場(chǎng)域的機(jī)會(huì)作為我們發(fā)展的上限,在實(shí)施的時(shí)候,要考慮好怎么一步步增強(qiáng)投資者和市場(chǎng)的信心,從而可以有序擴(kuò)大整個(gè)業(yè)務(wù),不要用“我的架構(gòu)沒有錯(cuò),錯(cuò)的是市場(chǎng),錯(cuò)的是人力資源沒給夠人,錯(cuò)的是……”來給自己做理由。架構(gòu)設(shè)計(jì)包括對(duì)這些“別人的錯(cuò)”的預(yù)判。架構(gòu)設(shè)計(jì)和實(shí)施是和整個(gè)產(chǎn)品的所有其他力量(開發(fā),銷售,維護(hù),財(cái)務(wù),法務(wù)等等)融合在一起的,沒有獨(dú)立于這些開發(fā)力量的架構(gòu)設(shè)計(jì)。

這是第二個(gè)建議。

但對(duì)于這個(gè)建議,我有個(gè)直接的工作技巧可以分享。當(dāng)我們確切落筆寫一個(gè)架構(gòu)設(shè)計(jì)的時(shí)候,要考慮:以客戶為目標(biāo),以工程為準(zhǔn)繩。

什么意思呢?就是說,你在架構(gòu)設(shè)計(jì)的第一個(gè)部分,要明確說你打算賣一個(gè)什么樣的東西到市場(chǎng)上去,你的客戶打算買你的東西,這個(gè)決定的控制要素是什么?有這樣一個(gè)標(biāo)準(zhǔn)在最前面,我們中間的所有變化,遇到的障礙,我們都知道往哪里繞。也知道我們繞完了,應(yīng)該繼續(xù)向什么方向走。

而在你的架構(gòu)設(shè)計(jì)的最后一段,你要把你的所有設(shè)計(jì)落實(shí)為“版本”和“項(xiàng)目”。所有的人力管理,都是以項(xiàng)目為基礎(chǔ)的,因?yàn)轫?xiàng)目有確切的目標(biāo)和人力資源投入,而不是“小李你去幫幫他們”這種盡力而為的東西,架構(gòu)策略一旦展開,所有人都會(huì)面對(duì)無限的要求,沒有確切的資源分割,凡是長(zhǎng)遠(yuǎn)的東西都會(huì)被忽略和放棄。所以,要把架構(gòu)策略得以實(shí)施的希望建立在人力資源管理上,不要建立在“期望”,“正義”,“道德”,“道理”這些依賴上。所謂子非不辨也,老子忙起來誰(shuí)都不認(rèn)也。

當(dāng)然,我這里說的項(xiàng)目,是廣義的項(xiàng)目,不一定是你流程中說的那個(gè)項(xiàng)目。

而項(xiàng)目,要輸出確切的版本,你有硬件,有軟件,有插件,這些都是有版本的,不要說什么做一個(gè)my-wonderful-app,里面支持這特性,那特性的。

你的軟件上了市場(chǎng),遇到一堆的客戶,這些客戶的要求都會(huì)不一樣,你是用一個(gè)版本還是用多個(gè)版本去響應(yīng)他們?產(chǎn)品是會(huì)有Bug的,是要有新特性開發(fā)的,修復(fù)Bug和增加新特性是會(huì)引入新的Bug的,所以,客戶可能可以接納升級(jí)你修復(fù)他的Bug的版本,可不一定肯接納你發(fā)布的修復(fù)其他人問題的版本的。

這樣,你在市場(chǎng)上就會(huì)有很多版本,這是天然的,版本一多,開發(fā),測(cè)試,維護(hù),管理的成本會(huì)大幅上升,這是一個(gè)重要的工程控制要素。你用my-wonderful-app這一個(gè)概念來考慮你的設(shè)計(jì),你實(shí)施的時(shí)候就會(huì)怎么搞怎么不正常,因?yàn)槟阋詾槟汩_發(fā)的是my-wonderful-app,其實(shí)你開發(fā)的是my-wonderful-app-v1、my-wonderful_app-v2、my-wonderful-app-v2.1、my-wounderful-app-v2.1-without-tso-llvm_v7_specific-edition……你對(duì)人力和項(xiàng)目的預(yù)判都是錯(cuò)誤的,當(dāng)然執(zhí)行不下去了。

所以,很多人其實(shí)不明白“開源交付”是個(gè)什么東西,開源交付其實(shí)是一種減少版本的方法,一個(gè)源代碼樹是可以編譯出很多二進(jìn)制版本的,我給你源代碼,編譯產(chǎn)生多個(gè)版本的的維護(hù)成本就是你的了,很多人以為交付源代碼是對(duì)用戶友好,是為行業(yè)做貢獻(xiàn)——那得看客戶是想當(dāng)你的競(jìng)爭(zhēng)對(duì)手,還是想解決他的問題了。(但即使你用“源代碼交付”,如果是商業(yè)交付,你的測(cè)試還是需要落實(shí)到一組二進(jìn)制版本上的,而且你必須很清楚,這些二進(jìn)制版本都是會(huì)升級(jí)的,死版本支持的生態(tài)是死的生態(tài))

但無論如何,架構(gòu)設(shè)計(jì)一個(gè)基本的要求,高以下為基,不要離開你的工程成本想得天花亂墜,只要涉及工程,什么美好想法都得給我從天上掉下來。

第三個(gè)建議:調(diào)查和設(shè)計(jì)也是要結(jié)合起來的。架構(gòu)設(shè)計(jì)初期,我們有無數(shù)的“未知”:競(jìng)爭(zhēng)對(duì)手的戰(zhàn)略是什么?客戶的期望是什么?研究機(jī)構(gòu)有什么新的突破?市場(chǎng)份額的預(yù)測(cè)是什么?國(guó)家政策的走向是什么?……

如果你要調(diào)查完這些東西才做決定,你就永遠(yuǎn)都不用做了。所以,進(jìn)行架構(gòu)設(shè)計(jì),要勇敢進(jìn)行“猜”,“預(yù)判”,哪怕錯(cuò)了,你也要“猜”,因?yàn)檫@是架構(gòu)設(shè)計(jì)工作的基礎(chǔ)。你的決策要同時(shí)決策:使用猜這個(gè)結(jié)論和再調(diào)查一下,哪個(gè)投資收益比更低?然后就要去實(shí)施。我在這個(gè)專欄中經(jīng)常強(qiáng)調(diào)“守弱”,其本質(zhì)就是這個(gè):架構(gòu)本身就是一種猜,我們?cè)诓碌幕A(chǔ)上執(zhí)行,如果你非要維護(hù)面子,在執(zhí)行的時(shí)候收到當(dāng)時(shí)猜錯(cuò)了的反饋,你死要面子不肯調(diào)整,那這個(gè)架構(gòu)執(zhí)行就失敗了。

所以,做架構(gòu)不能要面子,你眼中只能有產(chǎn)品的最后成功,到成功的時(shí)候,你坐在那里,旁邊的人說什么,你都可以冷冷看著他,由他講他的道理,你根本不用在乎。

這樣就要提到第四個(gè)建議了:你不要指望實(shí)施團(tuán)隊(duì)會(huì)很喜歡你,你做的所有事情,都是為了未來讓他們“繞路”走,你的結(jié)論他們不會(huì)喜歡的。你可以用你所有的個(gè)人魅力去盡量soften這種沖突,你可以下去和他們一起分擔(dān)開發(fā)調(diào)試的壓力,讓他們沒有那么恨你,但你要知道,如果實(shí)施團(tuán)隊(duì)很舒服,你的架構(gòu)設(shè)計(jì)肯定變成在旁邊說胡話了,根本沒有設(shè)計(jì)效果。

所以,你決定來做架構(gòu)了,就不要期望你有多nice。這是這個(gè)工作的特性,不能調(diào)和的。不要為了實(shí)施團(tuán)隊(duì)的一般抱怨就去改變你的設(shè)計(jì)去迎合,否則產(chǎn)品失敗的時(shí)候,就沒有人跟你抱怨了。吾之所以有大患者,為吾有身,及吾無身,何患之有?你應(yīng)該多聽實(shí)施團(tuán)隊(duì)的抱怨,但你要分清楚哪些是真正在反饋問題,哪些只是你戰(zhàn)略實(shí)施的成本。

最后一個(gè)建議:架構(gòu)團(tuán)隊(duì)來自不同的領(lǐng)域,不要用“領(lǐng)域代表”看待自己。不要說我只是做芯片設(shè)計(jì),我只是做安全的,我只是做內(nèi)核的,我只是做數(shù)據(jù)庫(kù)的。架構(gòu)團(tuán)隊(duì)存在的目的,就是為了設(shè)計(jì)那些多個(gè)模塊互相甩鍋的Gap,然后所有模塊和協(xié)同起來,達(dá)到最優(yōu)的效率。你盡然進(jìn)來架構(gòu)組了,你就不是某個(gè)模塊的“甩鍋代表”,你就是整個(gè)產(chǎn)品。

大部分投資者都是不懂技術(shù)的,就算他們來自技術(shù)背景,他們對(duì)你實(shí)施的這個(gè)技術(shù)也是外行,因?yàn)榧?xì)節(jié)只是我們知道,否則他就不用你來做了,他自己做就好了。這些人決策的方式就是“多方確認(rèn)”。

如果架構(gòu)組自己都達(dá)不成共識(shí),各說各話,那怎么說服投資人(其實(shí)包括準(zhǔn)備用你的客戶),所以,架構(gòu)組每個(gè)人都應(yīng)該對(duì)整個(gè)架構(gòu)策略都很熟悉。我不要求做芯片的人就會(huì)寫程序,但我需要做芯片的人知道軟件部分的構(gòu)架要求,在解決方案中所處的地位。你不要告訴我你只懂UEFI,不懂Kernel是怎么做的,我需要你知道ACPI表那些信息是給Kernel的哪個(gè)模塊看的,你不是在做實(shí)施,等著別人給要求,你是那個(gè)負(fù)責(zé)知道少給一張EINJ表,Kernel會(huì)不會(huì)起不來的人。

推廣起來說,作為一個(gè)產(chǎn)品的架構(gòu)團(tuán)隊(duì),你也不能只管“我的產(chǎn)品如何如何”,你必須從整個(gè)產(chǎn)業(yè)生態(tài)上開始設(shè)計(jì)。狼吃羊,羊吃草,你不能說你是狼,不管羊的死活。沒有羊了,狼也死了。做架構(gòu)設(shè)計(jì)的人,必須知道狼可以吃多少羊,吃到什么時(shí)候就要開始收手了。

所以,對(duì)于一個(gè)產(chǎn)品的架構(gòu)師,必須知道整個(gè)生態(tài)鏈?zhǔn)窃趺催\(yùn)作的,要為了整個(gè)生態(tài)的平衡,不怕把自己部分自己的業(yè)務(wù)讓給其他產(chǎn)品,其他企業(yè),也不怕自己背上別人不肯實(shí)施的業(yè)務(wù),這樣你才會(huì)有掌控生態(tài)的力量。

大概就是這樣一些吧,再往下,就是具體業(yè)務(wù)怎么做的問題的。但當(dāng)我們碰到困難的時(shí)候,不妨回頭來看看我們的總體思路,也許覺得無路走的時(shí)候又發(fā)現(xiàn)有路了,覺得很順利的時(shí)候,說不定就是危機(jī)的開始了。

編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:架構(gòu)應(yīng)該如何來理解?

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何寫個(gè)Qt版本的Helloworld程序?

    如何寫個(gè)Qt版本的Helloworld程序?
    發(fā)表于 05-05 11:07

    如何寫個(gè)簡(jiǎn)易的printf函數(shù)?

    如何寫個(gè)簡(jiǎn)易的printf函數(shù)?
    發(fā)表于 04-28 06:47

    如何寫個(gè)中斷函數(shù)

    目錄1、中斷2、復(fù)位3、通用I/O及其中斷:I/O寄存器I/O中斷寄存器默認(rèn)狀態(tài)如何寫個(gè)中斷函數(shù)總結(jié)所整理歸納僅做分享與記錄,從自身角度分析自己身為學(xué)生曾在學(xué)習(xí)中所遇到的問題與需要特別注意的地方
    發(fā)表于 11-29 07:30

    如何寫個(gè)簡(jiǎn)單的字符設(shè)備驅(qū)動(dòng)程序?

    如何寫個(gè)簡(jiǎn)單的字符設(shè)備驅(qū)動(dòng)程序?
    發(fā)表于 12-23 06:26

    設(shè)備驅(qū)動(dòng)的入門教程 (教你如何寫驅(qū)動(dòng))

    設(shè)備驅(qū)動(dòng)的入門教程 (教你如何寫驅(qū)動(dòng))
    發(fā)表于 03-28 09:44 ?61次下載

    軟件架構(gòu)設(shè)計(jì)的三個(gè)維度

    架構(gòu)設(shè)計(jì)是個(gè)非常大的話題,不管幾篇文章,接觸到的始終只是冰山角,更多的是實(shí)踐中去體會(huì)。這篇文章主要介紹面向?qū)ο驩O、面向方面AOP和面
    發(fā)表于 06-22 10:09 ?1544次閱讀
    軟件<b class='flag-5'>架構(gòu)設(shè)</b>計(jì)的三<b class='flag-5'>個(gè)</b>維度

    軟件架構(gòu)設(shè)計(jì)的三個(gè)維度解析

    架構(gòu)設(shè)計(jì)是個(gè)非常大的話題,不管幾篇文章,接觸到的始終只是冰山角,更多的是實(shí)踐中去體會(huì)。這篇文章主要介紹面向?qū)ο驩O、面向方面AOP和面
    發(fā)表于 10-29 11:12 ?0次下載
    軟件<b class='flag-5'>架構(gòu)設(shè)</b>計(jì)的三<b class='flag-5'>個(gè)</b>維度解析

    module 概述以及如何寫個(gè)module

    driver,而且它也能縮短我們 driver development 的時(shí)間。在這篇文章里,我將要跟各位介紹下 module 的原理,以及如何寫個(gè) module。 module
    發(fā)表于 11-07 11:37 ?0次下載

    軟件架構(gòu)設(shè)計(jì)的三個(gè)維度

    架構(gòu)設(shè)計(jì)是個(gè)非常大的話題,不管幾篇文章,接觸到的始終只是冰山角,更多的是實(shí)踐中去體會(huì)。這篇文章主要介紹面向?qū)ο驩O、面向方面AOP和面
    發(fā)表于 12-01 11:57 ?693次閱讀
     軟件<b class='flag-5'>架構(gòu)設(shè)</b>計(jì)的三<b class='flag-5'>個(gè)</b>維度

    如何寫個(gè)簡(jiǎn)短的Python代碼做一個(gè)換臉程序的詳細(xì)概述

    在這篇文章中將介紹如何寫個(gè)簡(jiǎn)短(200行)的 Python 腳本,來自動(dòng)地將幅圖片的臉替換為另幅圖片的臉。
    的頭像 發(fā)表于 07-09 10:48 ?4813次閱讀

    如何寫個(gè)會(huì)講笑話的Python程序

    笑話從哪里來?自己肯定是不現(xiàn)實(shí)的。在這個(gè)“云”的時(shí)代,各種云都有,自然是不缺開放API的。下面個(gè)用Python的例子,其實(shí)不止pyt
    的頭像 發(fā)表于 01-11 16:47 ?3274次閱讀
    <b class='flag-5'>如何寫</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>會(huì)講笑話的Python程序

    系統(tǒng)架構(gòu)設(shè)計(jì)的詳細(xì)講解

    篇,我們討論了故障度量和安全機(jī)制的ASIL等級(jí)。本篇我們來聊聊系統(tǒng)架構(gòu)設(shè)計(jì)相關(guān)內(nèi)容。01系統(tǒng)架構(gòu)設(shè)計(jì)和TSC當(dāng)我們開始TSC時(shí),會(huì)涉
    的頭像 發(fā)表于 12-24 14:33 ?2027次閱讀

    [干貨]手把手教你個(gè)安卓app

    摘要:最近有很多小伙伴在后臺(tái)留言:Android Studio。我想大家是想個(gè)手機(jī)app,前面已經(jīng)分享了在QT上如何寫
    發(fā)表于 01-25 18:14 ?7次下載
    [干貨]手把手教你<b class='flag-5'>寫</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>安卓app

    如何寫個(gè)簡(jiǎn)單的裝飾器

    要的是,它讓 Python 中被裝飾器裝飾后的方法長(zhǎng)得更像裝飾前的方法。 本篇文章不會(huì)過多的向你介紹裝飾器的基本知識(shí),我會(huì)默認(rèn)你知道什么是裝飾器,并且懂得如何寫個(gè)簡(jiǎn)單的裝飾器。 不了解裝飾器的可以先去閱讀我之前
    的頭像 發(fā)表于 11-01 09:54 ?763次閱讀
    <b class='flag-5'>如何寫</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>簡(jiǎn)單的裝飾器

    如何寫個(gè)內(nèi)存泄漏檢測(cè)工具

    如何確定有內(nèi)存泄露問題,如何定位到內(nèi)存泄露位置,如何寫個(gè)內(nèi)存泄漏檢測(cè)工具? 1:概述 內(nèi)存泄露本質(zhì):其實(shí)就是申請(qǐng)調(diào)用malloc/new,但是釋放調(diào)用free/delete有遺漏,或者重復(fù)釋放
    的頭像 發(fā)表于 11-11 16:19 ?1127次閱讀