軟體工程師的修煉與成長 (4) — Product vs Infrastructure

vgod's blog
Feb 27, 2022

--

做產品的日子

新手工程師要選哪個領域開始一直是個萬年問題。前端還是後端?web還是mobile?產品還是基礎建設?

我一開始進D社有很大一部分的原因是有可以做一個全新產品的機會。在產品還沒成形前,還有很多創新和嘗試的空間。所以,剛開始時我算是個產品工程師,web的前後端都做。

做產品的好處是離使用者很近,在產品上做的改變可以馬上被看到,對使用者的影響很直接。但我也不想只做前端,因為在公司裡做產品,前端的使用者流程和體驗大部分都有專門的設計師在負責。他們有更多時間可以好好思考和琢磨使用者體驗,前端工程師雖然也可以提點子和想法,但比起專業度的確還是不如設計師。

於是我當時就這樣前後端都做,要做新功能時我可以只靠自己一個人就把整個功能交出去。雖然這樣可以做得很快,但我也因此少了很多跟別人合作的機會。當時我和我的manager都沒有察覺這是個問題,所以我就一直這樣持續了好一段時間。但現在想想,這雖然得到了短期的效率,可是卻犧牲了促進團隊知識分享和交流的機會。

現在我在團隊裡有新人加入時,都要特別小心,不要讓他們自己變成一個silo,只做自己的事卻不跟別人溝通合作。尤其是L3或L4的人,如果都沒有跟別人合作,會少掉很多成長的機會,也會跟團隊失去連結,最後很容易就會失去信心或熱情而離開。

就這樣做了一年後,雖然我東做西做了很多東西,但卻都不是多重要的部分。團隊中比較資深的人,都可以很容易看得出來他們對系統的一大部分都有很強的ownership。簡單的說,如果有人對某個系統有問題,馬上就會想到那個人 (go-to person)。

這種ownership以及變成某個領域的go-to person是需要花時間培養和建立名聲的。我在第一年做得太雜,雖然做了一些自己覺得有趣的專案,但我做的東西跟別人的交集太少,沒有什麼在底層或是核心的組件是可以被別人重複使用的。這讓我很難在別人有問題時幫助他們,別人有問題時也不太會想到我。

Technical Leverage

在好幾年後,我才了解我當初缺少的是「technical leverage」,也就是一個工程師有多容易可以透過技術能力產生影響力。簡單說,如果你寫的程式被越多工程師使用,你的technical leverage就越大,你就越容易透過好的設計或實作讓其他工程師變得更有效率或是做一些他們本來做不到的事。

在一個產品或系統中,通常越上層的部分就有越多的商業邏輯和特定的目的,像是實現特定的產品功能或使用者介面。這部分是很難重複使用的,需要工程師和設計師一個一個的設計和實作出來。但如果往下走,越下層就越會一般化,可以被多個不同的上層功能重複使用。

--

--