Trong thế giới công nghệ thay đổi nhanh chóng, sinh viên phần mềm phải đương đầu với phương pháp mới, công cụ mới, nền mới và hiểu thị trường phần mềm. Môi trường thay đổi nhanh này đòi hỏi rằng giáo dục kĩ nghệ phần mềm không chỉ dạy các công nghệ hiện thời, mà còn đào tạo sinh viên có năng lực thích nghi nhanh chóng với công nghệ mới, cho phép họ tiếp tục học công nghệ mới để đáp ứng với nhu cầu thị trường.

Giáo dục hiện thời đào tạo sinh viên chủ yếu trên các công nghệ hiện có nhưng nó không chuẩn bị cho họ với thách thức tương lai. Cách tiếp cận tốt hơn sẽ là cung cấp cho sinh viên các kĩ năng, và kĩ thuật phân tích mà họ có thể dùng trong toàn thể nghề nghiệp của họ để đánh giá công nghệ mới và rồi thích nghi chúng thành công vào nhu cầu của họ.

Ngày nay hầu hết việc đào tạo đều không dạy cho sinh viên kĩ năng giải quyết vấn đề, điều vượt ra ngoài việc sử dụng công nghệ hiện thời. Một số thậm chí còn hội tụ vào các công nghệ không còn được dùng trong công nghiệp. Nhiều trường không cho sinh viên cơ hội dùng công cụ mới, kĩ thuật mới. Lí do được nêu là họ không có ngân sách hay người để dạy những điều mới. Tuy nhiên, nhiều trong những kĩ thuật mới, công cụ mới này có thể thu được dễ dàng từ các nguồn mở, hay tải xuống từ internet. Trong chương trình đào tạo hiện thời, sinh viên dành hầu hết thời gian của họ vào ghi nhớ lí thuyết, học ngôn ngữ lập trình thay vì các kĩ năng cần thiết khác. Họ được dạy một phương pháp để phát triển phần mềm thay vì nhiều cách. Sinh viên không có cơ hội để thực nghiệm với khái niệm mới hay tuân theo cách tiếp cận mới. Lí do được nêu là chương trình đã đầy và do đó không có đủ thời gian cho điều mới.

Để chuẩn bị cho sinh viên vào thế giới toàn cầu hoá và thị trường thay đổi nhanh chóng, sinh viên phải được dạy đi ra ngoài sách giáo khoa để học các chủ đề phức tạp dựa trên vấn đề thực, như hiểu yêu cầu khách hàng, các công nghệ tích hợp, phân tích thông tin từ đa nguồn v.v. Tất nhiên, kiểu đào tạo này đòi hỏi nhiều hơn là dạy dựa trên sách truyền thống, nơi sinh viên chỉ phải ghi nhớ các sự kiện từ một nguồn. Sinh viên phải được dạy dùng nhiều nguồn thông tin và dữ liệu từ nhiều khách hàng, từ internet để tìm ra giải pháp tốt nhất. Để thúc đẩy cách tư duy học tập mới này, sinh viên phải được khuyến khích đọc nhiều hơn, học nhiều hơn và được phơi ra cho nhiều thông tin hơn là chỉ hội tụ vào sách giáo khoa. Nếu các trường không dạy điều đó, sinh viên phải tìm cách thu nhận tri thức này.

Ngày nay có hàng nghìn website và bài học kĩ thuật trên internet. Sinh viên phải học dùng chúng để mở rộng tri thức riêng của họ. Bằng việc học nhiều hơn, bằng việc có nhiều thông tin, sinh viên có thể đi qua các bộ môn truyền thống và khám phá cách thức mới, khái niệm mới, nơi nhiều người có thể được gắn lẫn nhau để giải quyết vấn đề. Sinh viên phải xây dựng một cơ sở tri thức rộng, rộng hơn nhiều so với điều họ học trong trường để duy trì tính cạnh tranh trong thị trường toàn cầu này. Họ phải dành thời gian để nghiên cứu các khái niệm mới, lí thuyết mới, vấn đề mới để mở rộng kĩ năng của họ ra bên ngoài giáo dục truyền thống.

