Phim ảnh thường miêu tả các lập trình viên như là những kẻ thần thánh có thể nhớ tất cả mọi thứ. Vậy có phải các lập trình viên chuyên nghiệp thực sự biết rõ các câu lệnh mà họ viết (khi xây dựng 1 con bot, viết 1 chương trình, …) hay họ tìm tòi nghiên cứu để ghép từng mảnh ghép nhỏ thành 1 chương trình hoàn chỉnh ?

A: Tikhon Jelvis, nghiên cứu ngôn ngữ lập trình và tổng hợp chương trình

Lập trình viên không cần phải nhớ bất cứ cái gì cả. Đó là lý do tại sao tôi bị hấp dẫn bởi khoa học máy tính từ khi còn nhỏ! Trong công việc hằng ngày, tôi dành nhiều thời gian để đọc hơn là thời gian viết code: đọc tài liệu, xem qua các phần code khác của chương trình/hệ thống, google các thông báo lỗi, tìm kiếm câu trả lời trên Stack Overflow… Và đó chỉ là để giải quyết các vấn đề ngay trước mắt. Tôi còn dành thời gian để học các vấn đề khó hơn nhằm mở rộng vùng kiến thức của mình, như là đọc blog, báo cáo nghiên cứu (papers) và thỉnh thoảng là đọc sách.

Nếu bạn quay phim tôi làm việc trong vòng 1-2 tuần, nó chẳng hề giống với các bộ phim một chút nào. Tôi sẽ trông giống như 1 thằng lười biếng. Lập trình liên quan đến tư duy nhiều hơn bất cứ công việc nào khác, và tư duy thì không hề giống như làm việc. Nếu như tôi đẹp trai hơn và căn hộ của tôi được trang trí đẹp hơn, bạn sẽ nhầm lẫn tôi với một trong số các chuyên gia trẻ – không hiểu sao được thuê trong các phim sitcom của Mỹ. Trong một ngày mà tôi làm việc có hiệu quả, khả năng cao là tôi đang ngồi bên chiếc Macbook trong một quán cà phê hipster, nhìn giống một tên đánh máy dạo hơn là một “hacker”.

Nhưng mà vẫn có 1 số sự thực trong các hình ảnh về “hacker” mà bạn thường thấy. Nó khá là cường điệu và không phải là hình ảnh thường thấy, nhưng nếu bạn bắt gặp tôi ngồi bên bàn làm việc và “Emacsing” (Emacs – Một trình soạn thảo code, ảnh minh họa phía dưới) một cách điên cuồng, thì nó lại khá là giống (1 hacker) đấy.

Tôi không cố gắng để nhớ bất cứ cái gì – tôi không phải làm như vậy – tuy nhiên theo thời gian, tôi vẫn ghi nhớ nhiều thứ thông qua việc lặp đi lặp lại. Khi bắt đầu học Haskell, lúc nào tôi cũng phải tra cứu danh sách hàm; còn bây giờ, sau gần một thập kỷ, tôi chỉ đơn giản là nhớ hầu hết chúng (Mặc dù vậy tôi vẫn phải tra cứu tài liệu cho các package ít sử dụng đến). Vậy nên khi tôi vô cùng tập trung vào một task mà tôi đã biết cách giải quyết, tôi có thể viết code liên tục không ngừng nghỉ nhiều giờ liền mà không phải tra cứu cái gì. Điều đó không thường xuyên, nhưng có xảy ra.

Tôi nhắc tới Emacs là vì một lý do. Đối với những kẻ không chuyên, sử dụng Emacs một cách thành thạo chẳng khác gì biểu diễn phép thuật cả. Emacs đầy màu sắc và kích thích, nó có một giao diện tối giản – thứ mà tôi thường tinh chỉnh làm sao để cho tối giản hơn nữa – và tôi có hàng trăm tổ hợp phím tắt trong bộ nhớ cơ bắp của mình (dị vl 

). Một cái màn hình Emacs hiển thị một đống buffer và biến đổi liên tục khi tôi di chuyển qua lại và thực thi các lệnh trông y hệt như trong phim vậy.

(Đoạn này lại giới thiệu về Emacs, thấy không liên quan lắm nên bỏ qua)

Tôi hơi lạc đề chút (đúng rồi đấy 

). Ngoài một số ít trường hợp ngoại lệ, tôi chả cần phải ghi nhớ bất cứ thứ gì cả. Nếu không nhớ cái gì đó, tôi chỉ việc tra cứu nó. Điểm bất lợi duy nhất đó là tôi gần như không thể làm việc khi thiếu internet – nếu muốn làm một thứ gì đó trên một chuyến bay hay trong một cabin ở trên núi, tôi chỉ có thể thực hiện lên kế hoạch hoặc là bám lấy những gì mình đã biết rõ. Và tôi biết tôi không phải là kẻ duy nhất.

Rốt cục, các lập trình viên hiện nay đều sẽ phải tra cứu mọi thứ mọi lúc thôi. Internet, google hay Stack Overflow đã là những công cụ quá hiệu quả để truy cập kiến thức, và lập trình về bản chất là nghề sử dụng kiến thức mà thôi. không có lý do gì để không sử dụng các công cụ này cả – chúng cung cấp quá nhiều giá trị vì thế bỏ qua chúng là một sự lãng phí thời gian lớn. Chả có gì hoành tráng khi tự làm khó mình cả.

Theo: Nguyễn Đào Anh Khoa

Leave a Reply

Your email address will not be published. Required fields are marked *