這個系列是根據Amazon面試準備內容,軟件開發工程師面試準備 (Software Development Engineer Interview Preparation, SIP) 進行整理,該部分說明了探討了一個亞馬遜領導原則SBI,以及軟體工程師在面試問題時應如何處理、分析和解決此類問題。
什麼時候都可以使用這些原則,這個原則是思考的大方向與框架,像是:
- 在職業發展討論中
- 做出招聘決定
- 日常業務決策
SBI: Situation / Behavior / Impact
Situation:情境: 你的團隊想要達到什麼目標?
Behavior:行動: 你的計劃是什麼? 你做了什麼?
Impact:輸出: 結果是什麼? 影響了多少客戶?
範例問題
Q: 您有沒有遇過,必須在工作中做出決定,而您沒有所有可用數據的時候?
錯誤的答案
A:幾個月前,我的團隊遇到了一個大項目問題,當時發生了服務中斷,客戶沒有得到他們需要的一些訂單。 所以我們決定要回朔上個版本的系統。
Q:你如何做出決定?它基於什麼?
A:我們發現事情出了問題,我們只知道客戶沒有得到他們需要的東西。所以只需要回朔我們之前部署的功能即可。
這邊被認為錯誤的原因是,沒有完整的描述情境,對方沒有辦法了解狀況,也沒有辦法評估影響程度。
Q: 您有沒有遇過,必須在工作中做出決定,而您沒有所有可用數據的時候?
正確的答案
# Situation
# 1. 定義問題
A:我的團隊幾個月前遇到了一個大的服務中斷問題,
# 2. 起初的狀況
A:我們知道有問題,因為我收到了警報,我正在待命。
# 3. 當下第一個行動
A:所以我響應了警報,開始查看一些儀表板。
# 4. 描述問題細節
A:發現我們的訂單數量大幅下降,通常表示對客戶來說有些事情變得很糟糕。
A:問題是我沒有足夠的時間來找出根本原因層面出了什麼問題。
# Behavior
# 5.決定如何修正問題
Q: 接下來你會怎麼做?
A:我知道我自己無法解決這個問題,因為我們的系統很大。所以我與團隊中的其他幾位工程師召開了電話會議,開始了一個分而治之的過程,並提名了一群人開始研究系統的不同方面並開始分類
Q: 調查後下一步是什麼?
A:大約在第四個小時,即使我們不知道對客戶的確切影響,我也知道繼續將功能留在生產環境中風險太大。
A:所以我打電話要求回朔
# 6. 為什麼決定這個方式來修正問題
Q: 你怎麼知道這很重要,以至於你想要回朔而不直接繼續進一步調查?
A:這樣的調查存在收益遞減點,因為這是亞馬遜上任何客戶都可以使用的功能。
A:您永遠不會希望像這樣對客戶產生持續的影響,而且我們已經接到了幾個客戶服務電話。
A:因此,一旦您有幾個確認的客戶服務案例,最好進行回滾,然後留出時間進行根本原因分析。
# Impact
# 7. 說明修正方案的結果
Q: 接下來怎麼辦?
A:這是幾天的調查,不僅是對實際客戶影響的發現,你知道,客戶數量影響了由此產生的美元
A:但也試圖找出根本原因以及我們的哪個子系統出現故障,導致我們無法發貨我們需要發貨的訂單。
A:所以一旦我們確定了那是什麼,我們就想出了一個行動計劃來彌補問題。
A:我負責讓所有參與的合作夥伴團隊參與進來,並確保他們騰出空間來部署一個修補程序,然後在生產中進行部署和測試,最後再次進行部署。
# 8. 如何讓情況不再發生(長期影響)
Q: 所以你知道根本原因嗎? 從那以後又看到了這個問題?
A:不,因為我們無法從根本上解決我們沒有任何問題的原因。
A:但它所做的是它允許我們擴展我們的回歸測試套件。
分析表
階段 | 分類 | 說明 |
---|---|---|
Situation | 定義問題 | |
起初的狀況 | ||
當下第一個行動 | ||
描述問題細節 | ||
Behavior | 決定如何行動 | |
為什麼決定這個方式來進行行動 | ||
Impact | 說明行動的結果 | |
如何進行長期活動 |
1 thought on “軟體程式開發流程 – 問題解決”