ตัว D ใน DNA ย่อมาจาก deoxyribose นี่ไม่ใช่แค่เรื่องน่ารู้ทั่วไป แต่มันคือสิ่งเตือนใจว่าคลังข้อมูลทางพันธุกรรมทั้งหมดของคุณนั้นวางอยู่บนโครงสร้างหลักที่เป็นน้ำตาล คู่เบสทั้ง 3.2 พันล้านคู่ของคุณล้วนขึ้นอยู่กับโครงร่างโมเลกุลนี้ ก่อนที่คุณจะเป็นนักพัฒนา นักแก้ปัญหา หรือแม้แต่สิ่งมีชีวิตหลายเซลล์ คุณเคยเป็นเพียงปฏิกิริยาเคมีที่เรียนรู้วิธีการคัดลอกตัวเอง เส้นทางจากโมเลกุลที่คัดลอกตัวเองได้กลุ่มแรกเหล่านั้น มาจนถึงการ commit ที่คุณ push เมื่อเช้านี้ เป็นเส้นทางที่ยาวไกล ต่อเนื่องไม่ขาดสาย และแปลกประหลาดกว่าเรื่องราวต้นกำเนิดของเทคโนโลยีส่วนใหญ่ การทำความเข้าใจเส้นทางนั้นจะเปลี่ยนมุมมองที่คุณมีต่องานของคุณ
จากมื้อกลางวันสู่มรดกแห่งชีวิต
น้ำตาลไม่ใช่แค่เชื้อเพลิง เมื่อคุณกินกลูโคส ร่างกายจะส่งมันผ่านกระบวนการเมแทบอลิซึมหลายรูปแบบ มันสามารถเผาผลาญโมเลกุลเพื่อสร้าง ATP ได้ทันที เก็บสะสมไว้ในรูปของไกลโคเจน หรือส่งเข้าสู่วิถีเพนโทสฟอสเฟต (Pentose Phosphate Pathway) วิถีนี้ทำงานในไซโทพลาซึมของเซลล์ และทำหน้าที่เป็นหนึ่งในทางแยกที่วุ่นวายที่สุดของกระบวนการเมแทบอลิซึม ผ่านปฏิกิริยาออกซิเดชันและการสลับคาร์บอนหลายขั้นตอน โครงสร้างกลูโคสที่มีคาร์บอน 6 อะตอมจะถูกตัดแต่งและจัดเรียงใหม่จนกลายเป็น Ribose-5-phosphate ซึ่งเป็นน้ำตาลที่มีคาร์บอน 5 อะตอม
อนุพันธ์ของไรโบสนั้นไม่ใช่ของเสีย มันถูกนำไปใช้โดยตรงในการสังเคราะห์ dNDPs หรือ deoxyribonucleoside diphosphates ที่เซลล์ของคุณใช้ในการร้อยเรียง DNA สายใหม่เข้าด้วยกัน วิถีเดียวกันนี้ยังสร้าง NADPH ซึ่งเป็นตัวรีดิวซ์ (reducing currency) ที่เป็นพลังงานขับเคลื่อนทุกอย่าง ตั้งแต่การสร้างกรดไขมันไปจนถึงการป้องกันอนุมูลอิสระ มื้อกลางวันและจีโนมของคุณใช้สารตั้งต้นชนิดเดียวกัน
ลองคิดถึงเรื่องนี้ดูในครั้งต่อไปที่คุณกำลังนั่ง debug งานตอนบ่ายสอง กลูโคสที่ช่วยให้สมองของคุณตื่นตัว คือส่วนหนึ่งของกระแสโมเลกุลเดียวกับที่ทำหน้าที่ซ่อมแซม DNA ในเซลล์ประสาทของคุณ คุณไม่ได้เพียงแค่บริโภคเชื้อเพลิง แต่คุณกำลังประมวลผลสสารที่เป็นตัวตนของคุณเอง เลเยอร์ของการทำ abstraction ที่เราสร้างขึ้นในซอฟต์แวร์ ไม่ว่าจะเป็นฟังก์ชันที่เรียกใช้ library หรือ library ที่เรียกใช้ kernel ล้วนมีคู่ขนานในทางชีวเคมี เซลล์ของคุณทำ abstraction เปลี่ยนน้ำตาลให้กลายเป็นพลังงาน การซ่อมแซม และการจำลองตัวเอง โดยไม่ต้องมีการตัดสินใจอย่างมีสติแม้แต่นิดเดียว คุณทำสิ่งที่คล้ายกันเมื่อคุณ compile source code ให้กลายเป็น binary ทั้งสองกระบวนการคือการเปลี่ยนสารตั้งต้นดิบๆ ให้กลายเป็นสิ่งที่ใช้งานได้จริง
ข้อผิดพลาดในฐานะสถาปัตยกรรม
ความแม่นยำทางชีวเคมีนี้ไม่ได้เกิดขึ้นมาอย่างสมบูรณ์แบบตั้งแต่แรก มันเริ่มต้นขึ้นเมื่อประมาณ 3.8 พันล้านปีก่อน ด้วยโมเลกุลที่สามารถคัดลอกตัวเองได้ คุณลักษณะที่สำคัญที่สุดของระบบนี้คือความไม่สมบูรณ์แบบ เครื่องถ่ายเอกสารที่สมบูรณ์แบบจะสร้างโลกที่หยุดนิ่ง เป็นทางตันของโมเลกุลที่เหมือนกันทุกประการ แต่ในทางกลับกัน กลับมีข้อผิดพลาดแทรกซึมเข้ามา ส่วนใหญ่ทำให้ระบบพัง บางส่วนไม่ส่งผลอะไรเลย แต่มีส่วนน้อยที่หาได้ยากยิ่งซึ่งสร้างตัวแปร (variants) ที่คัดลอกได้เร็วขึ้น มีอายุยืนยาวขึ้น หรืออยู่รอดได้ดีกว่าภายใต้สภาวะแวดล้อมนั้นๆ ความไม่สมบูรณ์แบบนั่นแหละคือวิวัฒนาการ
คุณสามารถมองว่าวิวัฒนาการคือการทดลองที่ดำเนินไปโดยไม่มีผู้จัดการห้องแล็บ การกลายพันธุ์แบบสุ่ม (Random mutation) คือการเสนอการทดลอง การคัดเลือกโดยธรรมชาติ (Natural selection) คือการอ่านผลลัพธ์ และการสูญพันธุ์ (Extinction) คือความล้มเหลวในการปรับตัว ไม่มีการรีวิว pull request โดย senior architect ไม่มีการวางแผน sprint และไม่มีกลยุทธ์การ rollback มีเพียงแรงกดดันจากการคัดเลือกที่ดิบเถื่อนเท่านั้น: ความร้อน ความหนาว ความอดอยาก รังสี การถูกล่า และการแข่งขัน เป็นเวลาหลายพันล้านปีที่นั่นคือเข็มทิศเพียงหนึ่งเดียว และผลลัพธ์ของกระบวนการลองผิดลองถูกนั้นกำลังนั่งอยู่ตรงหน้าคุณในขณะนี้ กำลังอ่านข้อความบนอุปกรณ์ที่ทำมาจากทรายที่ผ่านการกลั่นกรองมาแล้ว
การสะสมของ Stack
วิวัฒนาการของชีวิตไม่ใช่บันได แต่มันคือ stack ของ abstraction ที่มีความซับซ้อนเพิ่มขึ้นเรื่อยๆ ซึ่งวางซ้อนทับกันขึ้นไป
- เคมีที่จำลองตัวเองได้เรียนรู้การร่วมมือกัน จนกลายเป็นสิ่งมีชีวิตหลายเซลล์
- สายพันธุ์บางกลุ่มพัฒนาระบบประสาทส่วนกลาง และกิ่งก้านหนึ่งก็ได้ให้กำเนิดมนุษย์ที่มีความตระหนักรู้ในตนเอง
- ความตระหนักรู้นำไปสู่ภาษา ตามด้วยการแทนค่าด้วยสัญลักษณ์ และตามด้วยคณิตศาสตร์
- เราสร้างเครื่องจักรเพื่อจัดการกับสัญลักษณ์ได้รวดเร็วกว่าที่เซลล์ประสาทจะส่งสัญญาณ นำไปสู่การคำนวณและปัญญาประดิษฐ์
ตลอดประวัติศาสตร์ส่วนใหญ่ ชีวิตทำหน้าที่เพียงแค่รันโปรแกรม DNA ทำตามคำสั่งผ่านโปรตีน และสิ่งมีชีวิตก็ตอบสนองต่อสภาพแวดล้อมของพวกมัน มนุษย์กลายเป็นสปีชีส์แรกที่อ่าน source code ได้ เมนเดล (Mendel) นับถั่ว วัตสันและคริก (Watson and Crick) สร้างแบบจำลองเกลียวคู่ (double helix) เราถอดรหัสจีโนมและทำแผนที่เครือข่ายเมแทบอลิซึม จากนั้นเราก็ก้าวข้ามจากการอ่านไปสู่การเขียนอย่างเด็ดขาด เราแก้ไขยีนด้วย CRISPR สังเคราะห์สิ่งมีชีวิตชนิดใหม่ และฝึกฝนโครงข่ายประสาทเทียม (neural networks) บนแผ่นซิลิคอน (silicon wafers)
ทุกการสร้าง abstraction ที่คุณเขียนลงในโค้ดคือการสืบต่อเล็กๆ ของกระบวนการอันเก่าแก่นั้น เมื่อคุณ import library เพื่อหลีกเลี่ยงการเขียน sorting algorithm ใหม่ คุณกำลังต่อยอดจากความรู้ที่สะสมมา เช่นเดียวกับที่ชีววิทยาได้สร้างกลไกของเซลล์ขึ้นบนพื้นฐานของปฏิกิริยาเคมี เมื่อคุณทำ containerize แอปพลิเคชัน คุณกำลังจัดการกับการจำลองตัวเองและการควบคุมสภาพแวดล้อมด้วยความตั้งใจ ซึ่งเป็นสิ่งที่โมเลกุลเคยทำได้เพียงเพราะความบังเอิญเท่านั้น
ความแตกต่างระหว่างความมืดบอดและความตั้งใจ
กระแสการช่วยเหลือด้วย AI ในปัจจุบันได้กระตุ้นให้เกิดความวิตกกังวลอย่างแท้จริงเกี่ยวกับการถูกแทนที่ การวางกรอบความคิดเช่นนั้นบดบังความต่อเนื่องที่ลึกซึ้งกว่า เครื่องมือเหล่านี้ช่วยขยายความตั้งใจของมนุษย์ พวกมันย่นระยะเวลาระหว่างความคิดและการลงมือทำ สิ่งที่เคยต้องใช้เวลาหลายชั่วโมงในการเขียน boilerplate สำหรับนักพัฒนา junior ในปัจจุบันสามารถทำเสร็จได้ในไม่กี่นาที แต่ทิศทางยังคงถูกเลือกโดยมนุษย์ที่เป็นผู้ถือเคอร์เซอร์อยู่ดี
นี่คือสิ่งใหม่ที่แท้จริง ตลอด 3.8 พันล้านปีที่ผ่านมา วิวัฒนาการเป็นไปอย่างมืดบอด มันไม่มีเป้าหมาย ไม่มี roadmap และไม่มี Friday retrospective คุณแบกรับการวิจัยและพัฒนาทั้งหมดนั้นไว้ในเซลล์ของคุณ แต่คุณคือข้อต่อแรกในห่วงโซ่ที่สามารถมองไปข้างหน้าได้ วิวัฒนาการตอบสนองต่อสภาพแวดล้อมของเมื่อวาน แต่คุณสามารถวางแผนสำหรับความต้องการของวันพรุ่งนี้ได้ เมื่อคุณทำการ refactor โค้ด legacy ที่เปราะบางแทนที่จะ
