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

Share
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

Accepted Responsibility

Accepted Responsibility

ช่วงนี้ผมกำลังอ่านหนังสือ Extreme Programming Explained ของ Kent Beck แล้วก็ได้เจอหัวข้อหนึ่งที่กระทบใจ คือ principle ที่เรียกว่า Accepted Responsibility Principle คืออะไร? ในหนังสืออธิบายว่า Principle คือหลักการที่ทำให้ Values ของ XP กลายเป็น Practices ได้

By Chokchai Phatharamalai
The Five Ideals

The Five Ideals

จากหนังสือ The Unicorn Project ในนั้นจะมีที่ปรึกษาเก่ง ๆ คนหนึ่งชื่อ Erik เป็นเหมือนเซ็นเซหาตัวยาก เดี๋ยวก็มา เดี๋ยวก็ไป ถ้าโชคดีก็จะเจอเค้าว่าง แล้วเค้าก็จะสอนอะไรที่สำคัญ ๆ แต่ฟังดูล้ำ ๆ และลึกซึ้ง

By Chokchai Phatharamalai
Communication, Reliability and Modern concepts - System Design, Simply Explained

Communication, Reliability and Modern concepts - System Design, Simply Explained

บทความนี้จะอธิบายพื้นฐานของ System Design โดยต่อยอดจากตัวอย่าง Gym Application เพื่อให้เห็นภาพว่า เมื่อระบบเริ่มเติบโตและถูกแยกออกเป็นหลาย Service แต่ละ Service จะสื่อสารและทำงานร่วมกันอย่างไร งานแบบไหนควรสื่อสารแบบ Synchronous งานแบบไหนควรประมวลผลแบบ Asynchronous รวมถึงอธิบาย Concept พื้นฐานต่าง ๆ ที่ควรรู้ เช่น API

By Boonsong Srithong
Race condition

Race condition

ผมกำลังอ่านหนังสือ The Unicorn Project ซึ่งเป็นนิยายเกี่ยวกับ developer สาวคนหนึ่งที่ใช้ชีวิตในองค์กรท่ามกลางกระแส digital disruption อ่านแล้วสนุกมาก เป็นเรื่องที่ตื่นเต้น และหลาย ๆ dynamic ที่เกิดขึ้นก็คล้ายกับที่ผมพบเจอในบริษัทซอฟต์แวร์ เลยทำให้

By Chokchai Phatharamalai