工程師在專案不同階段,必問的核心問題

2024年12月10日

💎 加入 E+ 成長計畫 如果你喜歡我們的內容,歡迎加入 E+,獲得更多深入的軟體前後端內容

Google 的第一位女性工程師 (後來當到副總) Marissa Mayer 多年前在 IIT 給過一場畢業典禮演講,那時她提到在她生涯很早期就認知到的一件事,是當看到那些讓自己感到佩服的人,不是去想對方比自己多懂什麼,而是對方如何思考、如何理解這個世界、如何拆解問題。

這個觀點對工程師職涯來說非常重要,在邁向資深工程師的路途中,持續提升自己的思考能力,是不可或缺的。在資訊科技發達的現代,資訊落差對多數工程師來說,不是特別大的問題,畢竟真的有什麼不懂的,到 Google 上面搜或者問 ChatGPT,多半能獲得相關資訊。

在這個脈絡下,如何理解事情與如何思考,會是更關鍵的。而要有效提升思考能力,問好問題是基本,因為許多思考都源自於問問題,當看事情時完全沒問題,會變得沒有往下想的方向;反之,當腦中有問題時,就會有了可以思考的方向,進而能更深入去探究與思考。

專案相關要思考的問題

當要開始一個專案,或者要開發一個新功能時,一般來說會由產品經理端發起需求,然後由工程師評估,完成後才會進到技術設計與開發。在與產品經理的會議中,問好問題會對後續的技術設計與開發有很大的幫助。

目前業界有個說法是,當做到主任工程師以上的職級,對產品的掌握度要不亞於一個產品經理。對此,Google 的資深主任工程師 Addy Osmani 先前曾說過「使用者的體驗是衡量工程是否成功的終極指標,一個卓越的工程師會深入考量使用者與其需求」。

A user's experience is the ultimate measure of engineering success. Great engineers care deeply about the user and their needs — Addy Osmani

以下我們分別討論在一個專案當中,可以問什麼問題,來確保專案的成功。

專案前的基本問題

首先,在一個專案的最開始,可以先問以下的問題:

  • 即將要開發的功能,是為誰而開發的? 這個功能是在解決使用者的什麼問題?
  • 這個新的產品或功能,可以如何幫助團隊達成目標? 有沒有其他能更快、更有效達成目標的做法?
  • 我們是用什麼指標來衡量產品或功能的成功? 做到什麼程度才算成功?
  • 這些指標真的有解決使用者的問題、為使用者帶來價值嗎?

切記,對於軟體團隊來說,透過軟體創造價值與影響力是最基本的。如果無法對上面這些問題有清楚的回答,表示產品經理還沒有理清楚,這時千萬不要急著給時程安排或推進到開發,確保產品經理能回答這些問題,也是資深工程師的重要責任。

更進一步說,身為資深工程師,對於產品經理回答的內容,要適時去追問。關於追問,我們最推薦問真的是這樣嗎 (Is it true)? 以及如果真的如此,那有什麼實質影響 (So what)? 這兩個問題。

第一個追問的問題,是確保產品經理提的點,有足夠的佐證來支持。很多產品經理可能沒有相關的使用研究或數據,就隨意拋出想法,有時候提出的想法是基於錯誤的假設,這很可能會把團隊帶向有問題的方向。透過追問「真的是這樣嗎?」能夠去辨別,產品經理提出的是真的如此 (fact),還是僅是其個人意見 (opinion),這能避免做出沒有根據的決策。

第二個問題是去評估影響力的追問。如果想要避免團隊花很多時間,最後卻做出一般般的成果,這個追問會至關重要。前面談到,在專案最開始,要確保解決到使用者的問題、帶給使用者價值,這樣才能確保成果有足夠影響力,而不是在枝微末節的事情上鑽。而「so what」這問題,就是用來檢驗影響力是否充足的追問。

專案前的深度問題

前 Meta 副總 Julie Zhuo 曾發過一個貼文,推薦在專案進到開發前,要問的八個問題 (連結)。

Julie Zhuo 推薦在專案進到開發前,要問的八個問題
Julie Zhuo 推薦在專案進到開發前,要問的八個問題
圖片來源:https://www.linkedin.com/feed/update/urn:li:activity:7219028035931451393/

其中我們實際用過後,覺得最好用的是以下這幾個:

  • 「對使用我們產品的客戶來說,最理想的結果是什麼?」這個問題協助團隊去探究最核心且重要的目標
  • 「在什麼情況下,我們會更接近理想結果,但卻對指標沒幫助?」透過這個問題,可以去思考有沒有什麼更好的指標,能更精準地協助團隊來衡量
  • 「在什麼情況下,我們達到了指標,但實際上卻離理想結果越來越遠?」很多團隊很常做出好看的數字,但實際上沒真的帶給使用者影響力,而這個問題能協助辨別出那些虛榮指標,讓團隊能砍掉不是最重要的指標
  • 「如果我們達到指標,對公司營運會有實質影響嗎?」這個問題能避免團隊見樹不見林,避免做出好的數字,結果對更大的整體沒有實質幫助

思考到更廣面向的問題

上面談了思考專案時的深度問題,以下有幾個讓思考角度更廣的問題,也是推薦要問的

  • 這個專案有哪些利害關係人 (stakeholders)? 我們如何確保照顧到他們的需求?
  • 這個專案有依賴哪些上游團隊 (upstream)? 有哪些關鍵的依賴是一定需要對方會準時交付的? 該如何確保對方會準時?
  • 這個專案有哪些下游團隊 (downstream)? 要如何安排確保不會延誤到對方?

跟利害關係人與上下游的合作,通常不會是一次性的;因此如果能夠去顧及他們的需求,能讓長期的合作更加順利。

專案進行中

當專案前的問題都有獲得回答,並且實際進到專案後。資深工程師也要把關專案進度。雖然說在比較大型的專案,會有技術專案經理 (TPM) 來負責把關進度,但是 TPM 通常也會找團隊的資深工程師來了解狀況,所以假如能先從他們的角度思考,會很有幫助。

這個時候,推薦適時問以下的問題:

  • 有沒有任何可能造成延誤的風險?
  • 現在的進度是否如預期? 是否有延誤?
  • 有沒有人現在被卡住? 我可以如何協助他們排除問題 (help unblock them)? 例如因為有依賴上游某個 API,但上游團隊還沒好;或者產品端有改動,導致工程這邊暫時沒辦法往下開發

如果目前團隊已經有在做的任務,而產品經理想要突然插東西來做,資深工程師也要問類似的問題,特別是問說「這間臨時加進來的事,能帶來什麼影響力? 真的有比我們團隊在做的事情更重要嗎?」。如果判斷完認為沒有,這時就請發需求的人回去重新想,讓團隊成員可以專注在眼下的事。

閱讀更多

如果你對「資深工程師如何深度思考」的主題感興趣,我們在 E+ 有更深入的討論,會討論在專案上線期間、在技術設計時、在寫程式時,可以思考哪些問題。有興趣的讀者,歡迎加入 E+ 成長計畫。

本文為 E+ 成長計畫的深度內容,截取段落開放免費閱讀。歡迎加入 E+ 成長計畫閱讀完整版本 (點此了解 E+ 的詳細介紹)。

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們