Người lập trình hay người phát triển

Tuần trước tôi nhận được một email hỏi: “Khác biệt giữa người lập trình và người phát triển phần mềm là gì? Người lập trình có thể trở thành người phát triển được không?

Theo “quan điểm thuần tuý”, “người lập trình” là ai đó chỉ viết mã và kiểm thử mã riêng của họ để sửa lỗi. Người lập trình KHÔNG làm việc với khách hàng hay người dùng để viết yêu cầu. Người lập trình KHÔNG giúp kiểm thử hay các trường hợp kiểm thử tự động cho hệ thống. Người lập trình KHÔNG xây dựng hệ thống hay cập nhật hệ thống. Người lập trình KHÔNG viết tài liệu. Mọi điều họ làm là viết mã. Nhiều người lập trình có thể có hay KHÔNG có bằng cử nhân: một số người có thể học vài lớp lập trình ở trường đào tạo đặc biệt. Một số công ti sẽ thuê loại người lập trình này để viết mã bởi vì họ không yêu cầu lương cao và họ không thể đổi việc thường xuyên vì việc làm của họ rất bị giới hạn. Theo ý kiến tôi, người lập trình KHÔNG phải là chọn lựa tốt vì triển vọng tương lai là rất hạn hẹp.

“Người phát triển phần mềm” là ai đó đóng góp theo nhiều cách để làm cho sản phẩm phần mềm thành công. Người phát triển PHẢI LÀ người lập trình trước hết nhưng cũng còn dính dáng tới các khu vực khác như làm việc với khách hàng và người dùng để viết yêu cầu, viết trường hợp kiểm thử cho hệ thống phần mềm, kiểm điểm mã từ người khác, hỗ trợ viết tài liệu, kiểm soát thay đổi với phần mềm bằng việc làm quản lí cấu hình, và nhiều điều nữa. Người phát triển phần mềm có cảnh quan rộng hơn nhiều và có khả năng nhìn bức tranh lớn hơn của toàn thể dự án khi người lập trình chỉ viết mã. Phần lớn việc làm đối với người phát triển phần mềm ở Mĩ và châu Âu đều yêu cầu bằng cử nhân từ đại học được công nhận chính thức.

Tôi KHÔNG tin vào quyết định cô lập người lập trình với mọi thứ mà chỉ có viết mã. Người lập trình phải KHÔNG có cảnh quan hẹp. Họ CẦN đào tạo để làm cho họ thấy cảnh quan lớn hơn của hệ thống phần mềm. Họ NÊN làm việc với khách hàng và người dùng và đóng góp nhiều hơn cho dự án. Tôi tin người lập trình nên lấy nhiều đào tạo hơn để LÀ người phát triển phần mềm. Có hai lí do mà người lập trình vẫn còn chỉ viết mã: Họ thích viết mã và không muốn làm cái gì khác – đó là chọn lựa của họ. Họ KHÔNG nhận giáo dục và đào tạo đúng vì công ti muốn lấy ưu thế của những người không có giáo dục chính thức hay bằng cấp cho nên công ti có thể trả lương thấp cho họ.

Trong cuộc thăm viếng Ấn Độ năm ngoái, một người quản lí nói với tôi: “Những người lập trình của chúng tôi không biết cách làm các thứ khác và đó là lí do tại sao họ chỉ viết mã.” Tôi hỏi ông ấy: “Ông có chắc đó là điều họ muốn không, nếu họ không biết cách làm các khía cạnh phi mã thì sao ông không dạy cho họ?” Người quản lí này giải thích: “Tại chúng tôi đào tạo cho họ thì họ có thể tìm được việc tốt hơn sao? Với đào tạo hạn chế, họ phải ở lại đây chứ” Tôi không muốn nói gì hơn nữa bởi vì tôi biết rằng công ti này đã trả lương rất thấp cho những người không có giáo dục đại học và đó là lí do tại sao phần lớn người lập trình chỉ viết mã và không làm gì khác. KHÔNG phải là họ không thể làm được gì khác. Chính “kinh doanh tốt” là giữ họ theo cách đó. Trên khắp Ấn Độ, có hàng nghìn trường đào tạo đặc biệt dạy ngôn ngữ lập trình hay vài chứng chỉ trong các hệ thống đặc biệt, họ KHÔNG yêu cầu bất kì giáo dục nào cho nên họ làm tiền bằng việc tạo ra hàng trăm nghìn người lập trình chỉ có tri thức giới hạn về phần mềm. Những người này KHÔNG có mấy tương lai vì các ngôn ngữ lập trình sẽ thay đổi khi kĩ năng của họ bị giới hạn. Vài năm trước, COBOL và ngôn ngữ Pascal là nóng, nhưng thế rồi tới C và C++, và ngày nay có Java, C#, Ruby và nhiều nữa. Nếu kĩ năng của bạn là trong COBOL và bạn có thể thấy rằng nó không còn được cần tới nữa và bạn có thể không có khả năng tìm ra việc làm. Tất nhiên, có một số người lập trình không muốn làm các thứ khác. Họ chỉ muốn viết mã và hạnh phúc với nghề của mình. Tuy nhiên, tôi tin nếu họ biết rõ hơn, nếu họ có thể thấy mọi khả năng, họ có thể đổi ý.

Đào tạo chính thức ở đại học là rất quan trọng cho những người muốn có nghề nghiệp tốt. Người phát triển tốt có kĩ năng giỏi là quí giá. Với việc thiếu hụt trầm trọng hiện thời về kĩ năng phần mềm trên khắp thế giới, triển vọng là rất tốt để kiếm việc tốt với lương tốt. Nếu bạn là người lập trình và muốn là người phát triển, bạn có thể cần một số tri thức và đào tạo về kĩ nghệ yêu cầu, làm tài liệu yêu cầu, quản lí cấu hình, kiểm điểm mã, kiểm thử, kiểm thử tự động, kiểm thử tích hợp, và hiểu vòng đời phần mềm và một số phương pháp như Agile (Scrum hay lập trình cực đoan) cũng như quen thuộc với một số công cụ phần mềm.

Tác phẩm, tác giả, nguồn

  • Tác phẩm: Công nghệ thông tin
  • Nguồn: Blog của giáo sư John Vu, Carnegie Mellon University
  • Wiki hóa: https://kipkis.com