Dev Talks

心態,工程師的首要必修課

靳佳霓, 網站工程師 Jul 5, 2022

去年,我的人生出現了一個重要的改變。原以為是學習一項新技能,只不過這項技能難度與門檻之高,讓我陷入一段低潮,更改變了我的人生規劃。

大學就讀私立商管科系,畢業後依著興趣一股腦投入行銷業,工作確實有趣也非常喜歡,自認是一個平凡的上班族,但經過了幾年,有鑒於台灣的行銷環境與理想落差太大,左思右想好一段時間,正巧在工作上接觸到網站開發,對於建造網站的過程產生興趣,加上 Covid-19 疫情爆發,實實在在的推了我一把!於是去年離職後,花了些時間自學、查詢轉職資料、觀察產業發展⋯⋯,不過由於自己並非專業,加上相關領域朋友的建議,最終選擇加入 boot camp 學習網站開發技術,希望藉由專業老師的指導讓我能更有效率學習。

入職愉快?真正的考驗才剛開始

我在 camp 學習時間僅三個月,課程結束後,包含修改履歷、準備面試、自主練習的三個月,前前後後約莫花半年才找到轉職的第一份工作,也就是目前所在的五倍紅寶石軟體開發公司,擔任網站開發工程師。入職後公司會提供一份作業作為訓練教材,作業有一個很通俗的名稱:18銅人,但難度可是一點都不通俗,需求是打造出一個能讓多人使用的任務管理平台,開發時間約1個月。每個步驟會有一些條件限制和規範,除了考驗我對所學語言的熟悉度外,更有許多第一次接觸的框架與套件,必須在有限時間內研究並應用,同時熟悉公司的開發流程與工具。第一次感受到上課學習的內容要真正應用到實務上,有明顯的巨大落差外,包含如何解讀需求、設停損點求救、閱讀文件使用套件⋯⋯等,都讓我吃足苦頭,初期的不適應導致我每天懷疑自己是不是有資格成為工程師,日復一日的挫折也讓我沮喪。

所幸,五倍就像一個溫暖的大家庭,前輩們沒有因為我是菜鳥就棄我於不顧,反而是很有耐心地引導我,理解我卡關的部分,並引導我解決問題,這才讓我逐漸放下心中大石,適應工程師的工作模式。

舉我在過程中學習到比較重要的三點:

一、下手前先思考 model 之間的關聯,清楚 table 的設計,嘗試與 mentor 討論與確認

二、實作功能時一步一步設計與除錯,不要想著一次到位,反而把自己卡死在原地

三、卡關時先嘗試閱讀文件與 Google,若半小時後依舊沒有頭緒,就帶問題與嘗試過的結果大膽向前輩求助,畢竟新手非常容易搞錯方向,若沒有前輩提點,很容易就飄到外太空。

在有了以上寫程式的敏感度後,就可以遵照 DRY(Don't repeat yourself)和 COC (Convention Over Configuration)兩大 Rails 哲學,盡可能寫出簡潔的程式碼。

然而,最令我緊張的還有 Code Review 環節,每當我以為一切妥當,有把握的將 PR 推上去,Code Review 結果往往令我失望⋯⋯,舉我在專案中寫測試的例子,公司是以 RSpec 來寫測試,我在此之前並沒有寫過完整的測試,所以閱讀文件時就花了許多時間,更別說要寫出好測試。測試需要考慮的情況更廣,完整度要求又更高,所以在推 PR 前也是經過反覆的修改,但 Code Review 時還是被主管發現許多問題。在主管的引導下我從中修正許多觀念,並同步將程式碼改成易讀性與易用性更高的寫法。我也從一開始的 review 挫折,變成期待每次的 review,透過這樣的機制讓我能夠知道自己需要改善之處,這也正是開發中最有成就感的部分,即使現在自己能力有限,但能感受到每天都在進步。

心態調適決定成敗

我相信很多新手都遇過跟我一樣的情況,俗稱:「絕望沙漠」。不曉得自己能做什麼,多數人也會在這個階段放棄。這不禁讓我想起老師說的:「學習階段是最輕鬆的,工作後才是真正的考驗,能不能上岸更是關鍵。」,除了大量練習外,能做的就是堅持到底的意志力與決心。我想,既然已經撐過上課、面試,怎麼能在一開始就打退堂鼓呢?因此,我做了一些調適:

第一個是「寫筆記」。我將遇到問題或狀況的解決過程記錄下來,若有不清楚的部分利用下班或假日查詢。相信我,腦子沒有這麼厲害,三天後你可能就忘記當時是怎麼解決的。寫筆記除了可以幫助自己複習,也能延伸出相關內容或是優化出更好的做法,等前輩有空找他討論,通常都受益良多!

再來是「習慣挫折」。我指的不是遇到挫折就擺爛,而是接受自己目前的狀態,不要把卡關或是來回修改的過程看得太嚴重。我最常聽到前輩說的話就是:「不要緊張,你會這樣想很正常。」,前輩都接受你犯蠢,自己有什麼過不去?反而可以思考下一次可以怎麼做會更好。當然,如果此時有餘裕,可以直接動手改,身為一個工程師, 試試看就對了,不試永遠不會知道答案。

以前的我認為有熱忱,工作起來才能愉快,但現在我認為熱忱之外,還要有堅持到底的決心。即使再小的 bug 都要想辦法解決,這是身為工程師很重要的特質,也是展現專業的一部分。

善用資源,邊上班,邊學習

身為工程師,學習是沒有盡頭的。因為技術汰換的速度非常快速,持續進修是必須的。不過每間公司對工程師進修的重視程度不一,教育訓練的安排與規劃也不盡相同,目前就我所知,有公司定期舉辦讀書會、提供線上課程、技術研討會;而五倍則是提供線上學習資源,也有聘請講師授課讓工程師做進修,此外,我認為自主學習風氣也很重要,公司也鼓勵若有想要學習的內容可以建議公司納入進修的一部分。成為工程師後讓我深刻的體悟到,在這個產業完全不用擔心資源問題,而是擔心自己時間分配問題!如何在工作之餘還能進修將成為我首要學習課題。

現在的我大部分時間仍花在處理工作上交辦的任務,在工作與學習時間的分配上還在調整中。不過藉由實作 18 銅人,加深了我對於 Rails 框架、Ruby 套件的熟悉度,讓我適應公司的網站開發流程。即便實作時有很多的挫折,但這些都是成長必經的過程,經歷那段時間後我反而還想花時間將18銅人其餘部分完成!(18 銅人除了基本的24個步驟外,還有較難的特化版本,可能就需要一個月以上的時間來完成),挑戰自己。

即便到現在我仍舊戰戰兢兢,每天都在不斷的學習如何解決問題、優化寫法,海量吸收知識。比起多數人,我很幸運的是能在一個願意分享和交流的環境邊工作邊學習,期望未來的自己在此繼續成長茁壯。


分享