Nguyen Le PhongNguyen Le Phong

Vì sao nghề software đôi khi làm mình mệt

Làm phần mềm có thể giống xếp Lego qua nhiều tầng abstraction: học viên gạch nền, rồi khối ghép sẵn, rồi những khối được xây từ khối khác. Đến một lúc, mình biết dùng rất nhiều thứ nhưng không còn thấy rõ bên dưới thật sự vận hành ra sao. Ghi chú này gọi tên kiểu mệt đó: mệt vì học quá nhiều lớp nhân tạo mà không còn chạm được nền.

Làm phần mềm giống như lắp ráp những viên gạch Lego.

Thoạt đầu, bạn học những viên gạch nền tảng — các mảnh nguyên thủy, nhỏ bé mà rốt cuộc mọi thứ khác đều được dựng từ đó. Dần dần, bạn học những khối ghép sẵn làm từ các viên gạch ấy: những tầng trừu tượng người khác đã xây để bạn khỏi phải bắt đầu từ từng nấc gạch mỗi lần.

Càng ngày, khi các hệ thống phức tạp lên, người ta càng ghép khối từ những khối vốn cũng do người khác dựng. Tầng lắng trên tầng, mỗi tầng là một tiện nghi che khuất cái tầng bên dưới nó.

Rốt cuộc bạn trôi xa khỏi những viên gạch nền tảng. Chi phí để tìm xem dưới đó thực ra là gạch gì trở nên bất khả thi — ít nhất nếu mục tiêu thật của bạn là giao phần mềm bán được, đúng hạn. Và đâu đó trong cú trôi ấy, việc học của bạn lặng lẽ đổi bản chất: từ hiểu mọi thứ sang cách dùng mọi thứ. Bạn không học gạch nữa; bạn nhận các khối như chúng được trao. Chúng mang tính tình cờ; chúng cho cảm giác nhân tạo — và chính sự nhân tạo đó là nguồn cơn của nỗi mệt.

Để dễ hình dung: học vật lý chưng cất bạn về phía chân lý của vũ trụ — mỗi điều học được là một tầng sâu hơn của một thứ có thật. Học kỹ thuật phần mềm ngày nay phần lớn là học những phát minh tùy ý của người khác. Chúng không cộng dồn; framework của người này không xếp khít lên framework của người kia theo cách định luật vật lý làm được, nên nỗ lực hiếm khi tích thành một thứ trường tồn.


Bạn thấy bài này thế nào?