PlusMagi's Blog By Pitt Phunsanit Technology Shoshin (โชชิน): พุทธศาสนาเซน หมายถึง จิตใจของผู้เริ่มต้น หมายถึงการมีทัศนคติที่เปิดกว้าง กระตือรือร้น และปราศจากอคติเมื่อศึกษา

Shoshin (โชชิน): พุทธศาสนาเซน หมายถึง จิตใจของผู้เริ่มต้น หมายถึงการมีทัศนคติที่เปิดกว้าง กระตือรือร้น และปราศจากอคติเมื่อศึกษา

ในฐานะนักเขียนบทความและ System Specialist ที่เชี่ยวชาญด้านสถาปัตยกรรมฐานข้อมูลระดับสูง เรามักจะเผชิญกับแนวคิดที่ว่า “ความรู้คืออำนาจ” ซึ่งนำไปสู่การสร้างระบบที่มีประสิทธิภาพสูงสุดตามองค์ความรู้ที่เรามีอยู่ อย่างไรก็ตาม ในโลกของเทคโนโลยีและข้อมูล การติดอยู่ในกรอบของสิ่งที่เคยทำได้ดีในอดีต (Technical Debt of Mindset) อาจเป็นอุปสรรคที่ใหญ่กว่าข้อจำกัดทางกายภาพเสียอีก

แนวคิดจากพุทธศาสนาเซนที่เรียกว่า โชชิน (Shoshin) หรือ “จิตใจของผู้เริ่มต้น” คือการตระหนักถึงสภาวะแห่งความเปิดกว้าง ความกระตือรือร้น และที่สำคัญที่สุดคือ การปราศจากอคติ ไม่ว่าเราจะเชี่ยวชาญ PostgreSQL มานานเพียงใด การกลับไปสู่จิตใจของผู้เริ่มต้นก็เป็นทักษะทางปัญญาที่ทรงพลังอย่างยิ่ง

Shoshin ในมุมมองของสถาปัตยกรรมฐานข้อมูล: การตั้งคำถามจากศูนย์

ในบริบทของการออกแบบระบบฐานข้อมูล (Database Architecture) โชชินหมายถึงการที่เราไม่ยอมให้ความรู้เดิมๆ มาจำกัดขอบเขตการคิดของเรา เราจะไม่สมมติว่าปัญหาต้องถูกแก้ด้วยฟังก์ชันที่เคยใช้ได้เสมอไป แต่เราจะตั้งคำถามพื้นฐานที่สุดกับชุดข้อมูลและข้อกำหนดทางธุรกิจ ราวกับว่านี่คือครั้งแรกที่เราเห็นตารางเหล่านี้

การหลุดพ้นจากสมมติฐาน (Breaking Assumptions)

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

การประยุกต์ใช้ Shoshin ด้วย PostgreSQL

เราสามารถจำลองสภาวะของจิตใจผู้เริ่มต้นในการเขียนโค้ด SQL ได้โดยการใช้วิธีที่เน้นการสำรวจ (Exploration) และความสัมพันธ์แบบไม่รู้ขอบเขตล่วงหน้า:

  1. การสร้างชุดข้อมูลพื้นฐานด้วย generate_series: แทนที่จะเขียน Query ที่อ้างอิงจากตารางที่มีอยู่แล้ว การใช้ generate_series คือการเริ่มต้นจากศูนย์ (Zero Point) เพื่อสำรวจความเป็นไปได้ทั้งหมด ซึ่งสะท้อนถึงความอยากรู้อยากเห็นที่บริสุทธิ์
  2. การค้นหาความสัมพันธ์ด้วย Recursive CTE: เมื่อเราไม่รู้ว่าความสัมพันธ์ของข้อมูลจะลึกแค่ไหน การใช้ WITH RECURSIVE คือการยอมรับว่าเราต้องสำรวจทุกระดับชั้น (Depth) อย่างเปิดกว้าง โดยไม่มีสมมติฐานเรื่องจำนวนรอบที่แน่นอน

ตัวอย่างโค้ดที่แสดงถึงการเริ่มต้นจากศูนย์เพื่อสร้างชุดข้อมูลพื้นฐาน:

SQL

-- Shoshin: เริ่มต้นด้วยการสำรวจช่วงเวลาทั้งหมด (0 ถึง 10) โดยไม่รู้ว่าต้องใช้กี่แถว

SQL

SELECT generate_series(1, 5) AS day;

ตัวอย่างโค้ดที่แสดงถึงการสำรวจความสัมพันธ์แบบไม่มีขอบเขต (Recursive CTE):

SQL

-- Shoshin: ค้นหาลำดับชั้นของพนักงานทั้งหมด โดยไม่รู้ว่าต้องลึกไปกี่ระดับ

SQL

WITH RECURSIVE org_chart AS (

SQL

SELECT employee_id, manager_id, name FROM employees WHERE manager_id IS NULL -- จุดเริ่มต้น

SQL

UNION ALL

SQL

SELECT e.employee_id, e.manager_id, e.name FROM employees e JOIN org_chart oc ON e.manager_id = oc.employee_id

SQL

) SELECT * FROM org_chart;

บทสรุป: การดำรงอยู่ในสภาวะแห่งความอ่อนน้อมทางปัญญา

โชชินไม่ใช่แค่แนวคิดเชิงปรัชญา แต่เป็น ทักษะในการทำงาน (Skillset) สำหรับนักพัฒนาและสถาปนิกข้อมูล มันคือการฝึกฝนให้เราดำรงอยู่ในสภาวะของ ความอ่อนน้อมถ่อมตนทางปัญญา (Intellectual Humility) เสมอ การยอมรับว่าโค้ดที่ทำงานได้ดีในวันนี้ อาจต้องถูกท้าทายด้วยคำถามพื้นฐานที่สุดเสมอ เพื่อให้ระบบของเรามีความยืดหยุ่นและพร้อมสำหรับการเติบโตที่ไม่สิ้นสุด