What is Framework(s)? - A simplest explanation ever?

What is Framework(s)? - A simplest explanation ever?
Photo by Xavi Cabrera / Unsplash
"Project นี้เราจะใช้ Spring Boot framework สำหรับ backend นะ..."

บทสนทนาทั่วไปที่เราคงจะเคยได้ยินมาอยู่เป็นประจำ ไม่ว่าคุณจะเป็น frontend หรือ backend คำว่า framework ก็เป็นสิ่งที่ทุกคนนั้นพูดถึงอยู่เป็นประจำ

Framework...Framework...Framework... – เป็นคำที่คนที่อยู่ในวงการ Software Engineer น่าจะได้เคยได้ยินหรืออย่างน้อยก็ต้องเคยพูดถึงมันบ้างซักครั้งแหละ

ซึ่งก็เคยมีคนถามผู้เขียนเหมือนกันว่า

พี่ๆ แล้ว Framework มันคืออะไร?

แน่นอนเราก็เอาคำว่า framework ไปใส่ใน Google Translate มันก็จะแปลว่าาา

ex-best friend before AI

กรอบ...โครง...เค้าโครง...ถ้าเราเอามาแปลซื่อ ๆ แบบนี้ ก็งงสิครับ ซึ่ง ณ ตอนนั้นผู้เขียนก็ไม่สามารถอธิบายได้ว่า 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 กับสิ่งอื่น หรือ ไม่ต้องใช้การเปรียบเปรยเลยก็เป็นได้ แต่นี่คือสิ่งที่ทำให้ผู้เขียนรู้สึกเข้าใจกับคำคำนี้มากขึ้นและสามารถอธิบายคำนี้ได้อย่างเต็มปากเต็มคำ

หวังว่าบทความนี้จะเป็นประโยชน์ไม่มากก็น้อย

💡
Fun Fact: จริง ๆ ผู้เขียนนึกเรื่องนี้ได้ตอนขับรถอยู่แต่เปลี่ยนเนื้อหาเพื่อความ smooth ของบทความ 😂

Read more

Tuple: ปรัชญาของการปูเสื่อ และศิลปะแห่งการไม่ตั้งชื่อ

Tuple: ปรัชญาของการปูเสื่อ และศิลปะแห่งการไม่ตั้งชื่อ

ในโลกของการเขียนโปรแกรม เรามักถูกสอนให้เป็น “นักจัดระเบียบ” เราสร้างคลาส สร้าง Struct ตั้งชื่อตัวแปรให้สื่อความหมาย (Clean Code) แต่บางครั้ง ความเคร่งครัดที่มากเกินไปอาจกลายเป็นพันธนาการที่ทำให้ Code ของเราอุ้ยอ้ายโดยไม่จำเป็น 1. Naming Fatigue: ภาระของการมีตัวตน ลองนึกภาพคุณได้

By Santi
The Art of Early Return: วินัยแห่งการ “คัดออก” เพื่อสมองที่โล่งกว่าเดิม 10 เท่า

The Art of Early Return: วินัยแห่งการ “คัดออก” เพื่อสมองที่โล่งกว่าเดิม 10 เท่า

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

By Santi
The Logic Trap: เมื่อ “ความถูกต้อง” กลายเป็นอาวุธที่ทำลายทีมซอฟต์แวร์

The Logic Trap: เมื่อ “ความถูกต้อง” กลายเป็นอาวุธที่ทำลายทีมซอฟต์แวร์

ในโลกของการพัฒนาซอฟต์แวร์ เราถูกสอนให้เทิดทูน Logic เป็นพระเจ้า เราใช้เหตุผลในการคัดเลือก Stack, ใช้ความถูกต้องในการทำ Code Review และใช้ตัวเลขในการวาง Roadmap แต่เคยสงสัยไหมครับ? ทั้งที่เราพูดเรื่องที่ “ถูกต้อง” และเป็น “ความจริง” ทุกประการ ทำไมผลลัพธ์ในห้องประชุ

By Santi
Change Management ต้องทำไหมนะ แล้วทำตอนไหน

Change Management ต้องทำไหมนะ แล้วทำตอนไหน

เนื่องจากช่วงนี้ได้ทำงานกับลูกค้าที่มีการเปลี่ยนแปลงทาง scope ของงานเยอะมาก อารมณ์แบบตอน baseline เป็นแบบนึง พอจะเลือกงานมาทำจริงๆ เรียกว่าเปลี่ยนไปตาม strategy ขององค์กรเลยก็ว่าได้ ในฐานะที่เราเป็นกลุ่มนักพัฒนา ที่ยังจำเป็นต้องควบคุมงบประมาณ กำหนด scope และต้องตอบให้ได้ว่า

By Thanthiya Phatharamalai