通向架構師之路

jopen 11年前發布 | 17K 次閱讀 程序員

  對于不少開發者來說,成為架構師是職業生涯的目標之一,但是如何成為一名架構師卻沒有統一的教科書,Verizon 公司架構師 Bett Correa 在 Software 期刊中分享了自己的成長經歷,主要的經驗包括均衡發展技術知識、領域知識和溝通能力,通過架構來學習架構等。

  Bett 認為架構師必須了解當前的系統如何滿足客戶的需求、實際地編寫代碼、與客戶坐下來觀察他們的工作,并聽取他們對軟件的反饋意見。架構師必須搭建團隊之間的橋梁,理解每一個團隊自身的局限性,并考慮每一方的利益。當業務部門提交了一個新需求,架構師必須據此做好滿足需求的軟件設計,并把這個設計“賣給”各個團隊,讓開發人員和測試人員了解新系統的工作原理。

  另一個重要的經驗是平衡,技術知識、領域知識和溝通能力之間的均衡發展。Bett 最初以技術人員出身,學習 Perl 和 JavaScript 等,當時并沒有考慮軟件設計方面的問題,基本的想法就是“盡可能快速地編碼,快速完成任務”,但事實上,通常這只是個美好的愿望。在進入一家新公司之后,她開始了解該領域的知識和溝通技巧。她參與了 Toastmasters 活動,提高了當眾演講和主持會議的自信。然后,開始了解系統需求,這離軟件設計又近了一步,她把其他人對系統的需求分析記錄下來,持續了幾個月的時間。

  她的工作導師要求她了解軟件系統和工作原理,并與各個團隊的領導打交道。一段時間之后,她成為了該系統的專家,許多人開始找其咨詢。同時,與業務部門接觸,了解市場行情,學習公司的發展史,閱讀公司網站上的白皮書和在線課程。

  這些付出都是值得的,因為 Bett 可以輕松地與開發人員和業務客戶討論系統的細節問題。一天,導師讓 Bett 設計軟件系統的一個小模塊,她需要決定許多方面的問題。Bett 發現設計不是一個簡單的 01 游戲——設計都是權衡和妥協的結果,比如增強安全性可能會降低響應速度。某個決定在一些情況下生效,在其他情況可能無效,Bett 不得不找出失效的各種情況,并評估其成本。

  在擔任架構師的第一年,Bett 服務于 25 個不同的小項目,從而全面的了解軟件系統的各個部分。她能夠將不同背景的人組織到一起拿出解決方案。慢慢地,Bett 發現她的設計可以讓各個利益相關者接受。

  Bett 建議,如果你想培訓架構師,那么:

  • 發展團隊中的好苗子
  • 給他們安排一些設計工作
  • 鼓勵互相交流
  • 讓整個團隊都考慮設計問題
  • 鼓勵設計方面的培訓
  • </ul>

      如果你想成為架構師,那么:

    • 找一位資深的架構師做導師
    • 尋找可以設計的項目,甚至可以是自己的項目
    • 參加正式培訓并多交流
    • Bett 特別強調,只有親自參與設計,才會真正了解應該如何設計。起初有很多想法,但是開始設計了,才發現很多都是不切實際的。通過課程或者書籍來培訓自己是必要的一步。
    • </ul>

        說到架構師的溝通和協商能力,Dave Hendrichsen 在“軟件架構師的 12 項修煉”中做了充分的剖析,建議如下。

        多說“是”,少說“不是”

        架構師經常會被咨詢問到某個項目的可行性,并提供從戰略到戰術的多個替代方案,附帶若干成本選項,以使商務伙伴能根據特定項目的投資進行判斷。架構師與項目評估團隊的角色不是決定要構建什么,而是決定怎樣構建。我們試圖說出的答案是“對,我們能構建這個項目,這些是相關的信息”。產生的信息需要包括諸如所考慮的各種替代方案、項目風險(以及可能的規避策略)、基于的假設條件,以及需要指出的突出問題。我們不是在尋找這樣的答案:“不行,這個項目不可行,但我們能構建另一個項目(通過消除原困難項目中的難題,而代之以我們想構建的那些特性)。”

        但是,如果一個項目或任務不可行,我們需要立即巧妙地指出評估結果、解釋原因,并提供替代方案。這通常歸結于法律法規、行規等原因,以致“不” 是正確的回答。當然了,還有其他一些例外情況:提出需求的人是想逃避工作,需求違反了公司的政策,或者你手頭有優先級更高的工作,無法讓你有足夠時間來對需求做出滿意的答復。這些情況下,你要清楚地告訴人家你說“不”的原因。

        了解別人和自己的溝通需求

        在架構師的世界中,你需要例行地與許多人交流。你可能在上一次會議上與有些人談過話,也可能沒有和這些人談話。挑戰就是快速了解人們在說什么,他們怎么說這些話,來“讀懂”本次會議。

        觀察關鍵的時刻,即做出決定的時刻是一個要點,以此識別人們提出的問題和關心的地方,來加強核心概念,幫助你關注會議的方向以及把會議引向一個成功的結論。為了認識這些關鍵時刻,我們需要吸收所有信息,包括提供給我們的語言或非語言信息。

        觀察別人的舉止能夠告訴我們如何與每個人最好地溝通。由于每個人都不相同,并且對溝通也有不同的需求,架構師必須讓傳遞信息的方式適應這些需求,以確保有效溝通。

        關鍵點就是我們要基于每個聽眾成員的溝通需求來匹配交流風格。有些人的反應是能夠看出來的,他們的偏好能夠用諸如“我明白你的意思”之類的話辨別。另外有些人需要傾聽,并吸納語言細節,他們的偏好能夠用諸如“我在聽你說”之類的話辨別。還有一些人在交談中比較情緒化,他們的偏好能夠用諸如“我覺得怎樣怎樣”之類的話辨別。

      來自: InfoQ
       本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
       轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
       本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!