Dave Hendricksen談軟件架構師的溝通原則
對于一名合格的軟件架構師來說,溝通能力是不可或缺的。來自湯姆森路透的資深架構師 Dave Hendricksen 在《軟件架構師的 12 項修煉》中提供了比較細致的分析和建議,其中對于溝通原則和策略給出了具體的建議。
對于架構師的溝通原則,主要建議包括:
多說“是”,少說“不是”
架構師經常會被咨詢問到某個項目的可行性,并提供從戰略到戰術的多個替代方案,附帶若干成本選項,以使商務伙伴能根據特定項目的投資進行判斷。架構師與項目評估團隊的角色不是決定要構建什么,而是決定怎樣構建。我們試圖說出的答案是“對,我們能構建這個項目,這些是相關的信息”。產生的信息需要包括諸如所考慮的各種替代方案、項目風險(以及可能的規避策略)、基于的假設條件,以及需要指出的突出問題。我們不是在尋找這樣的答案:“不行,這個項目不可行,但我們能構建另一個項目(通過消除原困難項目中的難題,而代之以我們想構建的那些特性)。”
但是,如果一個項目或任務不可行,我們需要立即巧妙地指出評估結果、解釋原因,并提供替代方案。這通常歸結于法律法規、行規等原因,以致“不” 是正確的回答。當然了,還有其他一些例外情況:提出需求的人是想逃避工作,需求違反了公司的政策,或者你手頭有優先級更高的工作,無法讓你有足夠時間來對需求做出滿意的答復。這些情況下,你要清楚地告訴人家你說“不”的原因。
特殊場合才說“不”
從架構師的前景來看,只有在若干種情況下你可以簡單地說“不”。大多數時候,你必須提供能讓事情完成的替代方案(涉及費用、風險和每種方法的好處)。最后的決定取決于項目的主人(即掌握購買權的人)。
只說“不”或僅僅闡述事實很難讓人接受。充分準備來解釋所做決定的原因,證明所做決定是好的商業決定。通過列舉事實,探究事實背后的根本原因,陳述此根本原因如何支持期望的商業目標。
你要相信所提到的解決方案。如果你并不真正相信你所推銷的東西,你的肢體語言和眼睛會說實話的。你的不誠實如同水中的血腥味那樣:你很可能被問及更詳細的一些問題,如同鯊魚在攻擊一樣。在某種意義上,你是將自己置身于未曾準備好的問題。你需要了解足夠多的細節來相信這種解決方案。在你向人們提出某種解決方案時,你也需要自我提問和回答有關的難題。
在所有可能情況下,避免真的說“不”。事實上,根據你所交互的人或群體的語境,解釋決定所基于的原因。
抑制想自衛的沖動
通常在交談中,當我們聽到并不完全對自己有正面意義的事情時,我們可能會找借口,我們可能會找辦法轉移話題,并責怪他人,以使自己脫離干系。或者我們想強詞奪理,以闡述那些語句。應當避免做出此反應的沖動。相反,代之以等待,并接受別人所說的話。
抑制想自衛的沖動的一個例外就是當手頭的問題涉及企業政策或你的正直時。如果別人說的話使你真正涉及與公司政策沖突或你出于正直未做某事(假如,你已經正確做出了行動)時,你需要立即抨擊這些說法。你可能想用澄清問題的辦法來明確要點,比如“你的意思是我做過某事嗎”。如果別人說“是的”,你就以“這并不準確”來明確回應;倘若人家回答“不是”,要感謝他澄清了此事。
傾聽建議來改善合作
從軟件開發的角度看,批評別人和被批評的情況經常發生。因為有軟件評審、設計評審、架構方法評審、單元測試、功能測試、缺陷跟蹤,或者只是簡單地向別人尋求幫助,與上司一對一地談話,這個列表不斷在進行。在所有情況下,總有機會將別人說的話特定到你身上。
如果你能避免在談話中個人化,你聽取別人說話的能力就大大提升了。要試著找出他說話的真正用意(即便你不同意他說的話)。以適當的方式取得他想傳遞的本意,復述一遍要點。一般情況下,別人只是想被理解,他并不是在尋求你同意他的觀點。當你傾聽并能理解對方表達的要點時,你就能和他心靈相通。
了解別人和自己的溝通需求
在架構師的世界中,你需要例行地與許多人交流。你可能在上一次會議上與有些人談過話,也可能沒有和這些人談話。挑戰就是快速了解人們在說什么,他們怎么說這些話,來“讀懂”本次會議。
觀察關鍵的時刻,即做出決定的時刻是一個要點,以此識別人們提出的問題和關心的地方,來加強核心概念,幫助你關注會議的方向以及把會議引向一個成功的結論。為了認識這些關鍵時刻,我們需要吸收所有信息,包括提供給我們的語言或非語言信息。
觀察別人的舉止能夠告訴我們如何與每個人最好地溝通。由于每個人都不相同,并且對溝通也有不同的需求,架構師必須讓傳遞信息的方式適應這些需求,以確保有效溝通。
關鍵點就是我們要基于每個聽眾成員的溝通需求來匹配交流風格。有些人的反應是能夠看出來的,他們的偏好能夠用諸如“我明白你的意思”之類的話辨別。另外有些人需要傾聽,并吸納語言細節,他們的偏好能夠用諸如“我在聽你說”之類的話辨別。還有一些人在交談中比較情緒化,他們的偏好能夠用諸如“我覺得怎樣怎樣”之類的話辨別。
才思敏捷
隨時準備好回答別人的提問。當人們提問時,不大可能先給出預告。也就是說,你不會有任何時間去準備理由充分的答案。
作為架構師,你需要對迅速切換語境游刃有余,即記住頭腦中每個活躍的事情,將其壓入要記憶的棧中,然后集中全部注意力來快速處理面前的語境。這種活動稱作“才思敏捷”。
在這種情況發生時,試用下列模式來處理此形勢:
- 關注是誰在問此問題。這個人的背景如何?他需要知道什么信息來理解你的反應?倘若你對他的問題有所反應,這是否合適?
- 想出三點解釋,如果可能的話,包含一條支持這些解釋的商業根本原因。在你有限的時間里,試著對你要溝通的答案構想出一幅場景。
- 如果對方要求你做出某個決定,暫停并思考你要說的話對單位的影響。因為這項決定將在單位中貫徹,別的群體將如何反應?
- 有意思的是,在這個所有人都不太高興的時刻,每個人都變得更通情達理,想出更多的可替代方案來使問題以更簡單、更快速、更省錢的方式解決。當答案浮出水面時—可能是真正革新型的解決方案,就準備說“是”吧。
- 如果你的答案有消極影響,要展示別的答案也是“有問題”的。陳詞濫調過后,大家同病相憐—一起共享不快,滋味總比吞咽藥丸感覺好一些。
這些原則在架構師的日程工作中都值得借鑒,歡迎大家對此發表自己的看法和見解。