# 👨‍💻 ที่สุดแห่งการเป็นโปรแกรมเมอร์

**"ความรู้คือที่สุดแห่งสายอาชีพนี้"** ผมเชื่อว่าหลายคนก็น่าจะเห็นด้วยกับประโยคดังกล่าว เพราะการที่เราจะออกแบบของต่างๆที่ดีได้นั้น เราจำเป็นต้องอาศัย **ความรู้** นั่นเอง

แต่ก็มีหลายครั้งที่เราไปอ่านตำราบางเรื่อง เทคนิคบางอย่าง แล้วกลับพบว่าทำยังไงก็ไม่เข้าใจมันซักที ไม่ว่าจะอ่านมันซักกี่รอบ หาตัวอย่างมาซักกี่แบบก็ตามที ก็ยังคงไม่เข้าใจ หรือบางทีก็เข้าใจนะ แต่ก็ยังมีคำถามคาใจว่าทำไมต้องทำแบบนั้นหว่า (เช่นเรื่อง **SOLID Design** หรือ **Design Patterns**) แต่พอผ่านมาซักระยะหนึ่ง (อาจจะเป็นปีก็ได้) พอเราได้ย้อนกลับไปอ่านมันใหม่ เรากลับพบว่า  **เราเข้าใจมันได้แบบง่ายๆ แถมยังสามารถตอบคำถามที่เคยสงสัยได้อีกด้วย** ทำไมถึงเป็นแบบนั้นหว่า ?

คำตอบก็คือเรามี **ประสบการณ์** ถึงจุดที่จะเข้าใจแล้วยังไงล่ะ เช่น เคยเจอปัญหานั้นกับตัวเอง เคยได้ยินได้เห็นวิธีการแก้ไขปัญหาเหล่านั้นมาแล้วนั่นเอง ซึ่งเรื่องเหล่านี้มันเป็นสิ่งที่ **สอนกันยาก ต้องเจอกับตัวเองถึงจะได้มันมา** ดังนั้นเราไม่ต้องซีเรียส ถ้าศึกษาเรื่องอะไรแล้วยังไม่เข้าใจมันอย่างถ่องแท้ เพราะเรายังสะสมประสบการณ์เรื่องนั้นๆไม่มากพอ แต่เมื่อเวลาผ่านไป เดี๋ยวเราก็จะเข้าใจมันเอง และหลายๆคนทำงานอยู่ดีๆก็อาจจะร้อง อ๋อ ในเรื่องที่เคยศึกษามาเมื่อ 2 ปีก่อนก็เป็นได้ (ตรัสรู้ขณะทำงานฮ่าๆ)

### 🤔 แล้วมันเกี่ยวอะไรกับสุดยอดแห่งการเป็น Developer ?

เราเคยได้ยินไหมว่า **ที่สุดของเรื่องนั้นๆ คือการไม่ต้องทำเรื่องนั้นๆ** เช่น สุดยอดแห่งการเรียน คือการไม่ต้องเรียน, ที่สุดแห่งการล้างแค้น คือการไม่ล้างแค้น ไรงี้

ซึ่ง **วงจรในการเรียนรู้** ไม่ว่าจะเป็นวงการไหน มันก็สรุปออกมาได้เป็นแบบนี้

👶 **ช่วงแรก** - ที่เราเข้าใจเรื่องที่รู้สึกว่ามันเจ๋งมากๆ เราก็อยากจะเอามาใช้ในงาน เพื่อแก้ปัญหาในรูปแบบนั้นๆ เพราะเรารู้ว่ามันดีมากๆนั่นเอง ซึ่งอาจจะใช้มันผิดๆถูกๆอยู่บ้าง

👦 **ช่วงกลาง** - พอใช้ไปใช้มาเราก็จะชำนาญมากขึ้น ใช้งานมันได้ถูกต้องตามหลักการ แถ้มยังพลิกแพลงมันตามสถานะการณ์ต่างๆได้อีกด้วย

