Sự phát triển của công nghệ thông tin trong ba mươi năm qua đã tạo ra thay đổi lớn trong nhiều công ti nhưng cũng đặt ra thách thức khi họ cần đảm bảo rằng người của họ có kĩ năng đúng để chuyển giao sản phẩm và dịch vụ có chất lượng.

Vài năm trước, hội tụ chính của công nghiệp công nghệ thông tin là giảm chi phí bằng cách khoán ngoài các việc cho các nước có lao động chi phí thấp nhưng ngày nay hội tụ chính dịch chuyển từ chi phí sang thu nhận kĩ năng. Khi các hệ thống phần mềm trở nên lớn hơn và phức tạp hơn, các kĩ năng cao hơn được cần tới bất kể chi phí. Phần mềm là cấu phần cốt yếu và duy nhất trong mọi doanh nghiệp và nó bành trướng toàn cầu qua ứng dụng của công nghệ internet. Có nhiều nghiên cứu tìm ra rằng các phần mềm lớn và phức tạp yêu cầu tri thức và kĩ năng nào đó mà đa số người phát triển phần mềm ngày nay không có. KHÔNG CÓ ĐỦ nguồn cung cấp người quản lí dự án có kinh nghiệm, người quản lí hệ thông tin, và kiến trúc sư hệ thống với tri thức chuyên gia lĩnh vực nào đó. Có thiếu hụt kĩ sư phần mềm được giáo dục và đào tạo thích hợp ở cả Mĩ, châu Âu VÀ Trung Quốc và Ấn Độ. Hiện thời, không có các chuẩn giáo dục được thiết lập cho các hệ thống lớn và phức tạp cho nên mọi sự tuỳ vào từng đại học và các công ti đào tạo tổ chức chương trình đào tạo riêng của họ.

Một thách thức then chốt là nhận diện các khía cạnh nào đó của kĩ nghệ phần mềm, là duy nhất cho các hệ thống phần mềm lớn và phức tạp. Chẳng hạn, các môn học có thể đề cập tới kĩ nghệ yêu cầu, kiến trúc hệ thống, thiết kế phần mềm, phương pháp luận phát triển, mô hình hoá và mô phỏng phần mềm, quản lí giao diện, quản lí dự án phần mềm, tích hợp hệ thống, an ninh phần mềm, bền vững hệ thống, và quản lí cấu hình. Không may là những khu vực này yêu cầu nhiều kinh nghiệm trong công nghiệp và các giáo sư hàn lâm điển hình có thể KHÔNG có kinh nghiệm để dạy và phần lớn các nhà chuyên môn công nghiệp lại quá bận rộn không dành được thời gian để dạy.

Khi công nghiệp công nghệ thay đổi nhanh chóng, người phát triển phần mềm không chú ý tới những thay đổi nhanh chóng này trong vài năm tới có thể thấy mình bị bỏ tụt lại sau. Với bành trướng của công nghệ thông tin trong mọi doanh nghiệp, người phát triển phần mềm phải siêng năng trong việc đánh giá những xu hướng và công nghệ này tác động thế nào lên việc làm của họ. Nếu họ không làm điều đó, họ có thể mất việc. Bộ phận phần mềm vận hành theo cách truyền thống của quản lí kết cấu nền và thông tin về căn bản sẽ bỏ qua xu hướng đang làm thay đổi ngành công nghiệp này cho tới khi quá chậm mới nhận ra thì không kịp nữa. Khi họ cố gắng bắt đuổi theo, họ sẽ phạm phải sai lầm, có lẽ với nhiều sai lầm và sẽ rất tốn kém.

Môi trường Công nghệ thông tin trung bình bây giờ phức tạp hơn nhiều so với vài năm trước đây và kĩ năng trung bình của người phát triển phần mềm đang thay đổi nhanh chóng. Ngày nay xu hướng là Enterprise 2.0, phần mềm xã hội, Ảo hoá, phần mềm như dịch vụ-Software as a Service (SaaS), tính toán mây, ứng dụng di động, an ninh và khoán ngoài v.v. Tất cả những thay đổi này đang xảy ra nhanh chóng nhưng ít người chú ý tới điều đó. Điều đã thường xảy ra là công ti mua phần mềm, người phát triển thực hiện nó và tất cả đều được thực hiện tại chỗ, trong cơ quan, nhưng ngày nay, công ti mua giấy phép về sản phẩm bán sẵn trên thị trường – Commercial-off-the-Shelves (COTS) rồi chuyên biệt nó, một số ứng dụng được khoán ra ngoài, nhiều kết cấu nền được đi thuê từ nhà cung cấp SaaS VÀ mọi thứ đều phải làm việc đúng và an ninh. Vai trò của người phát triển phần mềm đang trở nên ngày một nhiều tính chất của kiến trúc sư giải pháp, người tích hợp hệ thống, và người quản lí hệ thông tin hơn chỉ là người lập trình hay kiểm thử nhưng phần lớn các trường vẫn dạy lập trình và kiểm thử như chẳng cái gì đã thay đổi.

