Conceptual compression means beginners don’t need to know SQL 

18-May-18

คัมภีร์เทพ IT

See the original english version Click here!
 

SQL ถือเป็นความรู้พื้นฐานที่จำเป็นสำหรับ Programmer ที่อยากทำงานกับ Application ที่ใช้งาน Database แต่ผู้เขียนบทความนี้มีแนวคิดที่แตกต่างออกไป คือสำหรับ Conceptual Compression แล้ว Programmer มือใหม่ ยังไม่จำเป็นต้องรู้ SQL ก็ได้ หลายคนอาจอยากรู้ว่า ทำไมผู้เขียนบทความคิดแบบนั้น และคุณจะเห็นด้วยกับเขาหรือไม่ ลองอ่านได้จากบทความนี้กัน

มันเคยเป็นสิ่งจำเป็นที่ว่า คุณต้องเรียนรู้ SQL ให้ลึกซึ้งก่อน ถึงจะสามารถทำ Database-backed Applications ได้ มันเป็นเรื่องที่เห็นได้ชัดว่า คุณจำเป็นต้องพูดภาษาเดียวกันกับ Database ก่อนที่คุณที่คุณจะสามารถใช้มันได้ อีกทั้งคุณควรเข้าใจและใส่ใจเกี่ยวกับแบรนด์ของ Database engine ต่างๆ ด้วย แต่ตอนนี้มันไม่ใช่แล้ว

จากเรื่อง Leaky Abstractions เราสามารถใช้ Conceptual Compression กับเรื่องของ Database ได้ เพราะมันยังไม่ใช่สิ่งจำเป็นสำหรับใช้ในการเริ่มสร้าง Database-backed Applications อย่างใน Rails เองเราเรียก Abstraction นี้ว่า Active Record ซึ่งมันอยู่ในกลุ่มของ Object-relational mappers (ORM) ซึ่ง ORM เคยเป็นสิ่งที่ Programmer เคยหัวเราะเยาะไว้ว่า มันดูไม่น่าเชื่อถือ รวมทั้งเป็นบ่อเกิดของความขี้เกียจ เป็นสิ่งที่ Programmer ไม่ต้องพึ่งพามันมากมาย แต่นั่นเป็นความคิดที่เก่าแล้ว

รู้หรือไม่ว่า อะไรที่ Application Programmer มักจะไม่ค่อยนึกถึง คำตอบคือเรื่อง Memory management และ Garbage collection มันเคยเป็นพื้นฐานที่จะทราบเกี่ยวกับ pointers, destructors, mallocs และ conceptual overhead อื่นๆ ที่จำเป็นในการจัดการกับ Memory แต่ตอนนี้ไม่ใช่แล้ว

Abstraction ของ SQL ดูเหมือนจะไม่ใช่ประเด็นเดียวกับเรื่อง Abstraction ของ Memory management รวมทั้ง Frameworks และ Environments บางอย่างก็ดูจะได้รับการพัฒนามากขึ้น อย่างใน version แรกของ Basecamp มีการเรียก #find_by_sql อยู่เป็นจำนวนมาก แต่ใน version ล่าสุดกลับไม่มีแล้ว

ไม่ใช่ว่า เราไม่จำเป็นต้องมีความรู้เกี่ยวกับ SQL ซะเลย แต่มันน่าจะดีกว่าถ้าเราได้รู้ในหลายๆ อย่าง เปรียบเหมือนกับ มันจะช่วยให้คุณมีรูปแบบแนวคิดที่ Strong เกี่ยวกับวิธีที่ Computer ต้องจัดการกับ Memory แต่คุณก็ไม่จำเป็นต้องรู้ลึกซึ้งมากมายในการเริ่มสร้าง Application

SQL (เช่นเดียวกับ Memory management) ถือเป็นแนวคิดที่คุณสามารถเรียนรู้ให้ลึกยิ่งขึ้นเมื่อไรก็ได้ที่คุณต้องการ เช่น เพื่อต่อยอดในสายอาชีพของคุณ และหลังจากคุณเรียนรู้มันแล้ว คุณก็เข้าใจและจำ Concept ของมันไปได้ตลอด แล้วเอาเวลาไปเรียนรู้กับสิ่งอื่นๆ ต่อไป

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

