# 工程師為什麼需要套件？它能帶來哪些幫助？

- 作者：林鼎淵（Dean Lin）
- 網址：https://deanlin.net/blog/202209/why-engineers-use-packages/
- 發布：2022-09-19
- 主題：技術教學
- 系列：套件的使用與選擇
- 標籤：科技島專欄、套件
- 摘要：如果屠龍刀是系統贈送的武器，那為什麼要自己打造一把破鐵刀？

**如果屠龍刀是系統贈送的武器，那為什麼要自己打造一把破鐵刀？**

有些人在面對需求時，不喜歡直接使用市面上功能完善的套件，反而執著於每個功能都要從零開始手工打造；如果手工打造的品質穩定也就算了，但通常最後寫出來的 Bug 比市面上套件還要多很多⋯

> 人類的進步，大部分是繼承前人的知識繼續發展，就像是你需要了解怎麼使用電腦，但不需要自己買材料親手做出一台電腦。

就拿前端來舉例，假使今天要開發一個後台管理系統，如果堅持不使用框架，選擇用最純粹的 HTML、JavaScript、CSS 來開發，不但要花更多時間，最後做出來的成品還可能比用框架速成的結果更差。

> 你可以把框架想像成，由各種常見＆穩定套件組合起來的大禮包，使用者依照框架的規範進行開發。

那套件具體有哪些優點呢？以下是筆者感受最深的幾點：

1. 能夠快速評估專案功能的可行性。
2. 可以更準確預估每個功能完成的時間。
3. 節省大量重頭開始寫功能的時間。
4. 可以專心撰寫自己的程式邏輯。
5. 因為部分功能透過套件處理，所以需要維護的程式也減少了。

在了解套件對我們工作的幫助後，接下來要思考的問題是「如何評估＆導入套件」。

以筆者過去的經驗來說，有 95% 以上的套件，我只會看它的官方文檔來了解如何使用，基本上不太會去看這份套件的原始碼，**會去看它怎麼寫的套件通常不是因為它寫的太好，而是因為它寫的太爛**，因為 Bug 影響到功能，導致開發人員需要去修正，甚至去評估是否有其他替代方案。

我們導入框架＆套件是為了節省開發時間，但如果為了解決它的 Bug 反而花了更多時間（甚至無法解決），那就真的得不償失了。

為了減少這樣的悲劇發生，在後續的文章中，筆者會分享幾個[選擇套件時要注意的重點](https://deanlin.net/blog/202209/choosing-packages-1/)，並搭配[實戰案例](https://deanlin.net/blog/202209/choosing-packages-2/)，讓大家在開發的道路上盡可能不要踩雷。

---

關於作者：林鼎淵（Dean Lin），台灣的生成式 AI 企業內訓講師、外商資安公司軟體專家，也是生成式 AI 創新學院發起人。出版 7 本書（包含全台第一本 ChatGPT 應用專書），兩度獲得 iThome 鐵人賽佳作，累積上百場授課與顧問經驗。（https://deanlin.net/about/）
引用時請附上原文網址：https://deanlin.net/blog/202209/why-engineers-use-packages/
