原文鏈接
架構(gòu)漫談是由資深架構(gòu)師王概凱 Kevin 執(zhí)筆的系列專欄,專欄將會(huì)以 Kevin 的架構(gòu)經(jīng)驗(yàn)為基礎(chǔ),逐步討論什么是架構(gòu)、怎樣做好架構(gòu)、軟件架構(gòu)如何落地、如何寫好程序等問題。
本文是漫談架構(gòu)專欄的第七篇,作者 Kevin 探討了什么是架構(gòu)師、成為架構(gòu)師的前提條件、如何發(fā)現(xiàn)“是誰的問題”、架構(gòu)師的權(quán)利和義務(wù)等話題。正如作者所說,架構(gòu)師必須是一個(gè)組織的領(lǐng)導(dǎo)人,有權(quán)利調(diào)動(dòng)這個(gè)組織的架構(gòu),才能夠更好的發(fā)揮架構(gòu)師的作用,更好的把利益的調(diào)整落到實(shí)處。
什么是架構(gòu)師
在之前的幾篇文章中,經(jīng)常會(huì)提到架構(gòu)師這個(gè)詞。我們已經(jīng)定義了什么叫架構(gòu),那怎么定義架構(gòu)師呢,是不是做架構(gòu)的就叫架構(gòu)師了? 沒有這么簡(jiǎn)單,本篇嘗試討論一下這個(gè)問題。
架構(gòu)師的前提條件
如果一個(gè)人在工作中,只是致力于完成自己的工作,以做好自己的工作為主要目標(biāo),那么最多只能成為一個(gè)工匠,無法成為一個(gè)架構(gòu)師。因?yàn)檫@個(gè)過程解決的還是自己的問題,并沒有時(shí)間的壓力,可以隨意什么時(shí)候做完都可以。
當(dāng)我們所做的工作是處于社會(huì)的分工的一環(huán),需要幫助別人解決問題,并且按時(shí)解決別人的問題成為我們自己的問題的時(shí)候,我們就有了時(shí)間壓力,潛意識(shí)里會(huì)自然而然的有一種對(duì)時(shí)間的恐懼。這個(gè)恐懼在潛意識(shí)里面會(huì)想方設(shè)法推動(dòng)我們采用各種手段,以便及時(shí)的完成工作,換取報(bào)酬。甚至?xí)影嗉狱c(diǎn),不擇手段。
如果我們還生活在這個(gè)恐懼下面,是不可能成為架構(gòu)師的。要成為架構(gòu)師,必須要超越這個(gè)恐懼才能夠看清楚,我們要解決的是別人的問題,不是自己完成工作的問題。因?yàn)閮H僅是完成了自己的工作,也并不一定就解決了別人的問題。如果別人的問題沒有解決 -- 即使我們認(rèn)為自己的工作完成了 -- 我們的工作實(shí)際也沒完成,因?yàn)槲覀児ぷ魇欠裢瓿桑莿e人說的算的,不是我們自己。
為什么會(huì)有這個(gè)對(duì)時(shí)間的恐懼和壓力呢?這是因?yàn)槲覀儼淹瓿勺约旱墓ぷ鳟?dāng)成了我們的最大利益。如果別人的問題沒有真正的解決,必然會(huì)覺得付出的報(bào)酬不值得,我們的利益實(shí)際上是受損失了。這和我們所以為的恰恰相反,因?yàn)槲覀兯艿玫降墓ぷ髦粫?huì)越來越少,別人會(huì)越來越不愿意依賴于我們。
另一方面也說明,我們對(duì)自己所從事的工作,還沒有足夠的自信,我們解決自己的問題還有困難,才會(huì)這么在意,并恐懼。如果我們把完成別人工作當(dāng)成自己的最大利益,這個(gè)對(duì)時(shí)間的恐懼自然就會(huì)消失,這個(gè)時(shí)候就自然而然的開竅了,就知道怎么去發(fā)現(xiàn)問題了。只有做到這一點(diǎn),才能在自己所服務(wù)的領(lǐng)域建立起自信,成為一個(gè)合格的架構(gòu)師。
其實(shí)剛開始一般是硬著頭皮去克服對(duì)時(shí)間的恐懼和壓力的,一點(diǎn)自信都沒有。但只要做成功了一次(只要真的舍得這么去做了,想不成功也很難!),自信就開始慢慢建立起來了,這個(gè)時(shí)候就是我們開始慢慢變成架構(gòu)師的時(shí)候。大家就當(dāng)著上當(dāng)一回,試試看。
如何發(fā)現(xiàn)“是誰的問題”
當(dāng)我們真正專注于別人的問題的時(shí)候,我們自己的理想,抱負(fù),對(duì)技術(shù)的追求都不算什么了。這些理想,抱負(fù),對(duì)技術(shù)的最求,不就是要達(dá)到自己的利益嗎? 只有幫助別人解決了問題,這些理想,抱負(fù),對(duì)技術(shù)的追求才可能實(shí)現(xiàn),否則這些理想,抱負(fù),對(duì)技術(shù)的追求有什么意義,能得到什么利益?
這個(gè)時(shí)候就會(huì)真正的開始思考,別人究竟有什么問題。其實(shí)也很簡(jiǎn)單,和我們自己面臨的問題一樣,別人的問題也都是如何獲取更好更多的利益。我們自己想明白了這一點(diǎn),自然也就能想明白別人的問題。這個(gè)時(shí)候就能夠問出正確的問題:如果問題不解決,究竟誰會(huì)有利益的損失? 如果問題解決了,究竟誰會(huì)有收益,誰的收益最大? 回答了這兩個(gè)問題就找到了問題的主體。只回答一個(gè)是沒有用的,因?yàn)楹芏鄷r(shí)候這個(gè)世界的事情,權(quán)責(zé)是不對(duì)等的。明白了這兩個(gè)問題,我們只要讓事情權(quán)責(zé)對(duì)等起來,讓每個(gè)人為自己的權(quán)利產(chǎn)生的結(jié)果負(fù)有義務(wù),大部分時(shí)候我們自己根本就不需要做什么,問題就都解決了。這就是最高明的架構(gòu)師。
架構(gòu)師的權(quán)利和義務(wù)
架構(gòu)師是要去平衡別人的利益,甚至?xí){(diào)整別人的利益的。一旦架構(gòu)師是全心全意的為別人的利益服務(wù),自然而然的架構(gòu)師就擁有了強(qiáng)有力的影響力,肯定會(huì)是一個(gè) leader。但是只是民意上的 leader 是沒有用的,不能完全發(fā)揮架構(gòu)師的能量。
架構(gòu)師必須是一個(gè)組織的領(lǐng)導(dǎo)人,有權(quán)利調(diào)動(dòng)這個(gè)組織的架構(gòu),才能夠更好的發(fā)揮架構(gòu)師的作用,更好的把利益的調(diào)整落到實(shí)處。所以很多公司設(shè)了很多架構(gòu)師的職位,但是并不具備調(diào)動(dòng)組織架構(gòu)的權(quán)利,那么這個(gè)架構(gòu)師的職位一定是形同虛設(shè)。架構(gòu)師只能夠通過建立某些流程來行使架構(gòu)師的權(quán)利,比如強(qiáng)制架構(gòu) review,反而會(huì)造成很多內(nèi)部不必要的沖突,最終都會(huì)導(dǎo)致這些流程流于形式,得不償失。相信很多人都已經(jīng)經(jīng)歷過這些,但似乎很少有人回去探討這是為什么。
反過來,具備架構(gòu)師能力的組織領(lǐng)導(dǎo)人,一定是一個(gè)很好的領(lǐng)導(dǎo),這個(gè)組織一定是很健康向上的,因?yàn)槊總€(gè)人的權(quán)利和義務(wù)就是比較均等的。并且這類領(lǐng)導(dǎo)對(duì)于組織成員權(quán)利和義務(wù)的對(duì)等狀況會(huì)非常的敏感,會(huì)及時(shí)的調(diào)整組織架構(gòu),在問題發(fā)生之前就解決了。這樣這個(gè)組織就會(huì)具備更好的抗壓能力,能夠更好的為這個(gè)組織的客戶服務(wù),這個(gè)組織的成員內(nèi)心一定都是比較平衡的,每個(gè)人的能力都能夠得到比較好的發(fā)展。當(dāng)然讀者可能又會(huì)說,這不是管理學(xué)的東西嗎? 是的,但也是架構(gòu)的問題。所有架構(gòu)的核心就是組織架構(gòu)。或者也可以這樣說,一個(gè)合格的組織領(lǐng)導(dǎo)人,一定必須是一個(gè)合格的架構(gòu)師。
架構(gòu)師的義務(wù)似乎不用說了,大家提的要求可能比我提的都高 -- 當(dāng)然是發(fā)現(xiàn)問題并且解決問題。架構(gòu)師必須能夠超越對(duì)時(shí)間的恐懼 -- 也就是說必須具備了一定程度的自信,哪怕是裝的,去真正的發(fā)現(xiàn)問題的主體,識(shí)別真正的問題,并把這個(gè)行為變成為自己面對(duì)問題的第一反應(yīng)。架構(gòu)師還必須要明白,所給出的解決方案 -- 架構(gòu)的分拆、合并方案,只有讓問題的主體的權(quán)責(zé)對(duì)等,才能夠真正的解決別人的問題。一般明白了問題的主體,以及主體的利益所在,做到這一點(diǎn)也沒有問題。
架構(gòu)師和技術(shù)
很多人會(huì)問,特別是做軟件行業(yè)的,架構(gòu)師是不是需要學(xué)習(xí)技術(shù),甚至是學(xué)習(xí)語言? 如果一個(gè)架構(gòu)師還有這個(gè)困擾—就如問這個(gè)問題的人,說明目前還不具備做架構(gòu)師的能力,或者說還不具備對(duì)自己領(lǐng)域 -- 哪怕是技術(shù)領(lǐng)域 -- 的自信,更別談業(yè)務(wù)領(lǐng)域了。
因?yàn)榧夹g(shù)和語言,都是用來識(shí)別和解決所服務(wù)的主體的權(quán)責(zé),保護(hù)并提升所服務(wù)的主體的權(quán)利的。特別對(duì)于軟件領(lǐng)域來說,必須明白軟件本身是怎么回事,解決什么問題,還要解決軟件所服務(wù)的對(duì)象的領(lǐng)域本身是怎么回事,解決什么問題,這就要求更高了。語言和技術(shù)應(yīng)該是隨手拈來才對(duì),對(duì)于架構(gòu)師這些都是工具。學(xué)習(xí)技術(shù)和語言,如果明白了這些技術(shù)和語言要解決的是誰的問題,什么問題,學(xué)起來是非常快,非常容易的。
同樣,采用哪個(gè)技術(shù)或者語言,只要某個(gè)技術(shù)或語言所解決的問題的主體,以及所解決的問題,和自己所面對(duì)的問題的主體和這個(gè)主體要解決的問題,這兩者是匹配的,那么這個(gè)方案是成本是最低的,所采用的技術(shù)或者語言就是靠譜的。沒有趁手的工具或語言的情況下,自己設(shè)計(jì)一個(gè)也不難,因?yàn)楹芮宄约阂裁础R灰约鹤觯瑹o非是一個(gè)成本問題,也就是利益問題。并且從這個(gè)思路下去,選擇的工具和語言肯定都是最簡(jiǎn)單的,成本是最低的。因?yàn)榧軜?gòu)畢竟解決的還是人的利益問題,成本越低越好,這個(gè)成本當(dāng)然是長期總體成本,不是眼前的短期成本。