Chữ D trong DNA là viết tắt của deoxyribose. Đó không phải là một thông tin bên lề vô thưởng vô phạt. Đó là một lời nhắc nhở rằng toàn bộ kho lưu trữ di truyền của bạn đều dựa trên một khung xương đường. Mỗi một trong số 3,2 tỷ cặp bazơ của bạn đều phụ thuộc vào bộ khung phân tử này. Trước khi trở thành một lập trình viên, một người giải quyết vấn đề, hay thậm chí là một sinh vật đa bào, bạn vốn là hóa học đã học được cách tự sao chép chính mình. Con đường từ những phân tử tự sao chép đầu tiên đó đến bản commit mà bạn vừa đẩy lên sáng nay là một hành trình dài, không đứt quãng, và kỳ lạ hơn hầu hết các câu chuyện về nguồn gốc công nghệ. Hiểu được con đường đó sẽ thay đổi cách bạn nhìn nhận công việc của mình.

Từ Bữa Trưa đến Di Sản

Đường không chỉ là nhiên liệu. Khi bạn ăn glucose, cơ thể bạn sẽ điều hướng nó qua nhiều lựa chọn chuyển hóa khác nhau. Nó có thể đốt cháy phân tử ngay lập tức để tạo ATP, dự trữ dưới dạng glycogen, hoặc đưa vào con đường Pentose Phosphate. Con đường này hoạt động trong tế bào chất của các tế bào và đóng vai trò như một trong những ngã tư bận rộn nhất của quá trình trao đổi chất. Thông qua một loạt các phản ứng oxy hóa và hoán đổi carbon, khung glucose sáu carbon được cắt tỉa và sắp xếp lại thành Ribose-5-phosphate, một loại đường năm carbon.

Dẫn xuất ribose đó không phải là chất thải. Nó cung cấp trực tiếp cho quá trình tổng hợp dNDPs, các deoxyribonucleoside diphosphate mà tế bào của bạn sử dụng để liên kết các chuỗi DNA mới. Con đường này cũng tạo ra NADPH, "đơn vị tiền tệ" khử cung cấp năng lượng cho mọi thứ, từ việc xây dựng axit béo đến khả năng phòng vệ chống oxy hóa. Bữa trưa của bạn và bộ gen của bạn chia sẻ cùng một loại nguyên liệu thô.

Hãy nghĩ về điều này vào lần tới khi bạn đang debug lúc 2 giờ chiều. Lượng glucose giúp não bạn tỉnh táo là một phần của cùng một dòng chảy phân tử đang sửa chữa DNA trong các neuron của bạn. Bạn không chỉ đơn thuần là đang tiêu thụ nhiên liệu. Bạn đang xử lý chính vật chất tạo nên sự tồn tại của mình. Các lớp trừu tượng mà chúng ta xây dựng trong phần mềm — các hàm gọi thư viện rồi gọi đến nhân (kernel) — đều có một sự tương đồng về mặt hóa sinh. Các tế bào của bạn trừu tượng hóa đường thành năng lượng, sự sửa chữa và sự sao chép mà không cần một quyết định có ý thức nào. Bạn cũng làm điều tương tự khi biên dịch mã nguồn thành mã nhị phân. Cả hai quá trình đều chuyển đổi cơ chất thô thành một thứ gì đó có chức năng.

Sai số là Kiến trúc

Sự chính xác về mặt hóa sinh này không tự nhiên mà có một cách hoàn chỉnh. Nó bắt đầu từ khoảng 3,8 tỷ năm trước với những phân tử có thể tự sao chép chính mình. Đặc điểm quan trọng nhất của hệ thống này chính là sự không hoàn hảo của nó. Một chiếc máy sao chép hoàn hảo sẽ tạo ra một thế giới tĩnh lặng, một ngõ cụt của những phân tử giống hệt nhau. Thay vào đó, các sai số đã len lỏi vào. Hầu hết chúng làm hỏng mọi thứ. Một số không làm gì cả. Một số ít hiếm hoi tạo ra các biến thể sao chép nhanh hơn, tồn tại lâu hơn hoặc sống sót tốt hơn trong các điều kiện cục bộ. Sự không hoàn hảo đó chính là tiến hóa.

Bạn có thể coi tiến hóa như một thí nghiệm đang chạy mà không có quản lý phòng thí nghiệm. Đột biến ngẫu nhiên đề xuất thử nghiệm. Chọn lọc tự nhiên đọc kết quả. Tuyệt chủng là sự thất bại trong việc thích nghi. Không có kiến trúc sư trưởng nào xem xét các pull request, không có lập kế hoạch sprint, và cũng không có chiến lược rollback. Chỉ

Mỗi sự trừu tượng hóa mà bạn viết vào mã nguồn của mình là một sự tiếp nối nhỏ bé của quá trình cổ xưa đó. Khi bạn import một thư viện để tránh việc phải viết lại một thuật toán sắp xếp, bạn đang xây dựng dựa trên kiến thức tích lũy, giống như cách sinh học xây dựng bộ máy tế bào dựa trên các phản ứng hóa học. Khi bạn container hóa một ứng dụng, bạn đang xử lý việc sao chép và kiểm soát môi trường một cách có chủ đích, điều mà các phân tử trước đây chỉ đạt được một cách tình cờ.

Sự khác biệt giữa sự mù quáng và chủ đích

Làn sóng hỗ trợ từ AI hiện nay đã gây ra sự lo lắng thực sự về việc bị thay thế. Cách đặt vấn đề đó đã che lấp đi sự liên tục sâu sắc hơn. Những công cụ này khuếch đại ý chí của con người. Chúng rút ngắn khoảng cách giữa ý tưởng và việc thực thi. Những gì từng khiến một lập trình viên junior mất hàng giờ để viết mã boilerplate thì nay có thể hoàn thành trong vài phút. Nhưng hướng đi vẫn do con người – người đang cầm con trỏ chuột – quyết định.

Điều này thực sự mới mẻ. Trong suốt 3,8 tỷ năm, sự tiến hóa đã diễn ra một cách mù quáng. Nó không có mục tiêu, không có lộ trình, và cũng không có những buổi họp retrospective vào thứ Sáu. Bạn mang tất cả quá trình nghiên cứu và phát triển đó trong các tế bào của mình, nhưng bạn lại là mắt xích đầu tiên trong chuỗi có khả năng nhìn về phía trước. Sự tiến hóa phản ứng với môi trường của ngày hôm qua. Bạn có thể lập kế hoạch cho các yêu cầu của ngày mai. Khi bạn refactor những legacy code mong manh thay vì