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

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

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

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

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

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

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

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

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

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

ตัวอย่างหมอผ่าตัด

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

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

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

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

โดยสรุป

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

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

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