วงจรชีวิตในมุมมอง Existentialism และศิลปะแห่งการล้มเหลวในราคาถูก

Share
วงจรชีวิตในมุมมอง Existentialism และศิลปะแห่งการล้มเหลวในราคาถูก
Photo by Aditya Patil on Unsplash

บ่อยครั้งที่เราใช้ชีวิตราวกับกำลังรอคอยที่จะคอมไพล์ (Compile) โปรเจกต์ยักษ์ใหญ่ที่ซับซ้อนและรวมศูนย์เพียงชิ้นเดียว

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

ทว่าจักรวาลไม่ได้ออกแบบการดำรงอยู่ของมนุษย์ให้เป็นภาษาแบบคอมไพล์ (Compiled Language) ชีวิตไม่ได้บังคับให้คุณต้องรอจนถึงตอนจบเพื่อดูว่าโค้ดของคุณจะรันผ่านหรือไม่

เพราะชีวิตจริงทำงานบน REPL

สำหรับวิศวกรระบบ นักพัฒนาแบ็กเอนด์ และโปรแกรมเมอร์ ตัวย่อนี้คือธรรมชาติที่คุ้นเคย: Read-Eval-Print Loop มันคือสภาพแวดล้อมโต้ตอบที่ดิบและเรียบง่าย ที่ซึ่งโค้ดจะถูกประเมินผลในเสี้ยววินาทีที่มันถูกป้อนเข้ามา แต่ถ้าคุณก้าวถอยออกมาจากหน้าจอเทอร์มินอล แล้วมองกลไกนี้ผ่านเลนส์ของปรัชญา คุณจะตระหนักได้ว่ามันคือภาพสะท้อนอันเที่ยงตรงและซื่อตรงของจิตสำนึกมนุษย์

วงจร 4 ขั้นตอนแห่งการดำเนินชีวิต

REPL ทำงานเป็นลูปที่ไม่มีวันขาดตอนผ่าน 4 ระยะที่ชัดเจน เมื่อนำมาปรับใช้กับโครงสร้างชีวิตของมนุษย์ มันจะสอดรับกับวิธีที่เรานำพาตัวเองผ่านโลกความจริงได้อย่างสมบูรณ์แบบ:

  1. Read: นี่คือการเผชิญหน้ากับข้อมูลดิบของเรา สัมผัสที่รับรู้ การเปลี่ยนแปลงที่ไม่คาดคิดของตลาด เซิร์ฟเวอร์ที่ล่ม หรือสายฝนที่ตกพรำอยู่นอกหน้าต่าง จักรวาลโยนข้อมูลใส่เราโดยไม่ขออนุญาต มันคือความจริงที่กำลังวิ่งเข้าสู่ Buffer ของข้อมูลขาเข้า
  2. Eval: ในทางซอฟต์แวร์ นี่คือจุดที่ตัวแปรถูกผูกเข้าด้วยกันและนิพจน์ถูกคำนวณ ในทางชีวิต นี่คือการตื่นรู้ของจิตสำนึกมนุษย์ จิตใจของเรานำข้อมูลดิบนั้นมา ประมวลผลมัน และตีความมันผ่านกรอบของตัวตน (Identity) และระบบความเชื่อที่เรามี
  3. Print: การประเมินผลต้องการเอาต์พุต สิ่งนี้คือแอ็กชันที่เราเลือกทำ โค้ดที่เราส่งมอบ คำพูดที่เราเอ่ย และการตัดสินใจที่เราทำให้ปรากฏขึ้นในโลกทางกายภาพ มันคือผลลัพธ์ในทันทีของการประมวลผลภายในใจเรา
  4. 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 ไปเรียบร้อย ส่วนบรรทัดถัดไปยังไม่มีอยู่จริง ตัวแปรของมันยังไม่ได้ถูกประกาศ สิ่งเดียวที่มีอยู่จริงคือการกะพริบเป็นจังหวะอย่างเงียบเชียบของเคอร์เซอร์บนบรรทัดที่ว่างเปล่า

จักรวาลไม่ได้ร้องขอให้คุณสร้างแอปพลิเคชันระดับองค์กรที่ไร้ที่ติและพร้อมใช้งานจริงตั้งแต่วันแรกที่คุณลืมตาดูโลก จักรวาลเพียงแค่เปิดพื้นที่ที่สะอาดและตรงไปตรงมาไว้ให้ — พื้นที่สำหรับทดสอบตรรกะของคุณ เผชิญหน้ากับผลตอบรับในทันทีจากการกระทำของคุณ และปรับเปลี่ยนสถาปัตยกรรมชีวิตของคุณใหม่ ทีละรอบของการประมวลผล

เคอร์เซอร์กำลังกะพริบอยู่ ระบบกำลังรอฟัง

> คุณจะพิมพ์คำสั่งอะไรต่อไป?


หากคุณชอบบทความแนวการเชื่อมโยงปรัชญาเข้ากับการทำงานในโลกยุคใหม่ ฝากกดเลิฟ กดแชร์ และกดติดตามช่องของผมด้วยนะครับ!

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