【學長姐帶路】軟體工程師的核心價值是什麼?
原標《2024 年軟體工程師的價值是什麼?會不會被 AI 取代?》
文/Judy Tsai
今年很榮幸有機會參與曼陀號計畫並加入 Engineering 組,從海選時就感受到這裡匯聚了很多優秀的人,雖然很多人都謙稱自己還有點迷惘,但其實都對於生涯規劃很有想法,也樂於學習新知、參與社群,感覺在這個群體裡能激盪出很多火花、觀點與可能性。
⛴️ 曼陀號計畫簡介:
所有人員皆以志工形式參與,為期約六個月,邀請各領域知名專家擔任小組船長 (Mentor),分組舉行實體聚會。透過船長的專業分享與經驗傳承,幫助水手 (Mentee) 縮短摸索的成本,突破職涯上的瓶頸與挑戰,成為科技領袖人才。
感謝 Jalex 確診仍抱病分享!
終於來到引頸期盼的第一次月會,主題是《什麼是軟體工程師?價值為何?未來在哪?》。
今年 10 月我就擔任軟體工程師滿三年了,但坦白說,在這次月會之前,這些根本不是我在想的問題。
什麼是軟體工程師的核心價值?
轉職的這一路走來,我的眼光和思維都聚焦在眼前這座大山,總想著如何轉職成功?如何提升自己的知識技能以匹配我的 job description?如何從冒牌者症候群中自我調適?如何才能成為更進階的工程師?好似總想著如何爬得更高,卻忘了抬頭看上面到底是怎樣的天空?山的另一頭又潛藏著什麼樣的挑戰與風景?
軟體工程師的價值是什麼?原本想說大概就是「用軟體解決問題」吧!如今透過 Jalex 的觀點,進一步完整了我對這個議題的認知。他認為軟體工程師擔任的角色是要判斷問題能否被解決 (feasibility) 及如何解決 (solution),並當責 (accountable),而價值分為兩個面向,一是解決問題,為公司帶來收益、二是說服他人問題無解,進而為公司減低風險與成本。
我覺得「說服他人問題無解」似乎是比較容易被忽略的價值,通常想像中厲害的工程師就是不管再難的問題都辦得到,像電影裡面的天才工程師,一個需求進來,咻咻咻就寫出厲害的程式,拯救全世界。但如果工程師總是所有需求照單全收,那會不會有點像工具人了?如果公司招募一位工程師只是要寫 code,其實近年已經發展出許多不需任何程式碼也能達成目的的服務和工具,若真要寫程式,當今的 ChatGPT 也能幫上不少忙。
Jalex 引用了這句令我印象十分深刻的話:
Never be eager to say no. But also, never be afraid to say no. You see, you were hired for your ability to say no. Anybody can say yes. But only people with skill and knowledge know when and how to say no.
– Chapter 14. Teamwork, Clean Craftsmanship: Disciplines, Standards, and Ethics, Robert C.
比起 say yes,say no 所需具備的背景知識、能力、眼界門檻是更高的,你需要同時具備 domain knowledge、熟悉公司 business logic、了解哪些是 spec 不能動、哪些東西不能說改就改、說刪就刪、哪些又是可以彈性調整……,全盤考量掌握這個問題與潛在解決方案帶來的影響面向、範圍、程度、是否有 edge case 或是 side effect 需要評估?除了單純會寫程式,更是那些專業知識、經驗、洞見讓你有能力評估風險並且 say no,能為公司省下大量成本與風險,也是邁向資深工程師的其中一個重要軟實力。
say no 很像是某種特權,因為你夠專業、考量的夠周到,所以人們信賴你,但同時你也需要為結果當責。好好回答一件事情可不可以做,是軟體工程師的價值——說到這裡,有沒有發現其實不只需要會寫程式?
「為此,我們必須技術、溝通力兼具。」 — — Jalex
什麼是軟體工程師的影響力?
「影響力」一直是我比較不擅長的思考方向,常常忽略自己做的事情究竟帶來哪些影響,因此月會中 Jalex 對於這方面的分享對我來說是個新的思考起點,他描述到三個面向:
工程面
- 以身作則的能力
不是成為了資深工程師、職級提升之後就雙手一攤,變成只出一張嘴,而是要 lead by example,透過親身示範,為團隊成員樹立標準,讓自己成為他們的榜樣(role model)。唯有接地氣、了解任務細節,才能贏得夥伴的尊重,成為有影響力的領導者。
- 突破未知的能力
沒有人能夠通曉萬事,總會遇到陌生問題。優秀的軟體工程師懂得在困境中剖析問題、不排斥學習新知,在必要時跨出舒適圈嘗試新的解決方案,甚至能進一步為團隊夥伴帶來啟發,激發更多可能性。
- 槓桿時間的能力
意指所開發的內容,不只是為了交付當下的需求、解決眼前看到的問題,而是尋求長遠的影響,對於技術、產品甚至整間公司帶來長期的益處。
Jalex 建議我們可以常常去思考:有什麼事情是我們離開後,還能持續為夥伴、公司帶來價值?也許是建立一個 CI/CD 流程、也許是模組化程式碼,盡可能做一些能帶來長期好處的事,對於自己和公司都有幫助。
這個概念源自 Amazon 這句話:
“Deliver Results” is a low bar for a Principal Engineer. Without seeking the spotlight, Principal Engineers make a lasting impact that echoes through the technology, the product, and the company.
– Principal Engineering Community Tenets, Amazon
產品面
Jalex 引用了 Double Diamond 模型來說明軟體工程師在產品面的影響力,圖中上方的四個階段由左到右分別可以解釋成產品發想(Discover)、需求收斂(Define)、系統設計(Develop)、開發交付(Deliver),剛好是一個產品誕生的時間軸。
而 Junior 和 Senior 工程師的影響力順序恰好反過來,越 Junior 的工程師越貼近開發交付,然後漸漸往系統設計、需求收斂靠攏,從貼近產品(Solution),到貼近產品在解決的問題(Problem)本身。
我認為這一段可以理解成:要越來越懂 PM 在想什麼。
因為 PM 對於程式碼的實作細節通常不太熟(也不太需要),恰好提供工程師換位思考的機會,可以常常練習在與 PM 對話時觀察、體會對方關注的重點是什麼,有助於工程師理解這個產品為什麼會誕生、為何這樣設計、解決哪些痛點、使用者是誰等等,一旦對這些圖中左半邊的事情熟悉了,其實無形中也會幫助到右半邊的系統設計與開發交付,至少就不會寫出違背產品邏輯的程式碼。
再者,也許你也不一定想一輩子都當工程師,平時多培養產品思維,有助於思考更全面,實現更多可能性,未來一定派得上用場。
組織面
「現代軟體公司的核心是人。擁有足夠數量的人才,公司才能用較低的成本槓桿未來」Jalex 說。既然「人」是如此重要,讓好人才加入、避免好人才離開就成為重要的議題;能對重要議題有貢獻,就是發揮影響力了。
對於組織(公司)而言,軟體工程師影響力可以透過 Technical Branding 來體現,又可以分為外部和內部:
- 吸引外部人才
提升組織形象,吸引人才對組織的關注,甚至加入組織。這裡我問 Jalex 工程師是否需要經營自己在網路上的形象,例如寫技術文章、經營部落格、參與社群活動?他的回答是肯定的。他認為這些對於公司來說有幫助,影響力越大、公司也越容易被看見,是職涯到了一個階段後無法不做的事情。
- 留住內部人才
最有效的方式就是 mentorship,或是營造一個分享技術的團隊文化,不斷為團隊注入新知、帶下新方向,確保成員一直有成長、一直知道自己在做什麼。讓人才變強,團隊就變強;留在公司裡還能夠一直變強,想離開的機會就降低了。
我的三個觀點
身邊認識的資深工程師還很少,這是我第一次有機會近距離聽到 Staff Engineer 分享,還能及時發問互動,真的是很寶貴,也很感謝曼陀號舉辦了如此有意義的月會。
期待接下來的活動之外,我也來分享幾個自己的觀點做結:
一、遊戲化思維,是不畏懼改變的關鍵
價值是動態變化的。以前有價值的事情,現在的價值可能已不如以往,相對的,現在的價值也很可能是幾年前尚未誕生或意想不到的,唯一不變的事情就是世界一直在變,也許這就是活在這世上有趣之處,如果都沒有創新,生活應該會變得很枯燥乏味吧。
既然如此,何必焦慮呢?與其讓必定發生的改變影響心情,不如著眼於「如何讓自己跟得上這些變化」,保持開放的心胸、持續學習的心態、接觸不同的人群,這些之所以成為老生常談,也許就是因為很容易被忘記,可以每隔一陣子都去檢視自己是否仍然在各種面向接觸新知。
如果你說「我也知道要持續學習呀!但好怕自己的學習能力跟不上時代改變」,不如想想十年前智慧型手機剛開始發展時,你有在擔心自己學不會使用智慧型手機嗎?還不是玩憤怒鳥、水果忍者玩得很開心(不小心把自己做過的事說出來)?現在還不是用得好好的?
假如隨著年紀漸長,學習能力將不如以往是你的擔憂,那我覺得你可以想想過去自己是怎麼「玩手機」玩到熟悉的、再看看現在那些手機用得很好的長輩們為什麼能夠無痛適應(對他們而言的)新科技,其實會發現一個共通點,就是「玩玩看」的心態!
手機用得好的長輩傾向覺得「雖然不知道這按鈕是什麼,反正按按看也不會爆炸」就自然地從結果中學習;十年前的年輕人,也是從「試試看這玩意有什麼功能、能帶給我什麼好處」的心態出發。當今的 AI 就彷彿十年前的智慧型手機,而未來也必定會有層出不窮的新科技發表,我認為只要始終保持著遊戲化的思維,就不需畏懼改變。
二、會被淘汰的是技能,而非職業
根據我個人的觀察和淺見,技能會隨科技進步而被淘汰,例如在文件需要手寫的年代,文書處理需要的技能可能是寫出工整字跡、能快速寫出大量字數,但到了現在需要手寫文件的工作已經很稀少,因為 Word 等等文書處理軟體問世,「使用電子文書處理工具」這項技能就取代了(或者說漸漸淘汰)原本手寫文書的技能。
但職業卻不那麼容易被淘汰,因為職業始於人類需求,而需求通常不太會減少,反而是越來越膨脹(By the way 社會學有個文化工業理論在討論人的需求是如何被刻意塑造,蠻有意思的)。沿用同個例子來說,自古至今「用文字記錄事情」都是不變的需求,從古埃及就有抄書吏這種官位,相信不用我多做舉例。
因此,我認為不太需要擔心自己的職業是否會消失:
一,即便會,可能也沒有辦法消失得這麼快,畢竟一個職業的誕生與消失是整個社會共同在承擔實驗的風險,說不定在你有生之年都不會發生。
二,這可能是個假議題,真正要讓人上緊發條的是如何跟上這世代所需要的技能。
三,看準自己職業本質上滿足了人類的哪種需要?假如那種需要不會消失,那麼你的工作也將會保持一定程度的價值。
三、保有提出解決方案的能力,就不容易被淘汰
承接上一點,如果你認為人生是場有限賽局,那麼你的人生目標就會專注於如何贏得比賽,會令得失心變得很重、隨時深怕自己輸給別人而活在比較之中,活得非常辛苦。
相反地,如果你看待人生是無限賽局,沒有輸贏,那焦點就會變成如何享受比賽,甚至戳戳看各種遊戲規則會發生什麼事。這概念讓我相信無論世代如何變遷,始終要去思考「如何讓自己留在這場比賽」,只要總是有屬於自己的答案,基本上就不用太擔心自己會被機器取代。
AI 只是工具,如果人在做的事會被工具取代,那代表人要去做更有價值的事,找到那個價值在哪裡,就是留在賽局的方法。價值的具體實現,就是為問題提出解決方案。
AI 的發明,當初也是某人想出的解決方案。你和我也可以這麼做:找到一個自己有熱情的領域、再找出一個迫切想解決的問題、想出一個解決方案,就成了屬於自己的創業題目。
※本文由 Judy Tsai 授權轉載, 原文:《2024 年軟體工程師的價值是什麼?會不會被 AI 取代?》
瀏覽 382 次