Trong hoàn cảnh hiện thời, các công ti có thể bị buộc phải lấy “cách tiếp cận gây ấn tượng” bởi vì với ngân sách giới hạn và cạnh tranh cao. Một cách tiếp cận có thể là khoán ngoài hoàn toàn hệ thông tin cho nước khác nơi họ có người với tri thức và kĩ năng. Cách tiếp cận khác có thể là nhanh chóng chuyển vào “Ảo hoá” và “tính toán mây” nơi nhà cung cấp sẽ tiếp quản nhiều chức năng công nghệ thông tin then chốt. Với toàn cầu hoá, những nhà cung cấp này KHÔNG nhất thiết phải ở cùng một nước với công ti. Cách tiếp cận này sẽ tạo ra những cơ hội mới cho một số nước nhưng cũng tạo ra khó khăn có ý nghĩa cho các nước khác. Chẳng hạn, vài tháng trước chính phủ Anh bắt đầu khoán ngoài khối lượng lớn công việc CNTT của chính phủ cho Ấn Độ và đặt nhiều người phần mềm Anh ra ngoài công việc. Không ai thậm chí nghĩ được rằng chính phủ sẽ làm cái gì đó đột ngột vậy nhưng khi đa số công nhân phần mềm của chính phủ bằng lòng và tin tưởng rằng việc làm của họ là an toàn, họ thậm chí không muốn học cái gì đó mới. Theo một báo cáo, một số người dành nhiều năm làm việc trong hệ thống chính phủ chỉ biết cách lập trình trong Fortran và Pascal trên máy tính lớn, họ thậm chí không biết cách dùng PC.

—-English version—-

Technology changes

The development of information technologies in the past thirty years have created significant changes in many companies but it also poses a challenge as they need to ensure that their people has the right skills to deliver quality products and services.

Few years ago, the main focus of the information technology industry is reducing costs by outsourcing works to lower labor cost countries but today the main focus shifts from costs to skills acquisition. As the software systems became larger and more complex, higher skills are needed regardless of the costs. Software is a unique and critical component in all businesses and it extends globally with the application of internet technologies. There were several studies findings that larger and complex softwares require certain knowledge and skills that a majority software developers today do not have. There are NOT ENOUGH supply of experienced project managers, Information Systems Managers, and system architects with certain domain expertise. There is a shortage of adequately educated and trained software engineers in the both U.S, Europe AND China and India. Currently, there are no established software education standards for large and complex systems so it is up to each university and training company to come up with their own training programs.

A key challenge is to identify certain aspects of software engineering that are unique to large and complex software systems. For example, courses that can address requirements engineering, system architect, software design, development methodology, software modeling and simulation, interface management, software project management, system integration, software security, system sustainment, and configuration management. Unfortunately, these areas require a lot of experiences in the industry and typical academic professors may NOT have experience to teach and most industry professionals are too busy to spend time teaching.

As the technology industry is changing rapidly, software developers who do not pay attention to these rapid changes in the next few years could see themselves left behind. With the expansion of information technologies in every business, software developers have to be diligent in assessing how these trends and technologies impact their jobs. If they don’t, they could be out of work. A software  department that operates in the traditional way of managing infrastructure and information will typically ignore the trends that changing the industry until it is too late. As they are trying to catch up, they will make mistake, probably a lot of mistakes and it will be very costly.

The average Information Technology environment is now more complex than few years ago and the average skills of software developer are changing fast. Today the trends are Enterprise 2.0, Social software, Virtualization, Software as a Service (SaaS), Cloud Computing, Mobile applications, Security and outsourcing etc. All theses changes are happening fast but few people are paying attention to it. It used to be that company buys software, developers implement it and it was all done in-house but today, company license Commercial-off-the-Shelves (COTS) then customized it, some applications are being outsourced, many infrastructures are rented from SaaS vendor AND everything must be working correctly and securely. The role of software developers is becoming more of a solution architect, a systems integrators, and an information systems managers than just programmers or testers but most schools are still teaching programming and testing like nothing has changed.

Under current conditions, companies may be forced to take a “Dramatic approach” because of limited budgets and high competitions. One approach could be completely outsource information systems to another countries where they have people with knowledge and skills. Other could be move quickly into “Virtualization” and “Cloud computing” where vendors will take over many key information technology functions. With globalization, these vendors are NOT necessary have to be in the same country as the company. These approach will create new opportunities to some countries but also create significant difficulty to others. For example, last months U.K government began to outsource significant amount of government IT works to India and put a lot of UK software people out of work. Nobody would even think that government would do something that dramatic but when a majority of government software workers are complacent and believe that their jobs are safe, they did not even want to learn something new. According to a report, some people who spent many years working in government systems only know how to program in Fortran and Pascal in Mainframe computers, they did not even know how to use a PC.