Website logo

Robert Chang

技術部落格

轉職軟體工程師,並生存了兩年之後

從 ASTRO Camp 畢業已經有 2 年半左右的時間,正式成為軟體工程師也有 2 年的時間了,從生存一年到兩年之間,工作上轉換到一個完全的外商公司,溝通上完全使用英文,並且搭配大家都夢寐以求的全遠端工作模式,不僅同時考驗了語言能力也挑戰了自己的自制力。

技術上倒是沒有不同,使用的一樣是 Ruby on Rails,也是最一開始在 ASTRO Camp 學習到的技術!

至於為什麼要使用『 生存 』這兩個字呢?對我來說,轉職後才是挑戰的開始,如何在軟體業中『 生存 』下去,是我一直在思考的事情。

上次工作一年的分享 後,兩年級生的我遇到了什麼樣具體的挑戰以及腦海中出現了什麼樣新的想法呢?

重新定位基礎能力

換了一份工作後,我就再次感到能力的不足。

我已經在 ASTRO Camp 裡面學了 SQL,也理解了現代網頁是如何運作的,為什麼還會感到能力不足呢?

答案是,隨著專案規模地不斷擴大,問題將從教科書以及 YouTube 上的 Tutorial 漸漸地消失,你沒辦法再利用 Google 簡單地搜尋到解決方案。

那還不簡單,chatGPT 有什麼做不到的事情嗎?

chatGPT 確實可以回答大部分遇到的問題,但如果連剖析問題的來源都不知道呢?這時候就會回想到五倍學院創辦人,同時也是我們的課堂講師 - 龍哥最常說的一句話:『 你不知道你不知道的事情 』。

如何解決呢?把視野回歸到事務發生的本質,最有可能在什麼環節出現問題?我應該要使用什麼樣的關鍵字來問 chatGPT 才能快速地解決問題?

我們必須回到知識的基礎面上,SQL 是如何運作的?Index 所帶來的影響是什麼?如何利用 Redis 實作背景工作的 debounce 的機制?太多太多的問題族繁不及備載,而通過解決這些問題,並理解這些基礎的知識,可以快速地幫助你定位問題。

所以在工作了兩年後,我沒有急著跟隨 AI 的浪潮,我還是默默地閱讀 MySQL 的原理以及文件,還在學習怎麼使用 ElasticSearch 來解決工作上遇到的問題,更深入地理解 Redis 的運作;這些技術或許看起來不夠新潮,但卻是解決實際問題的堅實基礎。

從『 問題 』來學習,而不是為了學習而學習

在不斷強化基礎的同時,我也體會到了以問題為導向的學習方法的重要性。

我認知到一件事情,就是不需要再為了追逐潮流而學習,而是要從『 問題 』來學習才會更加地深刻。

我感受到自己進步的幾個領域,都是因為實際的解決問題。

例如,我學習 Docker 是為了部署公司的專案,學習 CI/CD 是為了提升專案開發的流暢度,學習 RSpec 是為了能夠在專案中寫出正確的測試,學習 ElasticSearch 是為了解決 MySQL 沒辦法承受的搜尋壓力。

這幾個領域的技能都不是因為我突然想要學而去學的,而是當我面臨到問題降臨時,我才真正的踏入並學習這些技能,而且都是非常深刻的,沒辦法忘記的能力。

如何製造問題?

但並不是所有的人都很幸運地向我一樣可以遇到這些問題,並且從中學習,所以我們可以學著替自己製造問題,怎麼做呢?

開始製作 Side Project,這是一個陳腔濫調的議題,但讓我舉例來說。

我為了搭建部落格,就嘗試過了 Hugo,Astro 兩種不同的框架,而且我刻意不使用我熟悉的 Ruby on Rails,為什麼呢?因為這樣可以讓我遇到更多的問題。

在這個搭建的過程中,我可以看到 Hugo 是如何用 Golang 來建立出 HTML 的檔案,以及 Astro 是如何絲滑地混合 React 以及 Vue 這些主流的前端框架,這就替我自己製造了很多的『 問題 』

接著從搭建部落格這件事,馬上就可以延伸出更多地問題,要如何部署?選擇一條困難一點的路!不要嘗試使用像是 Vercel 這樣方便好用的平台,他讓你少學太多的東西了,試著自己租一台虛擬機器,並且部署自己的網站,這樣馬上就又擁有了很多的問題,如何把程式碼傳送到虛擬機器中?想要用 Docker 部署該怎麼做?

Side Project 是一個很常被提出來的作法,但實際上要怎麼做卻說得很少,可以總結一句話就是『 走最難的路,因為你沒有任何可以失去的成本 』。

結語

我也想告訴很多想轉職成為軟體工程師的人,這個產業的變化以及更迭是無窮無盡而且非常快速的,你會被很多新的名詞給誘惑,會因為很多新的技術出現而感到焦慮。

你要做得第一件事情就是替自己想做的事情設立目標,以上方內容為例,搭建自己的部落格就是一個最終的目標。

同時這個目標本身就會替你帶來很多的問題,如何部署?如何上傳圖片?如何進行快取?

接著透過解決問題的過程,你會感到挫折,你會很痛苦,但這就像是重訓一樣,你在替自己的腦袋建立更多的連結和資訊。

為了什麼呢?在將來出現相似的問題時,你可以快速地透過理解上下文來找到可能的問題點,最終才交給 chatGPT 或是 StackOverflow 這樣的工具或是討論區,更甚者可以略過這些工具,直指問題的核心,那才會是在 AI 時代最帥的樣子啊!

上一篇文章Elasticsearch - 學習地圖