在專案組也有段時間了,你對系統架構師了解過嗎?

2021-10-03 03:55:46 字數 2357 閱讀 7727

​​​​系統架構師是乙個最終確認和評估系統需求,給出開發規範,搭建系統實現的核心構架,並澄清技術細節、掃清主要難點的技術人員。主要著眼於系統的「技術實現」。因此他/她應該是特定的開發平台、語言、工具的大師,對常見應用場景能給出最恰當的解決方案,同時要對所屬的開發團隊有足夠的了解,能夠評估自己的團隊實現特定的功能需求需要的代價。系統架構師負責設計系統整體架構,從需求到設計的每個細節都要考慮到,把握整個專案,使設計的專案盡量效率高,開發容易,維護方便,公升級簡單等。

在軟體開發剛興起那一會,哪有聽說過架構師,更沒有說大學中有系統架構方面的課,做專案的時候也很少有專門的架構師角色。一般來講,系統比較簡單的話,並不一定要有架構師,當系統更為複雜,才需要有人在更高的視角上去關注整體性的東西,這也是系統規模不斷發展的結果。 所以,我們可以認為,架構師並不是乙個必需品,甚至不同公司架構師的職責都不太一樣,並沒有乙個非常明確的定義,但整體來講,架構師需要關注整個體系中方方面面的東西,還需要去解決一些關鍵性的技術難點,並需要有更為長遠的考慮,這個是共識。

架構師與工程師之間的差別並不在於年紀 ,而是在於視角的不同以及各方面積累的差別。

首先是意識。作為架構師,不能僅僅關注怎麼去實現乙個功能,還得去琢磨為什麼這麼做、怎樣才能做得更好、應該在什麼場景採用什麼樣的技術方案等問題。另外還得去關注測試、部署、專案管理的方式等方面,甚至要去了解使用者的需求、公司業務的需求。如果一直考慮這些事情,時間長了、經驗多了,就會有比較好的整體概念或檢視在腦中,綜合素質會得到提公升,明白功能只是最基本的,系統的可用性、穩定性、可擴充套件性更為重要。

其次是積累。it技術一直在演進,全世界無數人的不斷研究與實踐成就了技術的提公升與進化。作為技術人,需要關注當前最新的技術、架構、解決方案、技術理念等,理念可以用不同的技術來實現,也乙個不斷進化的過程。而作為架構師,承擔的是更重要的角色,他的決定會影響到更大的團隊或體系,所以就需要有足夠多的相關知識和技能,以及足夠廣的視角,而這些都需要架構師平時不斷的積累。看書,技術相關的大概一半,另一半主要是社科類、經濟、歷史、管理之類的,對提高架構思維很有幫助。

再次是責任感。之前提到,架構師承擔的是更重要的角色,他的決定會影響到技術選型、系統架構、具體實現的方案甚至系統發展的方向,所以架構師需要有很強的責任感,要對技術團隊負責,需要發揮自己的影響力,做很多溝通、協調、支援的工作。

最後是興趣。在我看來,人是受限於他的性格、興趣、天分這些因素的,會不自覺地去靠近他更喜歡、更擅長的方向。所以,到底是當工程師還是架構師,或者其他角色,也是要看興趣的,有的人就是喜歡解決技術難題,就是喜歡具體的模組實現,不想牽扯太多精力去考慮其他的方面,那麼也不見得非要當架構師,只是分工不同,業界也有技術專家、研究員這樣的角色。

之前架構師大會上經常有人說,沒有最好的架構,只有最合適的架構。確實如此,作為架構師,很多時候,技術上的東西可能跟程式設計師差不多,但差別就在於能不能以更大更廣的視角去看待問題,而非僅從自身角度出發。

視角變大之後,所要關注的東西就會變多,變數、變數也會更多,很難理想主義,很多時候都需要做出妥協或者說平衡,到最後就會發現,架構和管理在很多時候是相通的。

管理是在乙個有限資源、確定時間點、明確目標的情況下,盡可能達成目標,過程中需要考慮輕重緩急,需要隨時調整以適應現實變化,以完成目標為首要考量。

架構也是如此,需要考慮的是巨集觀上的方向性的問題,是各個部分之間的平衡關係,是如何配合才能達成最佳效果,而非僅僅是短期目標而達成,也不必糾結於細節的完美。

這些年,管理、架構都發展出了很多的理論,雖然行業、環境一直在變,但卻也不能直接斷定它們是不是合適,需要學習的是其中的思維方式,具體的問題具體分析。

(1)技術能力

技術能力,不用置疑肯定是最重要的。技術能力弱的架構不是乙個好架構。所以,你需要知道所有主流技術的基本原理、應用場景,及快速解決問題的能力。所以,架構師必須要有見識,所需知識面肯定是要不斷拓展的。你需要清楚在什麼樣的場景用什麼樣的技術比較合適,並知道可能存在什麼樣的風險。來了需求,你腦袋是空的,不知道用什麼技術這是最可怕的。

(2)架構能力

這個可以表現為抽象能力、整體規劃能力、及設計能力。你需要照在業務的角度進行系統分解、技術選型、架構搭建,以及規範制定。架構出來了至少可以滿足最近的發展,或者可以很方便對現有架構進行擴容。有人說架構不需要懂業務,我面試過的就有明確表示不做業務架構。當然有方面的架構師,如中介軟體架構師,運維基礎設施架構師等。但一般的後端架構師都是需要了解業務,不理解業務你如果進行系統分解,服務劃分,及根據不同業務作出不同的架構。技術都是為業務服務的,不站在業務的角度設計架構,那架構就是空談。

(3)溝通能力

這個看起來不是最重要的,其實也非常重要。作為乙個優秀的架構師,你需要清楚的知道客戶的需求,需要不斷和需求人員進行溝通,以達到客戶真正的目的。不論是不是架構師,任何乙個職場人,提高自己的溝通表達能力無疑是不可或缺的。有一句話怎麼說的,領導就喜歡拍馬屁的。做領導的大多不是技術特別牛的,但溝通能力肯定是很好的。

這也映襯了我們上面說的,架構師與工程師之別,架構與管理相通的說法!

用了一段時間Gamebryo了

用了一段時間gamebryo了 做了2個月的demo,由於一些不可抗拒的因素,demo被迫喊停,我和另外乙個同事被調到了專案組,做了2個月的東西完全被否決掉,心頭總是有些失落的。最近在反思的同時也想把使用gamebryo的感受記錄下來。首先說明,在3d方面我就是一打醬油的,也就知道那麼點基礎概念,所...

折騰了一段時間Mongodb後終於放棄了

我折騰這個的原因 大資料量的儲存 海量資料的分析 但是目前看來,儲存的問題上不大,但是mongdb那些特性對於我的 大資料 上沒有適配的地方 而另外乙個重中之重就是資料統計和分析,這是我的需求核心,我需要對海量資料進行查詢統計,太多的group by之類的了 而mongodb似乎不能滿足我的要求 或...

Redis訂閱了一段時間後訂閱失效了

程式發布了幾個月都沒有重啟,突然間就收不到訂閱訊息了 敲發布指令發現沒有訂閱者了,重啟解決問題但不知道什麼原因。檢視redis配置tcp keepalive,是否要傳送心跳包 publish channel message 檢視是否有訂閱者 client list 檢視redis連線的客戶端 確認是...