Học Kĩ nghệ phần mềm/2

Trong cuộc viếng thăm Trung Quốc tháng trước, một giáo sư toán học đã hỏi tôi: “Học kĩ nghệ phần mềm phải mất bao lâu?”

Đây KHÔNG phải là câu hỏi đơn giản như một số trong các bạn có thể nghĩ vì nó tới từ một giáo sư toán học cho nên tôi hỏi ông ấy: “Phải mất bao lâu để sinh viên học đại số?”

Ông ấy cười và trả lời: “Điều đó còn tuỳ loại toán học cơ sở nào sinh viên có? Họ cần làm gì? Loại kĩ năng toán học nào sinh viên có? Tất nhiên, đại số nền tảng được dạy ở trường phổ thông và tiếp tục các khái niệm cao cấp hơn ở đại học cho nên câu trả lời có thể là vài tháng hay vài năm.”

Tôi bảo ông ấy: “Kĩ nghệ phần mềm không khác với Đại số. Tôi cũng cần biết sinh viên là ai và họ cần làm gì trước khi tôi có thể trả lời câu hỏi này cho đúng. Nếu sinh viên đã có bằng cấp về khoa học máy tính và hiểu rõ các khái niệm tính toán thì tôi sẽ cho ông một câu trả lời. Nếu sinh viên có bằng cấp ở các khu vực phi kĩ thuật, không có tri thức về tính toán và chút ít kĩ năng ngôn ngữ lập trình thì tôi sẽ cho ông câu trả lời khác. Tất nhiên, nếu sinh viên học năm thứ nhất trong đại học không có tri thức và kinh nghiệm lập trình, thì tôi sẽ cho ông câu trả lời khác.”

Ông ấy gật đầu: “Nhưng đại số được dạy ở trường phổ thông và trường kĩ nghệ phần mềm. Chúng không thể như nhau được.”

Tôi bảo ông ấy: “Tri thức nền tảng về tính toán làm cho Kĩ nghệ phần mềm thành dễ hơn cho một số sinh viên. Những người đã quen thuộc với máy tính cơ sở, người biết cách lập trình sẽ học Kĩ nghệ phần mềm nhanh hơn những người khác. Tuy nhiên, bất kì sinh viên nào trong đại học dù học ở khu vực kĩ thuật hay không kĩ thuật đều có khả năng học Kĩ nghệ phần mềm. Quan điểm của tôi là sinh viên đã quen thuộc với việc học những điều mới liên tục sẽ học nhanh chóng hơn vì họ biết cách học, và không sợ điều gì đó mới, và có tự tin trong khả năng học của họ.”

Ông ấy dường như thoả mãn: “Vậy Kĩ nghệ phần mềm không khó như hầu hết mọi người thường nói.”

Tôi bảo ông ấy: “Có nhiều quan niệm sai về Kĩ nghệ phần mềm. Lĩnh vực nghiên cứu này KHÔNG khác với bất kì lĩnh vực nào khác như toán học, vật lí hay ngay cả văn học. Nó là lĩnh vực thực hành khi so sánh với Khoa học máy tính vốn tập trung nhiều vào lí thuyết và ngôn ngữ lập trình. Kĩ nghệ phần mềm tập trung nhiều vào khái niệm và qui trình được dùng trong công nghiệp và nó tuỳ thuộc vào kinh nghiệm của giáo sư. Lí do mọi người tin nó khó là vì nhiều giáo sư hàn lâm không thích dạy cái gì đó họ không có kinh nghiệm và không thể giải thích được rõ ràng cho sinh viên. Tôi nghĩ môi trường học tập là nhân tố quan trọng khác trong việc dạy kĩ nghệ phần mềm. Để hiệu quả, trường phải có các giáo sư có kinh nghiệm và các giáo sư càng chuyên sâu thì sinh viên học càng nhanh và dễ hơn. Đại học tốt nên thúc đẩy môi trường học tập, điều hướng tới kết quả của quá trình học.”

Ông ấy hỏi: “Sinh viên có khả năng làm gì sau khi tốt nghiệp?”

Tôi giải thích: “Họ phải có khả năng làm việc ngay lập tức với đào tạo tối thiểu. Họ phải hiểu mọi hoạt động trong công ti phần mềm. Họ phải biết cách làm việc với khách hàng và hiểu nhu cầu của khách hàng. Họ phải có khả năng kiến trúc hệ thống mới hay cải tiến hệ thống cũ và đảm bảo rằng tất cả các cấu phần đều làm việc đúng. Họ phải có khả năng thiết kế và phát triển hệ thống và viết mã để thực hiện thiết kế. Họ phải biết cách làm việc theo tổ, có khả năng yêu cầu giúp đỡ khi họ gặp khó khăn. Họ phải có khả năng dùng công cụ phần mềm và quen thuộc với xu hướng trong công nghiệp. Tuy nhiên, điều quan trọng nhất là họ hiểu khái niệm học cả đời vì công nghệ thay đổi thường xuyên.”

Bởi vì ông ấy là giáo sư toán học, cho nên tôi bảo ông ấy: “Câu trả lời cho câu hỏi Kĩ nghệ phần mềm là đơn giản hơn câu hỏi đại số. Khó giải thích nhà toán học rất giỏi đại số có thể làm được gì. Lí do nhiều người tin đây là lĩnh vực khó là ở chỗ, bởi vì thay đổi nhanh chóng trong công nghệ, các sinh viên với đào tạo giới hạn đã có trong quá khứ, và các đại học vẫn hội tụ vào dạy lập trình thay vì qui trình, nhiều sinh viên gặp khó khăn khi họ tốt nghiệp và ra làm việc trong công nghiệp. Điều này không phải bởi vì Kĩ nghệ phần mềm là khó học, nhưng vì khó dạy trong môi trường hàn lâm nơi sinh viên bị buộc học lí thuyết thay vì thực hành. Phần lớn các đào tạo khoa học máy tính đều hội tụ vào phát triển cá nhân giỏi viết mã nhưng không đào tạo họ làm việc theo tổ. Trong quá khứ khi chương trình còn nhỏ, vài người có thể làm nó một cách dễ dàng nhưng ngày nay các chương trình đang ngày một lớn hơn và bạn cần hàng trăm người làm việc cùng nhau. Điều này yêu cầu nhiều lập kế hoạch, điều phối và quản lí. Độ phức tạp vượt ra ngoài khả năng giải quyết của chúng ta khi chúng xuất hiện. Điều được cần tới là cách có cấu trúc hơn và đó là lí do tại sao qui trình phần mềm và quản lí qui trình được cần tới. Nếu bạn có hàng trăm người lập trình viết các chương trình riêng của họ, dùng các phương pháp và phong cách khác nhau, không phối hợp lẫn nhau, họ thiết kế như họ nghĩ nó sẽ làm việc thì kết quả sẽ là hỗn độn. Đó là lí do tại sao ngày nay, công nghiệp phần mềm nhấn mạnh và việc thuê kĩ sư phần mềm chứ không phải là sinh viên khoa học máy tính.

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

  • Tác phẩm: Kĩ nghệ phần mềm
  • Nguồn: Blog của giáo sư John Vu, Carnegie Mellon University.
  • Wiki hóa: https://kipkis.com