成為 Software Engineer 半年後的小回顧 — 我遇到的困難與反思

依然是自己很愛的 City Pop 風格

不知不覺間成為正職軟體工程師也過了半年了,按照以往的慣例,每隔一段時間就會想回顧一下這段時間自己心態的改變與成長,順便以文章的形式紀錄下來,希望可以與一些在相同階段或是有類似經歷的讀者產生共鳴。

老實說自己在成為全職軟體工程師的這段時間遇到了一些「煩惱」,不過這些問題可能會因為個人習慣與自己對職涯的規劃而異,對你來說也許根本不是煩惱也說不定,當然除了煩惱之外也有一些體悟,就繼續看下去吧!

什麼技術都想要會的過渡期 — 四不像

在蠻久以前我寫過一篇文章,內容是關於前端與後端該如何去選擇的一些個人看法。

Frontend ? Backend ? 如何做選擇?

簡單來說就是我會先 focus 在前端開發,但同時也會繼續學習後端相關技術,畢竟職涯很長,我認為不用過早侷限自己。

在現在的工作中,原本隸屬於前端團隊,但是後來剛好有一個蠻急的後端需求,主管也知道我對後端是有興趣的,所以我就得到了一個轉去寫後端的機會,目前大概一個月過去了,基本上都在用 Python 開發後端,這段時間完全沒再去碰前端。自己學習後端一年多終於有機會真實上戰場了,心中當然是興奮的,但這段時間下來也多了一個隱憂:「我的前端技術會不會因此慢慢退步?」另外因為我只是在這四個月暫時加入後端 team 協助開發,實質上還是隸屬於前端團隊,因此會議、討論基本上還是跟著前端夥伴一起,因為暫時脫離了前端開發,有時候會跟不太上夥伴的討論,自己在開發時遇到的問題似乎也不太適合與前端夥伴討論,導致自己有點「四不像」的狀況出現。

經過思考後我認為這只是一個過渡期,當各種技術都沒有到非常精通時,就會有這種顧此失彼的狀況發生。但是如果在未來自己的基礎與實力更扎實時,我認為就不用擔心有些技能會因為短時間內不常使用就嚴重下滑的狀況。(當然熟練度還是會有差啦!)

直到現在我仍堅信前端開發者是一定要具備後端開發甚至 DevOps 相關的技術與知識的,從技術的演進就可以慢慢發覺這樣的趨勢。未來的技術會變得如何我們無法預測,但只要做好足夠的準備就不必害怕未知的挑戰。

實力無法對應名氣,困擾於技術圈的大神文化

首先要先強調這邊並不是要自誇!

首先要先強調這邊並不是要自誇!

首先要先強調這邊並不是要自誇!

透過撰寫技術文章,比如說 StarBugs 技術週刊或是 iT 邦幫忙鐵人賽,又或者像今年首次嘗試在 JSDC 這樣的開發者年會做技術分享,讓 Web 開發領域,尤其是前端圈越來越多人知道我,也漸漸有人成為定期關注我的讀者。

然而我會寫文章的初衷僅僅是因為喜歡分享而已。我想每個人在學習軟體開發的這條路上一定有參考他人文章來學習的經驗,自己很單純的覺得我應該也要成為那樣的人,讓其他人也可以因為自己的文章學習到一些知識,或是在學習的路程更快速掌握方向,少走一些冤忘路。

名聲的增長其實帶來了不小的壓力,可以常常聽到別人用「大神」、「老師」來稱呼自己,但我比任何人都清楚,我只是個剛出社會的菜鳥,在言語表達上也不是很在行,與人面對面溝通聊技術相關的事情時都沒辦法像透過文字撰寫這樣的輕鬆自在。我認為我只是比別人花更多時間在學習,並且比較擅長整理所學知識,僅此而已,任何人花跟我一樣的時間都可以做到一樣的事,這是我十分肯定的。

當自己清楚本身實力並不是像大多數人想的那樣強,卻一直被所謂「大神文化」環繞時,有一段時間還蠻困擾跟低落的,因為這跟自己想要的每個人平等交流的環境有點落差。尤其當自己身邊有數不清比自己還要厲害的人時,這樣的稱呼老實說成為了不小的壓力。

