What is Framework(s)? - A simplest explanation ever?
"Project นี้เราจะใช้ Spring Boot framework สำหรับ backend นะ..."
บทสนทนาทั่วไปที่เราคงจะเคยได้ยินมาอยู่เป็นประจำ ไม่ว่าคุณจะเป็น frontend หรือ backend คำว่า framework ก็เป็นสิ่งที่ทุกคนนั้นพูดถึงอยู่เป็นประจำ
Framework...Framework...Framework... – เป็นคำที่คนที่อยู่ในวงการ Software Engineer น่าจะได้เคยได้ยินหรืออย่างน้อยก็ต้องเคยพูดถึงมันบ้างซักครั้งแหละ
ซึ่งก็เคยมีคนถามผู้เขียนเหมือนกันว่า
พี่ๆ แล้ว Framework มันคืออะไร?
แน่นอนเราก็เอาคำว่า framework ไปใส่ใน Google Translate มันก็จะแปลว่าาา

กรอบ...โครง...เค้าโครง...ถ้าเราเอามาแปลซื่อ ๆ แบบนี้ ก็งงสิครับ ซึ่ง ณ ตอนนั้นผู้เขียนก็ไม่สามารถอธิบายได้ว่า Framework มันคืออะไรได้อย่างเต็มปาก นอกจากคำแปลที่ได้จาก Google Translate ที่ไม่ได้ช่วยให้เราเข้าใจมันมากขึ้นเลย
ซึ่งเวลาก็ได้ผ่านไปโดยที่คำถามนี้ก็ยังอยู่ในหัวของผู้เขียนตลอดเวลา จนกระทั่งวันหนึ่งผู้เขียนกำลังมองหาเก้าอี้ใหม่ที่จะนำมาใช้ในครัวอยู่ ซึ่งแน่นอนเราก็ต้องหาจากหลาย ๆ ที่ไม่ว่าจะเป็น IKEA, SB Furniture, Index Living, etc

ซึ่งแน่นอน แต่ละแบรนด์ก็มี design ที่แตกต่างกัน หรือ บางทีก็ตอบโจทย์คนละอย่างกัน
"เปรี้ยง เสมือนท้องฟ้าวิปริตแปรปรวนทันใด อังกอร์" ไม่ใช่! อยู่ดี ๆ ผู้เขียนก็เข้าใจว่า เราจะอธิบายคำว่า Framework ให้มัน simple ที่สุดได้ยังไง
Then, what is Framework?
ไหนแล้วมันคืออะไร
ให้เราลองเปรียบว่าถ้าเราอยากจะสร้าง service ซักตัว ก็เหมือนการที่เราอยากได้เก้าอี้ตัวนึง
ซึ่งเวลาเราอยากได้เก้าอี้เนี่ย ถ้าถามว่าเราสามารถซื้อไม้มา design เอง, ตัดไม้ วัดไม้ ซื้อผ้าบุเองได้มั้ย? แน่นอนมันทำได้ แต่แน่นอนมันก็ต้องใช้ทั้งเวลา และ ความพยายามอย่างมากกว่าจะได้เก้าอี้ขึ้นมาตัวนึงถูกไหม? และ บางทีมันก็อาจจะใช้งานไม่ได้ก็เป็นได้

แน่นอนการสร้าง service ก็เหมือนกัน ถ้าเราจะสร้างมันตั้งแต่ต้นเลย เราก็ทำได้เช่นกัน แต่แน่นอนก็ต้องใช้ทั้งเวลา และ แรงกาย แรงใจ อย่างมากเพื่อที่จะสามารถให้มันใช้บน production ได้
ดังนั้น Framework ต่าง ๆ เราที่เลือกใช้ก็เหมือนพวกแบรนด์เฟอร์นิเจอร์ที่เราไปหาซื้อเก้าอี้นั่นแหละ

ยกตัวอย่าง IKEA ถึงแม้เราจะต้องเอามาต่อเอง แต่อย่างน้อยเค้าก็ได้เตรียมขนาดไม้ที่ถูกต้อง น๊อตที่ต้องใช้ แล้วยังมี instruction มาให้เราด้วยว่าต้องเริ่มจากจุดไหนไปจุดไหน ทำให้เราสามารถสร้างเก้าอี้โดยใช้เวลาน้อยที่สุดและมั่นใจแน่ ๆ ว่าเราจะนั่งมันได้ ... ถ้าประกอบถูกอ่ะนะ

ดังนั้น Framework ที่เราพูดถึงหรือเลือกใช้กันนั้นก็คือสิ่งที่ถูกเตรียมไว้เพื่อให้เราสามารถสร้างสิ่งต่าง ๆ ได้อย่างง่ายและรวดเร็วยิ่งขึ้น ซึ่งแต่ละ Framework ก็มี document ให้เราทำตามได้ เช่นเดียวกับ instruction ของเก้าอี้จาก IKEA หรือ แบรนด์อื่น ๆ
ซึ่งแต่ละ Framework ก็จะมีจุดประสงค์หรือจุดเด่นของตัวเองแตกต่างกัน เช่นเดียวกับเก้าอี้จากแบรนด์ต่าง ๆ ที่ถึงแม้จะมีไว้นั่งเหมือนกัน แต่ก็อาจจะ design มาเพื่อจุดประสงค์ที่แตกต่างกันก็เป็นได้
ทิ้งท้ายอีกนิด การนิยาม Framework นั้นเป็นเรื่องของปัจเจกบุคคล บางคนอาจจะเปรียบเทียบ Framework กับสิ่งอื่น หรือ ไม่ต้องใช้การเปรียบเปรยเลยก็เป็นได้ แต่นี่คือสิ่งที่ทำให้ผู้เขียนรู้สึกเข้าใจกับคำคำนี้มากขึ้นและสามารถอธิบายคำนี้ได้อย่างเต็มปากเต็มคำ
หวังว่าบทความนี้จะเป็นประโยชน์ไม่มากก็น้อย