Về mặt truyền thống, sinh viên thường được dạy làm việc một mình nhưng trong công nghiệp, họ phải làm việc theo tổ. Sinh viên phải học theo tổ và làm việc trong tổ nhiều nhất có thể được. Bằng làm việc trong tổ, họ học cách cộng tác, chia sẻ thông tin, quản lí tình cảm của họ, và giải quyết xung đột. Bằng việc học tập thể, từng thành viên của tổ chịu trách nhiệm cho chủ đề nào đó rồi đem lại để giúp các bạn trong tổ học. Việc học hợp tác này sẽ giúp phát triển kĩ năng xã hội và tình cảm, cung cấp nền tảng tri thức giá trị cho cuộc đời họ như là sinh viên, công nhân, thành viên gia đình, và công dân.

Đánh giá về năng lực sinh viên như qua kiểm tra, thi cử, bài tập về nhà nên được mở rộng ra ngoài việc cho điểm đơn giản và cung cấp hồ sơ chi tiết về những điểm mạnh điểm yếu của sinh viên. Thầy giáo, phụ huynh, và cá nhân sinh viên có thể giám sát tiến bộ hàn lâm và dùng việc đánh giá để hội tụ vào các khu vực cần cải tiến. Kiểm tra, thi cử, bài tập về nhà nên được dùng như cơ hội cho sinh viên học tập từ sai lầm của họ, thay vì trừng phạt. Sinh viên nên được phép học lại, làm lại bài kiểm tra, và cải tiến điểm của họ. Vấn đề chính ở đây là học tập, xây dựng năng lực và kĩ năng chứ không là loại bỏ.

Ngày nay, trong nhiều chương trình đào tạo còn thiếu việc tích hợp giữa các môn. Điều đó nghĩa là từng môn đều bị cô lập và tài liệu của nó có xu hướng được khoanh vùng riêng. Chẳng hạn, sinh viên đã học môn lập trình có thể không hiểu cách nó khớp vào bên trong vòng đời và cách toàn thể việc phát triển phần mềm được thực hiện. Thiếu quan niệm toàn bộ, thiếu hiểu biết về qui trình có thể dẫn tới những sai sót nghiêm trọng về sau khi mọi thứ được giải quyết bằng viết mã  thay vì bằng phân tích và cân nhắc bù trừ. Sinh viên hiếm khi học đánh giá các đề tài thống nhất nền tảng về phát triển phần mềm, như quản lí độ phức tạp và phân bổ tài nguyên. Hậu quả của những vấn đề này là ở chỗ sinh viên tốt nghiệp theo chương trình truyền thống hiếm khi có kĩ năng để đánh giá công nghệ mới hay hiểu cách chúng có thể được áp dụng tốt nhất cho thực hành phát triển phần mềm hiện có. Chẳng hạn, nếu một phương pháp phát triển phần mềm mới đột nhiên trở nên phổ biến, làm sao người ta có thể biết tác động của nó sẽ là gì? Bên ngoài vấn đề không tránh khỏi này, ưu điểm thực của nó là gì? Cái gì cần bỏ để dùng nó?

Chương trình lập trình tốt hơn phải ít là tập các môn học độc lập mà là một phân hoạch được xác định tốt của tập có liên quan chặt chẽ các ý tưởng và quan niệm. Sinh viên phải được dạy về qui trình phát triển phần mềm, vòng đời, mô hình, kỉ luật và hiểu vấn đề trong công nghiệp. Quan niệm chung này sẽ giúp cho họ hiểu tại sao mọi sự xảy ra trong “thế giới thực” và cho phép họ dùng tập thích hợp các phương pháp, công cụ, tiến hành bù trừ giữa nhiều phương án. Ý tưởng chính về chương trình công nghệ nên mô phỏng môi trường nơi họ sẽ có khả năng vận hành ngay khi vào công nghiệp.

Sinh viên phải được dạy không chỉ dựa trên sách giáo khoa mà còn đọc thêm những ghi chép và bài báo từ nhiều nguồn. Nó cũng yêu cầu nỗ lực thêm của các thầy trong khoa, đặc biệt trong việc tạo điều kiện và hướng dẫn cho họ học những điều mới.

Tất nhiên, nó cũng yêu cầu sinh viên phải có động cơ cao và có phẩm chất. Mục đích tối thượng là phát triển cá nhân có kĩ năng cao những người có thể đóng góp ngay khi họ đi làm bằng tri thức kĩ thuật, kĩ năng được phát triển tốt, và chiều rộng kinh nghiệm điều chuẩn bị cho họ là người tốt nhất trong công nghiệp.

—-English version—-

Training for the 21st century

