甲乙方淺談與 whiteboard coding


前一份實習在 KPMG 的 Digital Village,是乙方管理顧問服務的工作,而約莫一年後,在暑假起我回到甲方,加入了野村投信(Nomura Asset Management),是一份 buy side 的實習工作。

我所屬的資訊科技部門(Information Technology),定位較為特殊,並不直接面向終端客戶,而是以公司內部單位(user)為對象,提供軟體開發、系統維護、數據處理等服務,主要用到的程式語言是 C#,在部門裡也會接觸到大量的 .NET 開發框架。

在 IT 部門,某些面向的工作與管顧異曲同工,例如在評估 user 具體的軟體需求時需要做需求訪談,衡量科技工具導入時要做 research、並對現有案例進行 case study,不過在這裡,想多談的兩份經歷裡的甲乙方差異。

這次在甲方的經驗中,多了很多細節上的雕琢,原因在於終究我們開發出來的軟體系統,要經過 SIT、UAT 等測試,而後上到 Production 環境,一旦有任何細節出錯,無論是再邊界的測試案例,也只能埋首 debug,把工作做到盡善盡美;相對而言,乙方顧問多數時候是劃出一頁頁的策略建議,即便有些不如意的枝微末節,也能藉由換一種敘事方式來解決,某種程度上乙方顧問像是往一池靜水丟下一粒石子,波紋泛起後便轉身離去,在不斷迭代之下工作的挑戰性高,溝通、合作等軟實力也相對更加放大。

過去在乙方顧問公司,彼此之間的分工相對界線模糊了些,或許更像是一群通才聚集在一起工作,而在金融業甲方則有各式分工單位,尤其 buy side 的投信更有前後台之分,在組織架構上與乙方管顧迥異;另一方面,乙方的工時長,在下班後總會看到主管持續留在座位上埋首敲著鍵盤、拉著簡報,而這次在甲方則晚上七點左右辦公室便熄燈謝幕。

在甲方,有時會需要乙方的 consulting 外,在 IT 部門我們常需要引入技術型的 vendor,歸根結柢,無論是乙方顧問、或是乙方技術團隊,乙方能做的事甲方未必不能做,但透過外包方式提高效益,很多時候能走向雙贏局面。舉例來說,在部門裡許多內部系統選擇外包,若團隊真心想做其實並無不可,然而當下並不符成本效益,因此便找上了提供技術服務的乙方企業。

總歸來說,這次在甲方的經歷相當踏實,見證了一份專案由策劃到落地的完整週期,不若在乙方時,將專案工作交付完成後,有時並不能窺知究竟自己創造了多少價值。在實習中我負責的是一份內部的軟體開發專案,很幸運的有很大的發揮空間,過程中幾乎獨自經手專案的所有內容,也利用機會學了 C#、以及嘗試了 ASP.NET Core、Windows Presentation Foundation(WPF)等框架,在大量閱讀內部 source code 的過程中尤其對於 code style 有了新的理解。特別感謝同事 Steven、Peter、以及主管 Jason、Andy、Pat,整體來說在 Nomura 的經驗相當愉快。

十月上旬我離開了 Nomura,下一份工作是在甲乙方混合的 Microsoft 做乙方服務。

走過乙方顧問、甲方金融業後,軟體業確實是我在短期職涯希望投入的領域,而這次面試 Microsoft 的過程首次遭遇了白板題(whiteboard coding interview),是相當特別的經驗。

白板題之於軟體工程面試而言,地位相當特殊,可對標管理顧問的 case interview,是求職上必不可少的環節。不過兩者的區別之一,在於白板題一人便可以刷題準備,透過網路上的 Leetcode 等資源可以在短時間內迅速密集成長;而 case interview 雖然也未必不能在短時間內快速提升,但通常需要由面試者組成類似讀書會的小組,透過互相模擬、演練來進行準備,而除了讀 case in point 等典籍外,實作資源相對較為稀缺。

