Xoá bỏ lập trình viên chuyên sản xuất hàng loạt!
Chênh lệch năng suất giữa lập trình viên giỏi và kém lên tới 10 hay 100 lần. Điều đó dường như “vô lý”, nhưng lại là sự thật! Thậm chí, nếu phải cùng làm việc, lập trình viên giỏi sẽ phải chỉnh sửa những đoạn code chất lượng xấu, dẫn tới năng suất tổng thể sụt xuống. Tức ...
Chênh lệch năng suất giữa lập trình viên giỏi và kém lên tới 10 hay 100 lần. Điều đó dường như “vô lý”, nhưng lại là sự thật!
Thậm chí, nếu phải cùng làm việc, lập trình viên giỏi sẽ phải chỉnh sửa những đoạn code chất lượng xấu, dẫn tới năng suất tổng thể sụt xuống. Tức là, trong đội có lập trình viên kém thì họ sẽ làm sụt giảm năng suất. Nói cực đoan, thà không có họ còn tốt hơn.
Trong phát triển phần mềm, không cần nhờ đến “tay của mèo” (Người dịch: Thành ngữ Nhật có câu “muốn nhờ đến cả tay của mèo” để ví von việc muốn nhờ đến sức của bất kỳ ai).
Vậy, lập trình viên kém là những người như thế nào?
Đó là những lập trình viên chuyên cắt&dán (copy&paste). Họ viết chương trình bằng cách cắt&dán chương trình đã chạy ở đâu đó về, rồi chỉnh sửa loanh quanh.
Họ không hiểu tại sao chương trình chạy được, không biết lập trình như thế nào để chương trình chạy được. Đây là những lập trình viên chuyên sản xuất đồng loạt, cắt & dán, viết rất nhiều chương trình. Để nhận ra những người này chỉ cần đứng bên cạnh mà xem họ debug.
Đến gần hơn với giấc mơ với sự kiện “Đòn bẩy cho giấc mơ khởi nghiệp”
do UOB Việt Nam & The FinLab phối hợp tổ chức
*Hồ Chí Minh: 17h00 – 21h00 ngày 04/03/2017
Trước tiên, họ không bao giờ đọc thông điệp báo lỗi (error message). Thấy chương trình không chạy nhưng không biết cách tìm hiểu chỗ sai. Bận rộn dịch chuyển tay liên tục, thử chỉnh các loại parameter. Cố gắng mò mẫm theo cảm tính. Họ nghĩ hễ chương trình chạy là được.
Người nhập môn và lập trình viên kém là hai đối tượng khác nhau. Ai ai lúc bắt đầu vào nghề thì cũng là người nhập môn. Khi mới nhập môn, không thể tránh khỏi việc làm chậm, chất lượng code thấp. Năng suất làm việc sẽ tăng lên qua huấn luyện, qua kinh nghiệm, ý thức ngày càng nâng cao, tay nghề được rèn luyện.
Đáng thương nhất là người đã quá quen với cách lập trình cắt & dán và cảm tính. Mắc tật xấu này rồi thì không thể tự suy nghĩ lập trình. Họ sẽ không thể viết nổi chương trình giải bài toán đơn giản fizzbuzz nổi tiếng. Người học lập trình một cách máy móc, thủ tục sẽ không làm được.
Người chỉ máy móc tuân thủ hướng dẫn (manual) thì không biết cách giải quyết vấn đề. Họ chỉ hoạt động theo hướng dẫn của người khác, và không thể tiến bộ trong lập trình. Tuy nhiên đây không phải chỉ là trách nhiệm của riêng những người lập trình kém. Cũng có thể không có cách nào khác, vì họ chỉ học đến đó.
Có lẽ trào lưu đòi hỏi lực lượng làm việc trong dự án thật được ngay chính là lý do sản sinh ra những lập trình viên như thế này.
Vì thiếu người mà đòi hỏi lực lượng làm việc dự án thực sự được ngay, ném cả những lập trình viên mới vừa đào tạo nóng hổi vào dự án, dẫn tới năng suất tổng thể xấu đi, càng tăng thêm số người đi nữa thì chi phí quản lý càng tăng, rồi cả những lập trình viên làm được việc cũng phải mệt mỏi.
Những lập trình viên chưa được huấn luyện đầy đủ đã bị đưa vào dự án, bị bắt lập trình trong khi chưa hiểu ngọn nguồn, vừa cảm thấy nhàm chán, vừa bị áp đảo bởi lượng công việc không ít, thời gian học hành không có, cuối cùng là không thể giỏi lên được.
Lý do xảy ra nhiều sự cố trong phát triển hệ thống của xã hội hiện đại cũng nằm ở đây. Những người đã trở thành lập trình viên kém, ở một mặt nào đó cũng chính là người bị hại.
Không biết bây giờ có còn như vậy không, nhưng hồi là nhân viên mới vào SIer tôi đã tham gia một khoá đào tạo nhân viên mới. Đối với một người đã từng làm việc lập trình từ hồi còn là sinh viên như tôi thì khoá học đó gây cảm giác rất khó chịu. Bắt học nhồi nhét rất nhiều, nhưng hầu như không có huấn luyện.
Có thể vấn đề nằm ở số ngày học và chi phí, nhưng dù sao thì không thể lập trình được chỉ sau vài ngày học chay. Vậy mà mới xong khoá đào tạo này là đã bị đưa ngày vào dự án và bắt đầu lập trình. Rất vô lý!
Trong các dự án phát triển hệ thống đang xảy ra việc tương tự như là cho một đầu bếp mới vào nghề đi học nấu ăn vài ngày sau đó lập tức nấu món ăn cho thực khách. Công việc như vậy không thể nào tốt được.
Trong SIer còn có cả nhận thức cho rằng việc lập trình chỉ là việc của người trẻ. Họ quá sức xem thường việc lập trình.
Nếu là thức ăn thì thực khách sẽ nhận ra ngay món ăn của đầu bếp mới học nghề, nhưng là chương trình thì khách sẽ không nhận ra, hoặc không nhận ra được ngay. Nghề nấu ăn cũng phải bắt đầu từ công việc vặt vãnh, và phải rèn luyện nhiều ngoài công việc. Lập trình cũng vậy, không rèn luyện thì sẽ không bao giờ làm được việc.
Do đó, tôi cũng cảm giác rất khó chịu đối với những dịch vụ Web hay khoá đào tạo lực lượng làm việc được ngay. Tôi hiểu nhu cầu cần thiết người làm được việc, nhưng cần chấm dứt việc đào tạo cấp tốc kiểu mì ăn liền.
Chung qui, đây là tổn thất của toàn xã hội. Một xã hội không thể đầu tư dài hơi đào tạo những người trẻ tuổi hay những người có chí hướng là một xã hội không có tương lai.
Quan trọng nhất là xuất phát điểm để có thể giảm số lập trình viên chỉ biết cắt & dán.
“Lập trình không phải đơn giản. Cũng không phải là nghề để làm giàu nhanh chóng. Nhưng nếu học có căn bản, có huấn luyện, nắm tay nghề vững chắc, thì sẽ là một công việc thú vị và tuyệt vời nhất!” Tôi muốn nói điều đó.
Cũng vì suy nghĩ đó mà tôi đã viết bài “Gửi bạn bắt đầu học lập trình”. Hãy bắt đầu từ việc khả thi, đó là việc đào tạo các bạn trẻ một cách bài bản.
Techtalk via vochicong