皇家圖書館 - 外國資源翻譯

心繫產品的軟體工程師(The Product-Minded Software Engineer)

前言

去年偶然發現了這篇文章,我蠻認同作者(Gergely Orosz,Uber 的 Engineering Manager)提出的幾個想法,於是就寄信給他請求轉載、翻譯。他也很迅速地回信答應了,人真好!

我很喜歡 Product-Minded Engineer 這個概念,指的是工程背景出身,熱衷於了解產品設計、專案管理、用戶需求的開發者。文中提到的部分特質或許有點過於理想,但我相信遊戲工程師們一定或多或少能在裡頭看見自己的影子!畢竟大多數人都是對產品(遊戲)本身有熱情才選擇投入這個行業的。

奠基於自身的工程專業上,督促自己去探索工程以外的領域,甚至進一步朝成為產品經理、製作人邁進,這個路線好吸引人啊!但勢必也很高難度QQ

註:因為 Product-minded engineer 這個詞有點難用洗練的中文來表達,所以我決定保留英文的稱呼方式。


This article isn’t written by me, all rights retained by the copyright holder.

Author: Gergely Orosz

Original Post


TheProductMindedSoftwareEngineer

Product-minded engineer 是一群對產品本身非常有興趣的開發者。他們渴望了解決策背後的原因、人們會如何使用產品,並且熱愛參與產品開發的決策過程。這類型的人極有可能成為一位優秀的產品經理,如果他們願意捨棄擔任工程師的樂趣。我和很多優秀的 Product-minded engineer 合作過,而我也把自己視為這類型的開發者。在開發世界級產品的公司裡,Product-minded engineer 能夠將團隊帶向一個新的高度。


Atlassian 的產品經理 Sherif Mansour 寫過一篇很精彩的文章,內容是關於「產品工程師(Product Engineer)」這個概念,以及產品經理該如何辨認出這類人才、和他們順暢地合作。他想說的重點差不多是這樣:

我在過去十年的產品經理生涯中得出一個結論:產品工程師是協助你打造出成功產品的關鍵要素,他們還能使你成為更好的產品經理人。


他也引用了 Shopify 的技術長 Jean-Michel Lemieux 的說法:

當你的產品有了初步的根基後,你需要熱衷於探究「為什麼(Why)」的開發者。他們是一群致力於用科技解決用戶困擾的工程師,他們期盼為產品創造美妙的體驗。這就是我對產品工程師的定義。差勁的工程師往往會便宜行事,優秀的產品工程師則會明白:一個好產品的誕生仰賴在開發階段就做好深入、全面性的考量。


負責開發使用者互動功能的團隊是 Product-minded engineer 能發揮巨大影響力的環境。他們善於和產品經理溝通協調,往往會成為團隊中關鍵的貢獻者,甚至晉升成團隊領導人。所以,Product-minded engineer 的特質有哪些、你該如何成為這樣的人呢?這篇文章總結了我從這群人身上觀察出的 9 種特質,還有我給想成為這類角色的工程師的建議。


1. 主動對產品提出想法/評價

Product-minded engineer 不滿足於拿到規格書後立刻埋頭苦幹。他們會試著思考不同的方案,並且向產品經理提出。他們常常挑戰現有的規格書,尋求更好的替代方案。


2.對商業、使用者行為的資料感興趣

Product-minded engineer 的想法並非憑空得來的。他們投入了許多時間在理解商業的運作、思考哪些特質造就了好產品,以及釐清自己的目標。他們十分善解人意,能夠明白使用者會對產品有什麼感受、產品能為使用者帶來哪些助益。他們常一頭栽入有關商業、使用者指標(User Metrics)的數據,盡可能地去獲取他們需要的資料。他們可能會直接存取(如果這是可行的),或是向產品經理、資料科學家打聽這類的資訊。他們是出自天生的好奇心而做這些事,這就是我下一個觀察到的特質。


3.富有好奇心並熱衷於問「為什麼?」

Product-minded engineer 喜歡對任何事物提出「為什麼?」。為什麼要做這個產品功能,而不是另外一個?為什麼要把這個東西設為里程碑(Milestone),而不是另外一個比較容易達成的?如何評估事情 – 為什麼不採用另一種比較全面的評估方式?

他們會自主地去尋找答案,然後再和產品經理、其他業界人士討教更多產品相關的問題。即使他們總是在問問題,他們還是能夠避免惹惱別人,因為他們一向和這些人維持著良好的關係。


4. 善於溝通、和非工程專業的人維持良好關係

Product-minded engineer 喜歡和非工程領域的人聊天,學習他們都在做什麼事、為什麼這樣做。他們對於其他專業是如何運作的很感興趣,我常看見他們在買午餐、買咖啡的時候和非工程專業的人交談。


5.提供產品/工程之間的權衡之計

因為他們對產品的「為什麼?」有很深厚的理解,同時也擅長工程方面的事物,他們能夠帶來很少人能提出的建議。舉例來說:在衡量開發產品的成本時,實作核心功能所需的時間、人力成本往往是很浩大的。許多工程師會開始尋找比較省力的方式,並且評估這些刪減會對功能本身造成什麼影響。

Product-minded engineer 則會從兩個角度向這個問題進攻:同時思考工程上的取捨以及對產品的影響。他們常常會回過頭去找產品經理,建議轉而開發一個和原先規劃不同的內容,有鑒於這個方式能大幅減輕工程方面的負擔,並且讓產品達到相似的效果。