五月在美國時,San Antonio 機場前往 LA 的幾個小時等待時間,是我第一次練習 Leetcode,隨後也就在二週後迎來第一次的正式白板題。那是 Microsoft 的第三輪面試,去美國前幾天面了二面、在美期間接到三面通知,而截至那次面試為止,大約練了三十題左右。

面試當天由 behavioral questions 先行,接著是技術問題,白板題則壓後,最後拿到的是一個 array 題目,難度大約是 Leetcode easy。我首先試著與面試官 align 目標,確定題目需求及規範,接著很快的想到了 sorting 的解法,由於我使用 C++ 刷題、準備面試,因此在完成後向面試官講解這是時間複雜度 O(nlogn)、空間複雜度 O(1) 的作法,面試官表示認可,不過她隨後表示這一題或許還有更快的作法,能將時間複雜度再降低,讓我想到的話可以補充。

我當時未再想到進一步的方法壓縮時間複雜度,而在面試結束後,我很快的就在 Leetcode 上找到相同題目,對照下 sorting 做法果然在列,是一個標準答案。而解答同時也列出了另一個使用 unordered map 的 hashing 作法,時間複雜度可以降為 O(n),不過在彼時我還未熟悉 unordered map,較為可惜。

整體來說這次的白板題經驗相當友善,在刷題路上我想還有很長一段路能走,可惜在暑假結束後重新投入學校課務,在刷了約一百題左右後,目前比較沒有時間延續了。


最後想談回甲乙方的綜橫交錯,當今 AI 急速成長,若終有一日生產力提升,成本下降,甲乙方是否還會是天各一方,又或者將渾然成為一體?我認為終究在這當下提供純技術服務的乙方 vendor 會先成為遲暮,因這類型的服務只解決技術問題,而技術問題在未來的門檻將會不斷走低。

在李宏毅老師的「生成式人工智慧導論」課堂中,我們用免費運算資源操作的課堂作業模型,一共有七十億個參數,然而,在五年前的二零一九年,當時 OpenAI 發布的史上最大模型有幾個參數?答案是十五億個,這可以說相當驚人,意即 AI 的成長是指數型的,今天隨便的課堂作業,穿越回恍如昨日的五年前,都會是毀天滅地的黑科技發明。

而 AI 的成長速度也許更遠超我們的想像所企及,不僅是科技上的技術力能由 AI 掌握,更現實面的是許多推崇專業知識的領域也許將有黑船來航的震撼。到頭來,培養一個頂尖的商學院學生考取 CPA,也許要一整年,然而,用 RAG 打造一個能通過考試的 GenAI 模型也許不需要一週時間,終有一天 AI 將能達到司馬遷所稱「究天人之際、通古今之變」的境界。

然而在這風口浪尖上,依然會有科技巨頭公司掌握關鍵影響力,對外輸出強大的技術賦能,而在這之外,我認為管理顧問的服務雖說為乙方,但其解方並不限於有形之產品、服務,更多時候是無形的 soft skill、甚至是 people skill,仍有機會生生不息,畢竟自工業革命以來,科技革新的成長不在話下,但無從根除的終究是人與人之間的議題,亙古也無從改變。

不過仍難以視而不見的是現在 Copilot 可以拉出一頁頁的簡報投影片、LLM 短短幾年如今已然能快速上網搜尋資料,機器學習的能力以難以估量的速度飆漲,求新求變依然是無可規避的議題之一。

我認為或許終有一天,不只是乙方顧問,甚至甲方也難逃威脅,這歸於生產力的本質,一旦機器有機會取代所有生產工作,一切物質將變得輕蔑,所有追求歸一於心靈層面。難以斷言人類文明何時將走到那一步,但在那一天到來前,盡力豐富精神、提升文化,或許是在人工智能泛漲下我們永久且獨特的價值。



Nomura Taipei Office