🧔 **ช่วงตรัสรู้** - เราเลือกที่จะไม่ใช้มันได้ ตามสถานะการณ์ เพราะรู้ว่าถ้าใช้มันจะนำพาอะไรมา และรู้ว่าเมื่อไหร่ควรที่จะใช้มัน อีกทั้งยังรู็ว่าความรู้เรื่องนั้น จริงๆมันไม่มีอะไรเลยนั่นเอง

{% hint style="success" %}
**ตัวอย่างหมอผ่าตัด**

👶 **ช่วงแรกที่จบใหม่** - พอมีคนไข้ผ่าตัดเข้ามา เขาก็จะพาไปเข้าห้องผ่าจัดเพื่อรักษาเลย อาจจะใช้เวลานานหน่อยกว่าจะทำเสร็จ

👦 **ช่วงกลาง** - พอมีคนไข้ผ่าตัดเข้ามา ก็สามารถผ่าตัดได้อย่างชำนาญ เสร็จเร็ว ปิดแผลสวย

🧔 **ช่วงตรัสรู้** - พอมีคนไข้ผ่าตัดเข้ามา เขาก็ดูอาการหน่อยแล้วอาจจะเลือก **ไม่ต้องผ่า** เพราะถ้ารอไปอีกซักหน่อย แล้วค่อยผ่าจะดีกว่า หรือบางเคสอาจจะไม่จำเป็นต้องผ่าเลยก็ได้

\*เป็นเรื่องสมมุติเพื่อให้เห็นภาพนะ ของจริงไม่เป็นแบบนี้หรอก เขาไม่ให้หมอจบใหม่ทำเรื่องพวกนี้เอง แต่เขาจะให้หมอจบใหม่-จบมานานแล้ว ไปฝึกเป็นผู้ช่วยไปเรื่อยๆ**เก็บประสบการณ์จนกว่าจะ Level UP** นั่นเอง เพราะชีวิตคนมันล้อเล่นไม่ได้ ... แล้วซอฟต์แวร์ล่ะ ?
{% endhint %}

### โดยสรุป

สุดยอดของการเป็นโปรแกรมเมอร์ คือการที่เราสามารถเลือกได้ว่า **เมื่อไหร่ควร เมื่อไหร่ไม่ควร ในแต่ละจังหวะเวลาได้อย่างถูกต้อง** ซึ่งการที่จะทำแบบนั้นได้ย่อมต้องผ่าน ประสบการณ์ไปถึงจุดนึงก่อน ดังนั้นจงหาโอกาสไปผจญภัยเก็บ exp มาอัพเวลกันโดยพลัน แต่อย่าเมากาวพุ่งทยานฟันโจทย์อย่างเดียว เราต้องหันกลับมา วิเคราะห์ สิ่งที่เราได้เรียนรู้จากโจทย์เหล่านั้นๆด้วยถึงจะได้สิ่งที่เรียกว่า **การเข้าใจอย่างแท้จริง** หรือที่ผมชอบเรียกติดปากว่า **ตรัสรู้** นั่นเอง 😍

{% hint style="info" %}
**แนะนำให้อ่าน**\
สำหรับเพื่อนๆที่สนใจอยากศึกษาเรื่องหลักในการออกแบบขั้นพื้นฐานที่ชื่อว่า **SOLID Design** สามารถอ่านได้จากลิงค์นี้\
<https://saladpuk.gitbook.io/learn/basic/solid>

สำหรับเพื่อนๆที่อยากศึกษาหลักในการแก้ปัญหาที่เจอบ่อยๆในการพัฒนาซอฟต์แวร์ที่ชื่อว่า **Design Patterns** สามารถอ่านได้จากลิงค์นี้\
<https://saladpuk.gitbook.io/learn/software-design/designpatterns>
{% endhint %}

![](/files/-M1xgWz2AVkDkmKroLR4)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.saladpuk.com/tips/9.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