遊走於產品、工程之間是 Product-minded engineer 特有的能力,他們能快速地往返硬幣的兩面:產品功能與工程成本。因為他們擁有對工程、產品的背景知識,他們往往能很快速地做出有參考價值的結論。


6.務實地處理邊界案例(Edge Cases)

邊界案例是個有趣的東西。一方面來說,工程師常常會忘記它們,直到使用者、測試員給予回饋後才回過頭來處理。另一方面來說,要掌握一個新產品、新功能中所有可能的邊界案例是非常花時間的。

Product-minded engineer 能快速地羅列出邊界案例,並且想辦法降低處理它們所需要耗費的成本 – 甚至是提出不需要工程師額外下功夫的解法。他們會聚焦在「最小可行產品」的概念,斟酌花時間處理邊界案例的利與弊。他們能提出中立的建議:盡可能條列有潛在風險的點,並評估哪些邊界案例必須優先處理。

舉例來說:如果千分之一的使用者會遇到一個 error,他們會評估修復它的成本,以及如果不修的話會怎樣。客服有辦法幫使用者排除問題嗎?使用者可以在按下「再試一次」後順利完成操作嗎?是否能透過微調產品的規格,讓這個邊界案例不再出現?


7. 快速的產品驗證循環

即便是產品功能尚未完善前, Product-minded engineer 也能用有創意的方式去獲得早期的反饋。像是在走廊找同事試用產品、向產品經理展示正在開發中的功能、組織一個團隊針對Beta版本進行測試抓Bug…等。他們常常在思考:我們該如何證實人們會願意使用這項功能?而我們預期他們會如何操作?


8. 對產品功能的全盤掌握

大多數經驗老道的工程師都能夠自始至終地完成工作:拿到規格書、開始實作、確認這功能得以順利運作、交差了事。而 Product-minded engineer 往往還會更進一步。

唯有在獲得用戶行為、商業表現的數據後,他們才會認定自己的工作完成了。在產品推出後,他們仍會積極地與產品經理、資料科學家、客服團隊交涉,試著了解自己開發的功能在辦公室外的現實世界中被如何使用。針對這個問題,有時可能要蒐集好幾週的資料才能夠下定論。就算那時他們已經在處理新的專案了,他們依舊會把「確認成果」列為最高優先度的事情。這並不是什麼非常耗費時間的事情,但需要一些額外的堅持,不斷地探究:我的工作成果實際上的表現如何?

當一項功能的表現不如預期,他們會抱持著好奇心去分析問題出在哪裡。他們想知道造成產品企劃書和現實世界成果有落差的根本原因。他們常常投入大量的時間與產品經理、資料科學家辯論各種假設狀況,同時向他們學習。


9. 透過反覆地學習,培養出對產品的強大直覺

對 Product-minded engineer 來說,一個典型的開發步驟通常會是這樣子:

  1. 為了瞭解開發這項產品功能的用意,他們會提出很多問題。
  2. 把他們想到的建議和權衡之計攤在檯面上,有些可能會被納入修改過後的規格書裡。
  3. 他們快速地做出功能的雛形,以方便在早期獲得反饋。
  4. 在完工並推出功能後,他們會主動地追蹤這項功能的表現是否符合期待。
  5. 如果沒有,他們會深入探討失敗的原因並記起教訓,進而對現實世界中的產品使用情況更加了解。

每當經歷一個專案後,他們對產品的了解就會更深入,並且建立起越來越強大的產品直覺。當下一次機會來臨時,他們會為專案帶來更有價值的建議。漸漸地,他們會成為產品經理器重的對象,他們的意見往往比較容易受到採納,即便是在專案開工之前。他們能在團隊中樹立起良好的名聲,為他們的職涯發展開啟更多扇門。


成為 Product-minded engineer 的小技巧

如果你是在做使用者互動相關的產品,以下是我見識過非常實用的小技巧,讓你能往 Product-minded engineer 更近一步。

  • 去探究你的公司有多成功、為何如此成功。公司的商業模式是什麼?哪個商品/服務最有利可圖?哪一項業務正在迅速擴張?為什麼?而你的團隊該如何因應這些現況?

  • 與產品經理建立起穩固的關係。大多數的產品經理會把握機會指導工程師。如果有工程師表現出對產品本身的熱忱,意味著產品經理也能在互動的過程中藉機自我提升。
  • 去接觸使用者研究、客戶服務,以及任何能使你更了解產品運作的活動。多和設計師、UX專家、資料科學家、營運專家請益,他們通常都很頻繁地和使用者互動。
  • 帶著思慮周全的建議攤到檯面上。在你對商業、產品、利害關係有一定程度的理解後:你可以試著主動出擊。在你參與的專案團隊裡說說你想到的建議,或是針對工程面/產品面等特定領域提出你對大方向的見解,這樣也有助於明確地列入企劃文件裡。
  • 為你正在參與的專案提供產品/工程的權衡之計。不要一味地想著為了產品功能必須在工程方面作出什麼犧牲,也要試著對產品規格做衡量,尋求兩全其美的替代方案。與此同時,對其他人的反饋抱持開放的態度。
  • 向你的專案經理尋求反饋。作為一位優秀的 Product-minded engineer 意味著你除了工程的能力外,同時也具備相當程度的產品相關知識。而能針對你的產品知識給予指教的最佳人選,就是你的產品經理。試著去了解:他們認為你對產品提出的建議是否有參考價值?並且從中吸收能使你更加成長的各種見解。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s