Học kĩ nghệ phần mềm
Có khác biệt giữa kĩ năng máy tính được dạy ở đại học và kĩ năng được công nghiệp phần mềm cần tới. Khác biệt này dường như là do quan điểm hàn lâm nhìn về các lí thuyết máy tính phải được dạy thế nào cho sinh viên và kinh nghiệm của các giáo sư. Quan điểm hàn lâm về dạy tập trung vào chuỗi bài giảng về lí thuyết tính toán và thực hành thì dùng các bài tập về lập trình. Trong khi cách tiếp cận này hợp lí, các bài giảng và bài tập trên lớp thường thiếu “tri thức chiều sâu” của điều đã xảy ra trong các dự án phần mềm thực. Đó là lí do tại sao nhiều sinh viên rất giỏi ở trường lại khó áp dụng lí thuyết của họ vào thực tế khi làm việc trong công nghiệp phần mềm. Sau đây là một số khác biệt:
Cách tiếp cận hàn lâm nhấn mạnh:
- Xây dựng các chương trình nhỏ, cỡ vài trăm dòng mã.
- Dùng các ngôn ngữ lập trình như Pascal hay C.
- Mọi thứ bao giờ cũng “bắt đầu mới” cho từng bài tập lớn.
- Trường học hiếm khi dạy việc dùng các công cụ phần mềm hay sản phẩm bán sẵn Commercial-off-the-shelves (COTS).
- Lập trình trong cô lập hay trong nhóm nhỏ.
- Niềm tin rằng nếu một chương trình “làm việc”, nó là tốt.
- Cách tiếp cận phát triển không hình thức (chủ yếu viết mã) thay vì cách tiếp cận chặt chẽ yêu cầu nhiều kĩ năng hơn.
Người phát triển phần mềm thực hành trong công nghiệp phải giải quyết:
- Hệ thống phần mềm lớn, thường hàng trăm nghìn hay hàng triệu dòng mã.
- Nhiều ngôn ngữ lập trình, Pascal và C KHÔNG được dùng nữa, bị thay thế bằng Java, C++, C # và Ajax;
- Hệ thống hiện tại vẫn còn quan trọng và phải được bảo trì và liên tục được cập nhật. Hiếm khi bạn bắt đầu cái gì đó mới;
- Phần lớn các công ti có hàng trăm công cụ phần mềm và dùng nhiều sản phẩm thương mại làm sẵn COTS.
- Phần lớn nỗ lực phát triển đều được thực hiện bởi các tổ lớn, không ai làm việc một mình.
- Có nhiều bù trừ chi phí hiệu năng trong hoàn cảnh kinh doanh. Một chương trình “làm việc” có thể không đủ tốt.
- Mọi phát triển phải tuân theo các qui trình và chuẩn được xác định rõ.
Rõ ràng, hai cách tiếp cận này KHÔNG ngang hàng với nhau, đó là lí do tại sao nhiều sinh viên khoa học máy tính chịu thua thiệt trong công nghiệp phần mềm và phải được đào tạo lại trước khi họ có thể có năng suất.
Một vấn đề chính khác là việc nhận diện tri thức và kĩ năng. Tri thức nói tới điều sinh viên “biết” nhưng kĩ năng chỉ ra những điều sinh viên phải có khả năng “làm.” Hơn nữa kĩ năng có thể được xác địng bằng “chiều sâu” (Quen thuộc, Thực hành và Làm chủ) dựa trên kinh nghiệm và chiều dài của thực hành. Không may, phần lớn các giáo sư đại học chưa bao giờ làm việc trong công nghiệp phần mềm hay chưa từng được đưa vào những thực hành này cho nên họ chỉ tập trung vào dạy lí thuyết mà không thực hành, vì vậy sinh viên không bao giờ có cơ hội để phát triển tri thức chiều sâu về một số chủ đề.
Ngày nay, phần lớn các đại học hàng đầu trên thế giới đang thay thế các bài tập truyền thống bằng “kịch bản tái tạo” nơi sinh viên phải áp dụng điều họ học vào giải quyết “vấn đề thực.” Với cách tiếp cận này, sinh viên có thể phát triển các kĩ năng của họ bằng việc áp dụng tri thức họ học trong lớp và nhận được phản hồi từ các giáo sư. Đây là lí do chính tại sao phần lớn các chương trình kĩ nghệ phần mềm đều hội tụ vào “qui trình” hay dãy các hoạt động mà kĩ nghệ phần mềm phải tuân theo thay vì học các lí thuyết trừu tượng. Theo phương pháp bài giảng truyền thống, qui trình phần mềm là khó dạy bởi vì chừng nào giáo sư còn chưa có kinh nghiệm công nghiệp thực tế, sẽ khó giải thích khái niệm về qui trình cho sinh viên, người đơn giản ngồi và nghe hướng dẫn. Học “qui trình” họ phải “làm nó.” (Phương pháp học qua hành).
Chẳng hạn, theo cách tiếp cận kịch bản tái tạo, có nhiều biến cố xảy ra đồng thời; cho nên sinh viên phải thường xuyên ngắt hoạt động của mình để làm việc trên các hoạt động khác như trong dự án thực. Họ học cách ưu tiên hoá công việc của mình bởi vì làm theo cùng cách mọi lúc sẽ không dẫn tới cùng kết quả. Theo cách tiếp cận kịch bản, có vài nhân tố ngẫu nhiên như yêu cầu thay đổi, thành viên tổ thay đổi, khách hàng thay đổi và lịch biểu thay đổi cũng giống như trong dự án thực cho nên sinh viên học rằng có những mục đích xung đột mà đôi khi can nhiễu lẫn nhau mà họ phải giải quyết. Hành động của sinh viên để nhận diện những mục đích nào đó là quan trọng hơn các mục đích khác, và một số mục đích có thể được đạt tới khi các mục đích khác có thể bị trì hoãn hay được thực hiện một phần. Sinh viên sẽ học rằng với mọi dự án, có nhiều người dùng và khách hàng mà từng người đều cố thoả mãn nhu cầu riêng của họ cho nên sinh viên học cách thương lượng và thoả hiệp cũng như họ sẽ thực hiện trong dự án thực.
Tôi tin cách tiếp cận mới này là cao cấp hơn nhiều so với cách tiếp cận truyền thống, đặc biệt trong việc dạy kĩ nghệ phần mềm hay các lĩnh vực công nghệ khác.
Tác phẩm, tác giả, nguồn
- Tác phẩm: Lời khuyên cho sinh viên
- Nguồn: Blog của giáo sư John Vu, Carnegie Mellon University.
- Wiki hóa: https://kipkis.com