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.

Một kỹ sư phần mềm Việt Nam nhìn các khối gạch đồ chơi xếp nhiều tầng bên cạnh laptop chỉ hiện các mảng trừu tượng.
Những viên gạch đầu tiên còn dễ nhìn thấy; cảm giác mệt bắt đầu khi mỗi khối hữu ích lại được xây từ một khối khác mình không tạo ra.

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.

Một kỹ sư Việt Nam nhấc lớp trên của tháp gạch đồ chơi để lộ các mảnh lộn xộn bên dưới cạnh lăng kính và con lắc nhỏ.
Nhìn xuống bên dưới cũng có cái giá của nó: đôi khi lớp vừa được nhấc lên chỉ mở ra thêm nhiều lớp khác, có lớp hữu ích và có lớp chỉ là thứ được thừa hưởng.

Để 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?