In the world of rapidly changing technology, software students must deal with new methods, new tools, new platforms, and understand software markets. This changing environment demands that software engineering education not only teaches current technologies, but also trains students have the capabilities to adapt quickly to new technologies, allowing them to continue to learn new technologies to meet the market demands.

Current education trains students mostly on existing technologies but it does not prepare them for future challenges. A better approach would be to provide students with skills, and analytical techniques that they can use throughout their career to evaluate new technologies and then successfully adapt them to their needs.

Today most trainings do not teach students problem-solving skills that go beyond the use of current technologies. Some are even still focusing on technologies that are no longer used in industry. Many schools do not give students opportunities to use new tools, new techniques. The reason given is they do not have budget or people to teach new things. However, many of these new techniques, new tools can be obtained easily from open sources, or download from the internet. In current training program, students are spending most of their time memorizing theories, learning programming languages rather than other needed skills. They are taught one single method to develop software rather than several ways. Students do not have a chance to experiment with new concept or follow a new approach. The reason given is the program is already full and therefore do not have enough time for new things.

To prepare students for the globalized world and changing markets. Students must be taught to go beyond the textbook to study complex topics based on real issues, such as understand customers requirements, integrating technologies, analyzing information from multiple sources etc. Of course, this type of training is more demanding than traditional book-based instruction, where students just memorize facts from a single source. Students must be taught to utilize several information sources and data from multiple customers, from the internet to find the best solution. To do encourage this new learning thinking, students must be encourage to read more, learn more and be exposed to more information rather than just focus on text books. If schools do not teach that, students must find a way to acquire this knowledge.

Today there are thousands of technical websites and tutorials on the internet. Students must learn to utilize them to broaden their own knowledge. By learn more, by having more information, students can reach across traditional disciplines and discover new way, new concepts where many can be interwoven together to solve problems. Students must build a broad based of knowledge, much broader than what they learn in school to stay competitive in this global market. They must spend time to investigate new concepts, new theories, new problems to expand their skills beyond the traditional education.

Traditionally, students are often taught to work alone but in the industry, they must work in team. Students must learn in team and work in team as much as possible. By working in team, they learn to collaborate, to share information, to manage their emotions, and resolving conflicts. By study collectively, each member of the team is responsible for certain subject then bring back to helping teammates to learn. This cooperative learning will help develops social and emotional skills, providing a valuable knowledge foundation for their lives as students, workers, family members, and citizens.

Assessment of students capability such as tests, exams, homeworks should be expanded beyond simple scores and provide a detailed profile of student strengths and weaknesses. Teachers, parents, and individual students can monitor academic progress and use the assessment to focus on areas that need improvement. Tests, exams, homeworks should be used as an opportunity for students to learn from their mistakes, rather than a punishment. Students should be allowed to relearn, retake the test, and improve their scores. The main issue here is learning, building capability and skills not eliminating.

Today, among many training programs there is a lack of integration among courses. It means that each course is isolated and its material tends to be compartmentalized. For example, a student who has taken a programming course may not understand how it fits within the life cycle and how the entire software development is done. Lacking the total concept. Lacking the understanding of process can lead to serious flaws later where everything is solved by coding rather by analyzing and trade-off. Students rarely learn to appreciate the fundamental unifying themes of software development, such as management of complexity and resource allocation. The consequence of these problems is that students graduating from traditional programs rarely have the skills to evaluate new technologies or understand how they can be best applied to existing software development practices. For instance, if a new software development method suddenly becomes popular, how can one tell what its impact will be? Beyond the inevitable issue, what are its true advantages? What needs to be given up in order to use it?

The better training program must be less a set of independent courses but a well defined partitioning of a closely related set of ideas and concepts. Students must be taught about the software development process, the life cycles, the models, the disciplines and understand issues in the industry. This general concept will help them to understand why things happen in the “real world” and allowing them to use appropriate set of methods, tools, conduct trade-offs between several alternatives. The main idea of a technology program should be to simulate the environment where they will be able to function immediately when go to the industry.

Students must be taught not only rely on textbooks but also on additional reading of notes and articles from multiple sources. It also requires additional faculty effort, particularly in facilitating and guiding them to learn new things.

Of course, it also requires students to be highly motivated and qualified. The ultimate goal is to develop highly skilled individual who can contribute immediately when they go to work with technical knowledge, well-developed skills, and a breadth of experience that prepares them to be the best in the industry.