Debug
當我剛開始接觸 Visual Studio 開發時,面對錯誤常常感到不知所 措,尤其當程式執行結果不如預期或資料無法正確查詢時,往往不知從何下手。隨著實作經驗累積,我開始學會使用偵錯工具,像是設定中斷點逐步執行程式,讓我能在程式運行過程中即時觀察變數的值與邏輯流程,逐步釐清問題原因。我也養成了將 SQL語法貼到資料庫管理工具中先行測試的習慣,確認語法正確並能成功查出資料,再回到程式中進行修正。這樣的步驟能有效降低盲目修改程式的情況。當我遇到看得懂錯誤訊息,卻還是不知道如何解決的情況時,我會主動請教前輩。他們會教我如何根據錯誤訊息設置正確的中斷點、驗證參數與流程,甚至指導我如何查詢資料、比對結果。透過與他們的交流,我不僅學到解法,更學到思考邏輯與除錯的技巧,這讓我在開發過程中逐漸建立起信心與獨立解決問題的能力。
GIT
當我實際操作 Git 時,不只是學到它的用途,更熟悉了整個版本控制的實際流程與操作步驟。從最基本的 pull 下載最新的程式碼開始,我會根據 SR 編號建立新的分支,並在這個分支下進行開發。每完成一段功能後,就使用 commit 記錄修改內容,這些紀錄不僅清楚標示了修改者、時間與說明,還可以透過 compare 功能查看每次變更的細節,幫助我掌握不同版本之間的差異。
在開發結束後,我會 checkout 切換至 QAS 分支,確保先拉取最新版本,接著將我的開發分支 merge 進來,進行測試與整合。這個過程讓我實際體會到 Git 如何協助我們清楚掌握每次修改,並在多人協作時有效整合彼此的程式碼。特別是 compare 功能,讓我能清楚看到每次調整哪些欄位、改動了哪些邏輯,讓除錯和審查程式碼變得更加容易。透過這些實作,我不只是學會使用 Git,更真正理解它如何在開發流程中發揮關鍵作用。
SQL
剛開始接觸 SQL 時,我對資料庫操作相當陌生,連基本的 SELECT 和 WHERE 語法都不太熟悉,常常出現錯誤卻不知道問題出在哪裡。後來透過學姊提供的教學檔案與練習題,我逐漸從「照著寫」變成「理解為什麼這樣寫」,並開始能依據資料需求思考適當的查詢方式。公司使用的是 Oracle 資料庫,與學校學過的 SQL Server 在語法上有些差異,例如 Oracle 使用SYSDATE 而非 GETDATE() 來取得目前時間,這些細節一開始讓我有些不習慣,但也因此加強了我比對語法、閱讀錯誤訊息與查找解法的能力。在實作中,我學到許多實用的查詢技巧,像是使用 DISTINCT 避免重複資料、透過 ORDER BY 排序便於觀察,並且盡量讓資料庫先進行運算與篩選像是使用SUM()、COUNT()、CASE WHEN 等,以提升查詢效率。當需要整合多張資料表時,我也學會了運用JOIN來取得正確資料。此外,也熟悉了 UNION 的用法,能夠整合多筆查詢結果,強化了我整體的資料處理能力。
ETL
在學習 ETL 的過程中會處理大量資料,並且需要撰寫複雜的轉換邏輯來確保資料正確且符合需求。ETL 程式通常包含幾個重要的部分:首先是版本描述,讓後續工程師能清楚知道程式的修改歷史;接著是變數宣告,這些變數會用來控制流程或儲存中間結果。Cursor 用於定義資料集,方便逐筆處理資料,而 Begin 和 End 則是用來控制程式開始與結束時的狀態判斷,確保流程正常進行。Exception 處理則是捕捉錯誤,記錄錯誤訊息,並根據情況決定是否停止 ETL 或繼續執行。最後是 Main SQL,負責真正的資料查詢與處理邏輯。
在接觸 ETL 時,因為不熟悉整體架構及寫法,一開始非常沒有頭緒。為了更了解,我花了很多時間去看其他現有的程式碼,逐行對照分析每段語法的作用,並思考它應該放在哪個位置、如何命名變數比較合理。透過不斷模仿和練習,我逐步理解 ETL 的流程和撰寫技巧,這是我在運用 Oracle時覺得最困難的部分。
Crystal Report
一開始我從一個 Crystal Report 的樣板檔開始熟悉整個報表系統,透過這個樣板檔,慢慢熟悉報表的基本欄位配置、格式設定和資料來源的關聯,學會怎麼拖拉欄位到報表區域,例如把客戶名稱、出貨單號、產品型號等欄位放到適合的位置來顯示每一筆資料。
後來,我實際操作,從Crystal Report 的基本功能以及介面開始,從正式環境把資料抓出來,插入到測試環境做驗證,我透過閱讀程式碼了解到,報表所使用的樣板檔並不是固定的,而是會根據使用者輸入的 DN(出貨單號)去判斷要套用哪一個樣板。舉例來說,程式會根據 DN 去查詢 SA_FILE_CONTRAST 這張資料表,裡面有不同的 SEQUENCE_NO(像是 1000、2000、3000 或 4000),系統會根據這些條件,自動選擇相對應的報表樣板,然後印出不同格式的報表。這讓我明白報表並不是單純印資料,而是結合條件判斷、動態選擇樣板,再去套印資料的過程。
另外,我還學習到報表列印的狀態會被系統紀錄在 T_PRINT_RECORD 表中,從剛開始的「N(列印中)」狀態,到最後印成功「C」或失敗「F」,讓系統能夠即時追蹤列印進度,方便做錯誤排查和後續管理。在程式碼層面,例如 CheckFileName 這個函式會根據報表類型(SA、PK、PI)決定要用哪個路徑和檔名,幫助我理解報表檔案是怎麼命名和管理的。除此之外,當遇到錯誤時,我還能從錯誤代碼和訊息中分析問題的原因,這讓我對整個報表生成與列印流程有更完整的理解。
文件整理(UT)
實際參與專案開發後,體會到「整理與紀錄」的重要性,很多程式碼當下改過的地方雖然記得,但過一週就會忘記,如果沒有即時整理與記錄,等到上線或寫UT文件時就會手忙腳亂。在團隊合作的情境下,前輩提醒我,專案開發的資料是要上線的,所以從一開始就要建立良好的習慣,像是把資料夾分類清楚、命名規則統一,並整理到共享磁碟上,方便所有人查閱與使用。在 撰寫程式碼的同時,也要隨手記錄修改過的地方,包含調整了哪些檔案、建立哪些資料表欄位或 SQL 語法,這些紀錄在日後寫 UT 文件或進行上線作業時非常重要,能大幅減少遺漏與錯誤。此外,在寫 UT 文件時,我會用紅色框框標示出重點修改區域,搭配圖片與說明,讓使用者一眼就能看懂修改的內容和目的。
主動提問
剛開始進行基礎網頁練習時,我就馬上遇到困難,雖然題目看起來很簡單,但實際操作時卻一直卡在同一個地方。我花了很多時間嘗試自己解決問題,卻始終沒有頭緒,以我的個性,其實不太喜歡麻煩別人,所以會先上網查資料自己摸索,但當下真的怎麼看都看不懂,於是鼓起勇氣向前輩請教,沒想到對方不但願意協助,還教我很多以前沒接觸過的做法與思考方式,讓我意識到,與其獨自卡關、浪費時間,不如適時請教他人,反而能加快學習進度。之後遇到問題,我還是會先自己思考和嘗試,若真的無法解決,會先把問題整理清楚再一次詢問,這樣不僅能減少對別人的打擾,也能讓彼此的討論更有效率。