2023-03-31

學習掌握資料庫技能,解開你的軟體職涯封印

Unlock your skills.
Unlock your skills.
不知道準備入行或者已經是軟體工程師的你,有沒有感覺到這幾年軟體的工作類型、按照屬性或技能被分得越來越細了,以網站程式開發工作為例,現在還會特別區分所謂的前端、後端還是全端的工程師。在軟體設計的工作裡除了你熟悉的 coding 技能外,還有一塊非常重要經常被忽略,那就是處理資料存儲的部分。我們現在用的軟體功能都很複雜,為了有更好的使用者體驗,軟體設計師會在後台儲存有很多的設定資料並且紀錄軟體運作過程中的資料流數據,為了更好的記錄應用這些資訊,通常會搭配一個資料庫在程式裡面。雖然從軟體的 GUI (使用者軟體介面) 看不出來哪一種,不過關聯性資料庫的運作原理都是類似,架構上也被視為軟體設計的一部份。有資料庫的支持,軟體不管在運作效能、功能、使用者體驗等面向都會比沒資料庫搭配的軟體來的好「非常多」!當然啦,資料庫設計是專業的技能,如果你是待在比較大型的軟體團隊裡的話,就很有機會遇到專門負責資料庫設計的夥伴,簡稱資料庫設計師。

To Learn Or Not To Learn?
如果你是非本科系畢業的人或者想入行還沒工作經驗,可能就不一定會知道軟體工程師跟資料庫設計師是兩種不同類型的職業,你一定也能多少能感覺出來軟體與資料庫這是不同的領域對吧?那麼問題就來了,如果你的工作是軟體工程師,到底要不要學習資料庫呢?不過對於有心想要在軟體設計領域發展的人來說,或者更客觀的從未來工作發展來說,我要給你的建議是:
「對於想走軟體設計的你一定要學資料庫,越早越好,最好是從你入行的第一天就開始學」。

做中學最快
我記得剛入行的時候,要做線上教育網站,專案要求用 LAMP (Linux+Apache+MySQL+PHP)架構,這是我第一次碰到關聯性資料庫 MySQL。專案結束來到業界服務,開始負責維護系統與功能開發工作,因此大量接觸到不同類型的資料庫,學會了設計資料庫與調教資料庫效能,當時年紀小我都以為軟體工程師就是統包程式設計或資料庫設計所有工作,直到我到了下一家公司,才驚訝地發現我所屬的軟體團隊只有我會用資料庫!當時正在開發的軟體平台在儲存效能上遇到很大瓶頸,客戶的產品測試腳本跑完後,產品的測試資料根本無法正常儲存文件檔,一直打電話來客訴!重新 Review 設計架構,我提出用資料庫作為數據處理的解決方案,瞬間就完成了用戶數據存儲的需求,儲存在資料庫的產品測試數據,還可以根據客戶需求產生所需的報表格式。

如何從入門到進階
你說:「如果我想跟你一樣,要怎麼開始學呢?」如果你是聽我講才第一次知道資料庫的朋友,那我會建議你最好從書本開始,透過閱讀專業書籍會讓你取得完整且正確的知識框架,市面上雖然有各種類型的資料庫,但是他們的資料儲存的核心理念、SQL 操作語法都是相似的,一本通就萬本通,讀書絕對是很好的起步。如果你已經有程式基礎的人稍微有點碰過資料庫入門級的 SQL 語法,就可以鎖定一個你目標資料庫精準學習。首先就是開始精煉你的 SQL 語法,最好還能進階 SP (Stored Procedure) 預儲程式寫作,去熟悉你選擇的資料庫的介面與設計工具,以及各種 SQL, SP 的除錯技巧,直到你能寫出 SP API 給前端軟體使用,因為透過 API 存取資料庫的方式,對資料庫安全性與穩定性會起到很好的作用。如果你也跟我一樣不小心玩出興趣來的話,就可以考慮更深入的主題了,嘗試按照自己想法設計資料庫,畫 ER-Model、搞懂資料庫設計理論、研究資料庫效能如何調校都是很重要的題目,還要徹底了解資料庫所有的元件型態,像 Table、View、Trigger、Index… 各種資料欄位的型態 Text, Numeric, Char, Varchar, Blob.. 等的使用的時機點、效能與使用限制等,例如:如何做正規化來或何時該反正規化,來設計更好的資料庫來存放與應用你的數據。有餘力的話就可以再往效能調校的部分前進,充分了解你正在用的資料庫的性能,有哪些關鍵系統參數可以調整,有哪些數據引擎可以使用,學會合理的建 index ,Explain SQL 最佳化。一次熟悉一種資料庫,慢慢你就變成達人了。

結語
軟體分工越來越細是趨勢,也不是每個軟體工程師都一定要把資料庫的技能點滿,還是會建議軟體工程師要把資料庫練到熟悉 SQL 語法等級,能寫 Stored Procedure,讓你在執行專案的時候更容易與負責資料庫的夥伴溝通,又或者萬一趕工臨時找不到人也可以自己處理一下。你一定要記得:
「一個會寫程式又懂資料庫的軟體工程師就等於擁有了真正的解決問題的能力。」
對於未來工作發展也有能力朝著 SA 系統架構師, PM 軟體專案主管或 TPM 技術主管這類格局更大的軟體職位前進,所以我才會跟你說:「越早越好,最好是從你入行的地一天就開始;越早越好,最好是從你入行的地一天就開始;越早越好,最好是從你入行的地一天就開始。」因為很重要,所以說三次。如果你對於這軟體設計方面的主題感興趣,或者你已經在學習,對於程式設計與資料庫學習有相關的問題,都歡迎你留言告訴我。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.