經過思考後我決定這陣子要自己閉關修煉一下,所以未來部落格可能會比較偏向撰寫一些工作或生活上的心得雜感為主,太聚焦於技術的文章就隨緣吧!

Coding 不是軟體工程師的全部

以前太 focus 在「coding」這項硬技能,直到真的成為軟體工程師,並加入一個完整的開發團隊後才發現要成為一個好的軟體工程師,還需要具備非常多的軟技能,例如說團隊溝通與協作的能力、對公司業務邏輯的了解…等等。以前總是只關注自己的 coding 能力或是電腦科學的基礎知識有沒有進步,現在我則同時去注意自己在軟實力上有沒有需要加強的地方,這也是我現在對於一個好的軟體工程師的一種新認知。

在工作上,因為公司是做金融保險科技,因此員工也需要對保險這個領域的專業智識與業務邏輯有一定程度的了解。我原本對於保險就沒有特別感興趣,加上保險是個超級複雜的系統,每天得面對一堆艱澀難懂的專有名詞,這對我來說是個相當大的挑戰,有時候在開發時會有種「我學了很多技術,但不懂業務邏輯,我根本不知道怎麼使用,或是沒辦法加入其他人的討論給予建議。」的感覺。這些經驗驗證了 coding 真的不是軟體工程師的全部,我們應該放一部分心力在提升自己的軟實力與相關產業的專業知識,才能最大化自己的價值。

Junior to senior

剛準備出社會前,我有個盲目的目標:「我在一年內要成長到 Senior Engineer 的程度。」,於是我瘋狂學習軟體開發相關的知識,不過在上面一個段落也提到了,要成為一個好的軟體工程師,除了硬實力以外,也需要具備許多軟實力,這個道理也同樣適用於從 Junior 過渡到 Senior 的過程。除此之外,Junior 工程師也很容易在接收到需求時,就盲目的開始開發,希望盡快把需求給完成,不過這樣缺乏通盤考慮的下場往往是寫了一堆未來不好擴充,不好維護的程式碼,在以後可能還是要其他工程師幫忙擦屁股做重構。

對,我就是上面所說的莽撞的 Junior 工程師。

我在這半年才感受到與資深開發者的差別,最大的差距不是寫 code 的能力(好啦,這也差很多 XDD),而是經過思考看透整體架構的能力,例如說做這個需求會不會影響到系統上的其他地方?哪種實作方式對目前架構來說最適合?對整體 codebase 影響?這些都是現在的我所欠缺的。

所以現在的我不會再給自己多久之後要成為 Senior 這種目標,畢竟 Junior Senior 這些 title 本就是客觀的,沒有一定的衡量標準。我認為重要的是心中要有個理想開發者的樣子,不斷往那個方向前進就對了。

太努力也會累,培養一些生活中的興趣吧!

在進入職場前,自由的時間很多,我平均每天大約花 5 個小時在學習上,然而開始工作後,每天只剩下下班後的一些零碎時間可以拿來利用,現在我還是盡量每天空出下班後的兩個小時拿來學習新知識與技術。不過這樣花大量時間在技術相關的事情上久了會有點疲勞,學習的動力與成果也會砍半。因此我也開始慢慢調整自己的生活步調,除了寫程式以外,也開發一些長期的興趣,例如健身、打球、看電影…等等。雖然碰技術的時間變少了,但我並不覺得自己進步的幅度有減少,畢竟活得快樂,做任何事才會快樂吧!

所以想變強真的不需要一股腦的埋頭苦幹,每天除了程式什麼也沒有,你必須做個權衡,慢慢來真的比較快!

真的好想出國

如題,真的好想出國工作 XDDDDDDDD,軟體工程師非常幸福的一點是在全球各地基本上都可以找得到工作機會,自己非常嚮往可以到海外工作,探索一些在台灣看不到的人事物。不過不確定什麼時候自己才算真的準備好(英文程度、與家人朋友分離…等各種因素),也許自己得再多做點功課並且好好下定決心吧!

結語

也許這是一篇有一點點負面的文章,但我認為負面情緒本就是進步的動力之一,認清自己的問題、認清自己的理想與現實的差距可以讓我們更快速導回正軌並繼續前進。

我非常慶幸自己在出社會半年後就遇到這些煩惱,自己也設立了一些改進的目標,接下來就等再過半年出社會滿一年後再看看自己有了哪些改變吧!

--

--