# 67: Một Lập Trình Viên Chuyên Nghiệp

Như thế nào là một lập trình viên chuyên nghiệp?

Đặc điểm quan trọng nhất của một người lập trình viên chuyên nghiệp là có trách nhiệm cá nhân. Họ chịu trách nhiệm cho sự nghiệp, các ước tính, các lời cam kết, những sai lầm và tay nghề của họ. Một người lập trình viên chuyên nghiệp sẽ không bao giờ đùn đẩy trách nhiệm của họ cho người khác.

Nếu bạn là một người chuyên nghiệp, bạn sẽ chịu trách nhiệm cho sự nghiệp của mình. Bạn có trách nhiệm học và đọc. Bạn phải luôn giữ mình cập nhật những thứ về công nghiệp và công nghệ. Đã có quá nhiều người lập trình nghĩ rằng cấp trên phải làm những việc đó để đào tạo họ. Đáng tiếc, đây là một sai lầm chết người. Bạn có nghĩ rằng bác sĩ, luật sư sẽ nghĩ như vậy không? Không, họ tự đào tạo bản thân bằng thời gian và sức lực của mình. Họ dành ra nhiều thời gian ngoài giờ để đọc biên bản và các quyết định. Họ giữ cho mình luôn ở trạng thái cập nhật mọi thứ. Chúng ta cũng nên như vậy. Mối qua hệ giữa bạn và cấp trên đã được nêu ra rõ ràng trong hợp đồng của công ty. Nói một cách ngắn gọn: Họ cam kết sẽ trả lương cho bạn, và bạn cam kết hoàn thành tốt công việc.

Những người chuyên nghiệp chịu trách nhiệm cho các mã code họ viết. Họ không phát hành các mã code trừ khi họ chắc rằng nó hoạt động. Hãy nghĩ về điều đó một chút. Làm sao bạn có thể tự cho rằng mình là một người chuyên nghiệp khi bạn thực sự muốn đưa ra mã code mà bạn không tự tin về nó ? Lập trình viên chuyên nghiệp mong đợi QA (Quality Assurance) sẽ không tìm thấy bất kì lỗi nào bởi vì họ không ra mắt mã code không được thử nghiệm kỹ lưỡng. Tất nhiên QA vẫn tìm được một vài lỗi, bởi vì không có gì là tuyệt hảo. Nhưng là một người chuyên nghiệp, ta phải có thái độ làm việc như vậy thì QA sẽ chẳng tìm được lỗi nào của ta.

Những người chuyên nghiệp là một đội người chơi. Họ sẽ chịu trách nhiệm cho kết quả của cả đội, chứ không riêng gì công việc của họ. Họ giúp đỡ, học hỏi, truyền đạt kinh nghiệm lẫn nhau, và thậm chí bảo vệ, an ủi lẫn nhau khi cần thiết. Mỗi khi một người gặp khó khăn, những người khác sẽ giúp đỡ vì họ biết rằng sẽ có một lúc nào đó họ sẽ là người cần được che chở.

Người chuyên nghiệp sẽ không chấp nhận có một danh sách bug lớn. Có được danh sách bug lớn như vậy thể hiện tính cẩu thả. Những hệ thống chứa hàng ngàn các vấn đề trong cơ sỡ dữ liệu theo dõi vấn đề là một chuỗi bi kịch của sự bất cẩn. Sự thật là, ở đa số các dự án, nhu cầu hệ thống theo dõi các vấn đề (issue tracking system) là một dấu hiệu cho sự bất cẩn. Chỉ có những hệ thống lớn nhất mới có những danh sách lỗi dài đến mức cần tự động hóa để có thể xử lí chúng.

Những người chuyên nghiệp không tạo ra mớ hỗn độn. Họ tự hào về tay nghề của họ. Họ xây dựng mã code của họ theo cách tốt nhất, gọn gàng và dễ đọc. Họ tuân theo những tiêu chuẩn và sự luyện tập tốt nhất. Họ không bao giờ vội vàng. Hãy tưởng tượng rằng bạn có một trải nghiệm được ra khỏi cơ thể của mình và một xem bác sĩ thực hiện phẩu thuật tim ngay trên người bạn. Vị bác sĩ này đang có thời hạn phẫu thuật (deadline). Anh ta phải hoàn thành trước khi máy tim phổi nhân tạo tổn hại quá nhiều tế bào máu của bạn. Bạn muốn anh ta phải thực hiện như thế nào? Bạn có muốn anh ta hành động như các nhà phát triển phần mềm điển hình, vội vàng và tạo nên mớ hỗn độn? Bạn có muốn anh ta sẽ nói rằng: “Tôi sẽ quay lại và sửa nó sau?” Hay bạn muốn anh ta sẽ theo khuôn phép, bình tĩnh, tự tin rằng cách làm của anh ấy là cách tốt nhất có thể thực hiện. Bạn muốn sự bừa bộn, hay là tính chuyên nghiệp?

Những người trách nhiệm luôn đáng tin cậy. Họ chịu trách nhiệm cho sự nghiệp của mình. Họ chịu trách nhiệm về việc bảo đảm các mã code của họ chắc chắn sẽ hoạt động tốt. Họ chịu trách nhiệm cho chất lượng tay nghề của họ. Họ sẽ không bỏ qua các nguyên tắc dù các kì hạn (deadlines) đang đến gần. Trên thực tế, khi áp lực dần xuất hiện, người chuyên nghiệp sẽ bám sát vào các nguyên tắc mà họ cho là đúng.