Relational Database ถือเป็นสิ่งที่มีประโยชน์มาก แต่สำหรับ Programmer ส่วนใหญ่ มันเป็นเป็นเพียงแค่เครื่องมือตัวหนึ่งเท่านั้น เปรียบเหมือน ถ้าคุณอยากรู้ว่าเครื่องอบผ้ามันทำงานอย่างไร คุณต้องใช้เวลาอย่างมากในการศึกษา แต่จะสะดวกกว่าถ้าคุณเพียงโทรถามช่างเทคนิค และจะว่าไปแล้วเครื่องอบผ้านี้นี้อาจไม่ได้เป็นสิ่งจำเป็นต่อชีวิตมากนัก เพราะมันเป็นแค่ช่วยทำให้เสื้อผ้าคุณแห้งไวขึ้นเท่านั้นเอง ในการเปรียบว่ามันเป็นแค่เครื่องมือตัวหนึ่งนั้น ไม่ใช่เป็นการดูถูกดูแคลน แต่เป็นการยกย่องซะมากกว่า นั่นหมายถึง เราได้สร้างเทคโนโลยีขึ้นมา แล้วแนวคิด Abstraction ก็มีข้อดีมากมาย อย่างน้อยก็ทำให้ Programmer ไม่ต้องมานั่งคิดถึงเรื่องเหล่านี้อยู่ตลอดเวลา อย่างที่ Basecamp เองซึ่งใช้ MySQL หากจะเปลี่ยนไปใช้ PostgreSQL ในวันนี้พรุ่งนี้เลย ก็ไม่ได้กระทบอะไร เพราะไม่มีอะไรใน Application ที่ขึ้นอยู่กับแบรนด์ของ Database เลย

SQL อาจเป็นตัวอย่างที่ชัดเจนที่สุดของเรื่อง Conceptual Compression ในช่วงทศวรรษที่ผ่านมา แต่การใช้งาน Application นั้นยังมีตัวอย่างอื่นๆ อีกมากมาย และเราก็ต้องการ Conceptual Compression ให้มีมากขึ้น เพื่อลดความเป็น Specialization ออกไปและเพื่อรักษาความเป็น Generalist ไว้

คุณไม่สามารถเรียนรู้ทุกอย่าง คุณไม่สามารถเก็บ Concept ต่างๆ มากมายไว้ในหัวสมองได้หมดหรอก และไม่ควรทำเป็นอย่างยิ่ง ในขณะที่เราใช้ Conceptual Compression กับสิ่งที่เป็นพื้นฐานต่างๆ จะทำให้เรามีพื้นที่ใหม่ๆ สำหรับเรื่องอื่นเพิ่มได้อีก นี่เป็นสิ่งที่ช่วยทำให้เราทำงานอย่างมีประสิทธิภาพและประสิทธิผลยิ่งขึ้น

แต่มันก็อาจจะยากที่จะแก้ไขความคิดบางอย่าง เหมือนอย่างคนแก่ที่ชอบบ่นเกี่ยวกับราคา Gas หรือราคานม เพราะเขาอ้างอิงราคาตั้งแต่สมัยก่อนๆ บางครั้งแนวคิดบางอย่างอาจจำเป็นต้องมีการปรับเปลี่ยนโดยคนรุ่นอื่น (ซึ่งมันไม่เกี่ยวกับเรื่องอายุของคุณ แต่เป็นเรื่องของประสบการณ์) ดังนั้น จงอย่ายึดติดกับความคิดเดิมๆ ไม่จำเป็นต้อง Conceptual Compression แต่เรามาช่วยกันทำให้มันเกิดขึ้นกันเถอะ

หลังจากได้อ่านแล้ว คนไอทีคิดเห็นอย่างไรบ้าง เห็นด้วย หรือ ไม่เห็นด้วย กับ Conceptual Compression ???

ที่มา:  https://m.signalvnoise.com/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความที่เกี่ยวข้อง