วงจรชีวิตในมุมมอง Existentialism และศิลปะแห่งการล้มเหลวในราคาถูก
บ่อยครั้งที่เราใช้ชีวิตราวกับกำลังรอคอยที่จะคอมไพล์ (Compile) โปรเจกต์ยักษ์ใหญ่ที่ซับซ้อนและรวมศูนย์เพียงชิ้นเดียว
เราวางแผนสำหรับทศวรรษหน้าอย่างพิถีพิถัน เรายึดโยงความสุขไว้กับจุดหมายปลายทางอันไกลโพ้นและเลือนลางของความสำเร็จสูงสุด เราเขียนโค้ดทางความคิดไว้หลายพันบรรทัด ขังมันไว้ในหัว และทรมานตัวเองด้วยความกังวลว่าการประมวลผลในท้ายที่สุดจะไร้ที่ติหรือไม่ การทำเช่นนี้ทำให้เราติดหล่มความผิดพลาดครั้งใหญ่ในเชิงสถาปัตยกรรมชีวิต นั่นคือ เราปฏิเสธที่จะมองสถานะที่เป็นอยู่ (Current State) และละเลยความจริงที่ปรากฏอยู่ตรงหน้าเราโดยสิ้นเชิง
ทว่าจักรวาลไม่ได้ออกแบบการดำรงอยู่ของมนุษย์ให้เป็นภาษาแบบคอมไพล์ (Compiled Language) ชีวิตไม่ได้บังคับให้คุณต้องรอจนถึงตอนจบเพื่อดูว่าโค้ดของคุณจะรันผ่านหรือไม่
เพราะชีวิตจริงทำงานบน REPL
สำหรับวิศวกรระบบ นักพัฒนาแบ็กเอนด์ และโปรแกรมเมอร์ ตัวย่อนี้คือธรรมชาติที่คุ้นเคย: Read-Eval-Print Loop มันคือสภาพแวดล้อมโต้ตอบที่ดิบและเรียบง่าย ที่ซึ่งโค้ดจะถูกประเมินผลในเสี้ยววินาทีที่มันถูกป้อนเข้ามา แต่ถ้าคุณก้าวถอยออกมาจากหน้าจอเทอร์มินอล แล้วมองกลไกนี้ผ่านเลนส์ของปรัชญา คุณจะตระหนักได้ว่ามันคือภาพสะท้อนอันเที่ยงตรงและซื่อตรงของจิตสำนึกมนุษย์
วงจร 4 ขั้นตอนแห่งการดำเนินชีวิต
REPL ทำงานเป็นลูปที่ไม่มีวันขาดตอนผ่าน 4 ระยะที่ชัดเจน เมื่อนำมาปรับใช้กับโครงสร้างชีวิตของมนุษย์ มันจะสอดรับกับวิธีที่เรานำพาตัวเองผ่านโลกความจริงได้อย่างสมบูรณ์แบบ:
- Read: นี่คือการเผชิญหน้ากับข้อมูลดิบของเรา สัมผัสที่รับรู้ การเปลี่ยนแปลงที่ไม่คาดคิดของตลาด เซิร์ฟเวอร์ที่ล่ม หรือสายฝนที่ตกพรำอยู่นอกหน้าต่าง จักรวาลโยนข้อมูลใส่เราโดยไม่ขออนุญาต มันคือความจริงที่กำลังวิ่งเข้าสู่ Buffer ของข้อมูลขาเข้า
- Eval: ในทางซอฟต์แวร์ นี่คือจุดที่ตัวแปรถูกผูกเข้าด้วยกันและนิพจน์ถูกคำนวณ ในทางชีวิต นี่คือการตื่นรู้ของจิตสำนึกมนุษย์ จิตใจของเรานำข้อมูลดิบนั้นมา ประมวลผลมัน และตีความมันผ่านกรอบของตัวตน (Identity) และระบบความเชื่อที่เรามี
- Print: การประเมินผลต้องการเอาต์พุต สิ่งนี้คือแอ็กชันที่เราเลือกทำ โค้ดที่เราส่งมอบ คำพูดที่เราเอ่ย และการตัดสินใจที่เราทำให้ปรากฏขึ้นในโลกทางกายภาพ มันคือผลลัพธ์ในทันทีของการประมวลผลภายในใจเรา
- Loop: เทอร์มินอลจะพิมพ์เอาต์พุตนั้นออกมา ล้างบรรทัดเก่า แล้วคืนค่ากลับสู่หน้าจอว่างๆ มันกลับคืนสู่ความเงียบงันเพื่อรอคอยคำสั่งถัดไป เราตื่นขึ้นมาในเช้าวันรุ่งขึ้นเพื่อเผชิญหน้ากับตัวแปรชุดใหม่ และเริ่มต้นวงจรนี้ซ้ำอีกครั้ง
จังหวะนี้เองคือแก่นแท้ของ Existentialism ลองนึกถึงคำกล่าวของ Jean-Paul Sartre ที่ว่า “การดำรงอยู่มาก่อนสารัตถะ” (Existence precedes essence) หรือการสำรวจความย้อนแย้งอันไร้สาระของโลก (The Absurd) โดย Albert Camus หน้าจอ REPL ไม่เคยสนใจประวัติการทำงานใน Session ก่อนๆ ของคุณ มันไม่สนว่าคุณจะพิมพ์คำสั่งผิดพลาดมาแล้วสี่สิบครั้งก่อนหน้านี้ สิ่งเดียวที่มีอยู่จริง และเป็นความจริงเดียวที่ระบบยอมรับ คือคำสั่งที่อยู่ตรงตำแหน่งเคอร์เซอร์ในเวลานี้
คุณคือผู้รับผิดชอบอย่างสมบูรณ์ต่อข้อมูลที่ป้อนลงไปในบรรทัดปัจจุบัน
ความงามแบบสโตอิกของการล้มเหลวในราคาถูก
ข้อดีที่ยิ่งใหญ่ที่สุดประการหนึ่งของ REPL คือแนวคิดที่พยายามจะลอกเลียนแบบในระบบการทำงานสมัยใหม่ แต่อดไม่ได้ที่จะทำให้มันซับซ้อนเกินไป นั่นคือ Fail Fast, Fail Cheap (ล้มเหลวให้เร็ว ล้มเหลวในราคาถูก)
หากคุณพิมพ์คำสั่งลงใน REPL แล้วตรรกะของคุณผิดพลาด คุณไม่ได้ทำระบบปฏิบัติการทั้งหมดพัง คุณแค่กด Enter หน้าจอจะแสดงข้อความ Error สั้นๆ ที่แม่นยำออกมาในทันที แล้ว Prompt ก็จะรีเซ็ตกลับมาที่เดิม ระบบไม่ได้ระเบิด ฮาร์ดแวร์ยังปลอดภัยดี คุณเพียงแค่มองดูข้อผิดพลาดนั้น กดปุ่มลูกศรขึ้นเพื่อเรียกคำสั่งเดิมกลับมา แก้ไขตัวอักษรสองสามตัว แล้วลองใหม่อีกครั้ง
มันคือความล้มเหลวที่ถูกปอกเปลือกความดราม่าออกไปจนหมดสิ้น
แต่ในชีวิตจริงภายนอกเทอร์มินอล เรากลับปฏิบัติกับทางเลือกของเราเหมือนว่าทุกๆ การตัดสินใจจำเป็นต้องผ่านการปรับโครงสร้างองค์กรครั้งใหญ่ หรือต้องรื้อเขียนโค้ดใหม่ทั้งหมด เราเป็นอัมพาตด้วยความกลัวที่จะทำผิดพลาด เราจึงปล่อยให้โค้ดนั้นนิ่งค้างอยู่ในหัว เราปฏิเสธที่จะลงมือทำเพราะเรามองว่า Run-time Error ชั่วคราวคือการพังทลายของระบบที่กู้คืนไม่ได้
นี่คือจุดที่วิธีคิดแบบวิศวกรรมมาบรรจบกับ Stoicism (ปรัชญาสโตอิก) Epictetus และ Marcus Aurelius คอยย้ำเตือนเราเสมอให้แยกแยะระหว่างสิ่งที่เราควบคุมได้กับสิ่งที่เราควบคุมไม่ได้ โค้ดที่คุณพิมพ์ลงไป — เจตนา การโฟกัส และการประมวลผลภายในของคุณ (Eval) — คือสิ่งที่คุณควบคุมได้ ส่วนเอาต์พุตที่โลกพิมพ์ตอบกลับมาหาคุณ (Print) — ไม่ว่าจะเป็นความสำเร็จหรือการปฏิเสธที่รุนแรง — คือสิ่งที่คุณควบคุมไม่ได้
แนวทางแบบสโตอิกที่มีต่อชีวิตคือการยอมรับระยะ Print ในฐานะข้อมูลตามความเป็นจริง หากมันสะท้อน Error ออกมา คุณก็อย่าปล่อยให้มันมานิยามคุณค่าของคุณในฐานะโปรแกรมเมอร์ คุณแค่ดู Stack Trace ปรับปรุงกระบวนการคิดภายในใจ แล้วแก้ไขมันในลูปถัดไป
เสรีภาพของบรรทัดคำสั่ง
มีความเสี่ยงที่เราจะมองลูปนี้แล้วเห็นเป็นกับดักในโลกยุคใหม่ — มองเห็นตัวเองเป็น Sisyphus เวอร์ชันดิจิทัลที่ต้องเข็นครกขึ้นภูเขาอย่างไม่มีวันสิ้นสุด แล้วทำได้เพียงเฝ้ามองมันกลิ้งตกลงมาซ้ำแล้วซ้ำเล่า หากเราเพียงแค่ตื่นขึ้นมารันลูปเดิมๆ ในทุกๆ วัน เราก็ไม่ต่างอะไรจากเครื่องจักรใช่ไหม?
ความแตกต่างนั้นขึ้นอยู่กับ “เสรีภาพ” ของเราโดยสิ้นเชิง เครื่องจักรทำงานตามสคริปต์ที่ถูกฮาร์ดโค้ด (Hardcoded) ไว้ แต่มนุษย์เรามีเสรีภาพอันสมบูรณ์ในการเลือกที่จะป้อนคำสั่งอะไรต่อไปใน REPL ของตัวเอง
ในโครงสร้างอันยิ่งใหญ่ของเวลา บรรทัดก่อนหน้านี้ได้ผ่านพ้นไปแล้ว มันถูกพิมพ์และบันทึกข้อความลงใน Logs ไปเรียบร้อย ส่วนบรรทัดถัดไปยังไม่มีอยู่จริง ตัวแปรของมันยังไม่ได้ถูกประกาศ สิ่งเดียวที่มีอยู่จริงคือการกะพริบเป็นจังหวะอย่างเงียบเชียบของเคอร์เซอร์บนบรรทัดที่ว่างเปล่า
จักรวาลไม่ได้ร้องขอให้คุณสร้างแอปพลิเคชันระดับองค์กรที่ไร้ที่ติและพร้อมใช้งานจริงตั้งแต่วันแรกที่คุณลืมตาดูโลก จักรวาลเพียงแค่เปิดพื้นที่ที่สะอาดและตรงไปตรงมาไว้ให้ — พื้นที่สำหรับทดสอบตรรกะของคุณ เผชิญหน้ากับผลตอบรับในทันทีจากการกระทำของคุณ และปรับเปลี่ยนสถาปัตยกรรมชีวิตของคุณใหม่ ทีละรอบของการประมวลผล
เคอร์เซอร์กำลังกะพริบอยู่ ระบบกำลังรอฟัง
> คุณจะพิมพ์คำสั่งอะไรต่อไป?
หากคุณชอบบทความแนวการเชื่อมโยงปรัชญาเข้ากับการทำงานในโลกยุคใหม่ ฝากกดเลิฟ กดแชร์ และกดติดตามช่องของผมด้วยนะครับ!