08 Jan, 2021
Kỹ năng kỹ nghệ phần mềm
Một người bạn cũ, cũng là một giáo sư khoa học máy tính đã hỏi tôi về tác động của cuộc khủng hoảng tài chính toàn cầu tới công nghiệp phần mềm.
Ông ấy lo nghĩ rằng sinh viên của mình có thể không kiếm được việc khi họ tốt nghiệp. Tôi bảo ông ấy rằng tôi nghĩ cuộc khủng hoảng hiện thời sẽ có tác động có ý nghĩa tới ngành công nghiệp phần mềm nhưng theo chiều hướng tốt hơn bởi vì nó sẽ loại bỏ các công ti không hiệu quả và tạo ra nhiều cơ hội cho các công ti được quản lí tốt. Liên quan tới việc sử dụng nhân công, việc làm trong kĩ nghệ phần mềm vẫn còn được xếp hạng ở năm nghề hàng đầu trong nhu cầu toàn cầu cho nên ông ấy không phải lo nghĩ. Giả định rằng sinh viên của ông ấy có kĩ năng tương xứng với nhu cầu của ngành công nghiệp này.
Ông ấy bảo tôi rằng ông ấy đã từng dạy Khoa học máy tính trong nhiều năm dựa trên cùng một giáo trình và ông ấy chẳng biết gì về nhu cầu công nghiệp phần mềm. Tôi giải thích cho ông ấy rằng tốc độ thay đổi công nghệ phần mềm là cực kì nhanh. Các ngôn ngữ lập trình mới được tạo ra hàng năm với những công cụ mới xuất hiện cứ sau vài tháng. Tốc độ thay đổi công nghệ này nghĩa là người làm phần mềm bị đối diện với nhu cầu liên tục học kĩ năng mới mọi lúc.
Ông ấy có vẻ ngạc nhiên: “Bây giờ sinh viên của tôi cần biết những kĩ năng mới nào vậy?” Tôi bảo ông ấy rằng có một số chủ đề mà giáo dục hiện thời thậm chí đã không nhắc tới như an ninh phần mềm, kiểm soát chất lượng, đo và cách đo, kiến trúc phần mềm, phương pháp phần mềm, và đánh giá và chuyển giao công nghệ. Những lỗ hổng này cần được lấp đầy nhanh chóng nếu sinh viên muốn làm việc trong các công ti toàn cầu như các kĩ sư phần mềm chuyên nghiệp.
Tôi cũng bảo ông ấy rằng do suy thoái kinh tế; phụ huynh rất lựa chọn việc đầu tư vào giáo dục cho con em mình. Họ muốn chắc rằng con họ sẽ có việc khi tốt nghiệp cho nên họ xem xét cẩn thận điều đại học phải cung cấp và chương trình nào sẽ có ích cho con em họ. Ở Mĩ, các đơn xin học vào các đại học hàng đầu đã tăng lên đáng kể trong vài năm qua nhưng nhiều trường nhà nước lại phải đương đầu với việc tuyển lựa thấp hơn. Khi cuộc khủng hoảng tài chính bắt đầu tác động vào chính phủ, ngân sách bị giảm đi. Tôi đã đọc trong báo chí rằng nhiều lớp ở đại học nhà nước đã bị cắt bỏ, và một số giáo sư đã phải thôi việc. Những điều này đang xảy ra khi trường học bắt đầu cắt giảm chi phí do ngân sách nhà nước cắt giảm. Bạn tôi rút ra cuốn sổ tay ghi chép và hỏi tôi về chủ đề mà sinh viên phần mềm cần học cho nên tôi chia sẻ với ông ấy nghiên cứu của tôi về xu hướng toàn cầu tại Đại học Carnegie Mellon.
Năm ngoái, năm 2007, tôi đã tiến hành một cuộc điều tra để xác định nhu cầu trong ngành công nghiệp phần mềm. Để làm nghiên cứu này, tôi đã gửi bảng hỏi tới trên 800 công ti phần mềm ở Mĩ, châu Âu, Australia, và châu Á. Tôi cũng đã mời 15 công ti có vai trò quan trọng trong ngành công nghiệp phần mềm như IBM, Microsoft, Oracle, SAP và phỏng vấn những người quản lí của họ để xác định nhu cầu hiện thời và tương lai của họ. Sau đây là kết quả nghiên cứu của tôi:
Các chủ đề người kĩ sư phần mềm cần biết giữa các năm 2009 tới 2019:
1) Phương pháp Agile (như SCRUM, Lập trình cực đoan v.v.).
2) Kiểm thử tự động
3) Anh ninh máy tính
4) E-business, đặc biệt B2B (doanh nghiệp với doanh nghiệp)
5) Phần mềm như dịch vụ (Saas)
6) SOA (Kiến trúc hướng dịch vụ)
7) EA (Kiến trúc doanh nghiệp)
8) (BPR ) Tái kĩ nghệ qui trình nghiệp vụ
9) Khai phá dữ liệu (data mining) và Thông minh doanh nghiệp (BI);
10) Nhà kho dữ liệu
11) SCM (Quản lí dây chuyền cung cấp)
12) ERP (lập kế hoạch tài nguyên công ti)
13) CRM (Quản lí tài nguyên khách hàng)
14) RUP (Qui trình thống nhất hợp lí – Rational Unified Process)
15) UML (ngôn ngữ mô hình hoá thống nhất – unified modeling language)
16) Trường hợp sử dụng
17) OLAP (Xử lí phân tích trực tuyến On-line analytical processing)
18) GUI (Giao diện người dùng đồ hoạ – Graphical user interface)
19) QFD (Triển khai chức năng chất lượng – Quality function deployment)
20) RAD (Phát triển ứng dụng nhanh – Rapid application development)
21) Ảo hoá
22) Tính toán mây
23) Tích hợp dây chuyền cung cấp Supply-chain integration
24) E-Government chính phủ điện tử
25) Doanh nghiệp & Canh tân
Bạn tôi xem lại sổ ghi chép của ông ấy và hỏi: “Nhiều chủ đề tương đối mới. Làm sao giáo sư đại học hiện hành được với những công nghệ mới nhất này? Làm sao họ có thể học những khái niệm mới này đủ tốt để hiệu quả trong việc giảng dạy?
Tôi bảo ông ấy rằng tri thức công nghệ không phải là cái gì đó người ta chỉ học một lần mà phải liên tục học cả đời hay là người học cả đời. Do sự thay đổi nhanh chóng trong lĩnh vực công nghệ, tri thức đã trở thành yêu cầu bản chất cho mọi nhà chuyên môn. Là giáo sư tại Đại học Carnegie Mellon, tôi phải tham dự một số seminar, lớp tập huấn hàng năm để giữ được hiện hành với thay đổi công nghệ. Tôi phải tiến hành nghiên cứu và đã công bố bài báo hàng năm về một số chủ đề và có tri thức về một số lĩnh vực công nghệ. Chúng tôi phải duy trì hiện hành để cho sinh viên của mình có thể duy trì hiện hành được.
Bạn tôi đồng ý: “Đó là điều tốt cho các giáo sư bởi vì đó là việc của họ nhưng với các kĩ sư phần mềm và người quản lí thì sao, làm sao họ có thể giữ tri thức của mình được hiện hành? Có quá nhiều thứ phải học và gần như mọi người đều có lượng thời gian giới hạn có thể dùng được?”
Tôi bảo ông ấy rằng không phải mọi chủ đề đều thích hợp cho mọi dự án. Điều quan trọng đối với người kĩ sư phần mềm và người quản lí là biết đủ về từng chủ đề để cho họ có thể lựa chủ đề thích hợp cho các dự án riêng. Trong thời đại thay đổi nhanh chóng, họ cần cập nhật kĩ năng của mình bằng việc tham dự các khoá huấn luyện ngắn hạn như các seminar, tập huấn đặc biệt để cho họ có thể ra quyết định đúng. Đó là lí do tại sao tôi nghĩ mọi nhà chuyên môn phần mềm cũng phải là người học cả đời. Trong thị trường toàn cầu cạnh tranh cao, khi các công ti không hiệu quả bị loại đi, mọi người với kĩ năng lạc hậu cũng sẽ thấy khó duy trì được vị trí của mình.
—–English ——
Software Engineering skills
An old friend, also a Computer Science professor asked me about the impact of the global financial crisis to the software industry. He is worrying that his students may not be able to get jobs when they graduated. I told him that I think the current crisis will have significant impact to the software industry but to the better because it will eliminate inefficient companies and create many opportunities for well managed companies. Regarding employment, software engineering jobs is still rated on the top five in global demand so he should not have to worry. Assume that his students have the skills that match the demands of the industry.
He told me that he has been teaching Computer Science for many years based on the same curriculum and he did not know anything about software industry needs. I explained to him that the rate of change of software technology is extremely fast. New programming languages are created every year with new tools appear every few month. This fast rate of technology change means that software people are faced with a continuing need to learn new skills all the time.
He seemed surprised:” What are the new skills that my students need to know now?” I told him that there were number of topics that current education had not even mention such as software security, quality control, measurements and metrics, software architecture, software methods, and technology evaluation and transfer. These gaps need to be quickly filled if students want to work in global companies as professional software engineers.
I also told him that due to the economic recession; parents are very selective on the investments in education for their children. They want to make sure that their children will have jobs when they graduated so they carefully review what university has to offer and what programs would benefit their children. In the U.S, applications to admission in top universities had increased significantly in the past few years but many state schools encountered lower enrollment. As the financial crisis began to impact government, budgets were reduced. I have read in newspapers that many classes in state university were cancelled, and some professors were laid off. These things are happening as schools begin to cut costs due to state budget cuts. My friend took out his note and asked me about topics that software students need to learn so I shared with him about my research in global trends at CarnegieMellonUniversity.
Lat year in 2007, I conducted a survey to determine the needs in software industry. For this research, I sent out questionnaires to over 800 software companies in U.S, Europe, Australia, and Asia. I also visited 15 companies that have important roles in software industry such IBM, Microsoft, Oracle, SAP and interview their managers to determine their current and future needs. Following is the results of my research:
Topics Software Engineers need to learn between 2009 to 2019:
1) Agile method (i.e. SCRUM, Extreme Programming etc.).
2) Automated Testing
3) Computer Security
4) E-business, especially B2B (business to business)
5) Software as a Service (Saas)
6) SOA (Service-Oriented Architecture)
7) EA (Enterprise Architecture)
8) (BPR )Business Process Reengineering
9) Data mining and Business Intelligence;
10) Data warehouses
11) SCM (Supply Chain Management)
12) ERP (Enterprise Resource Planning)
13) CRM (Customer Resource Management)
14) RUP (Rational Unified Process)
15) UML (unified modeling language)
16) Use Cases
17) OLAP (On-line analytical processing)
18) GUI (Graphical user interface)
19) QFD (Quality function deployment)
20) RAD (Rapid application development)
21) Virtualization
22) Cloud computing
23) Supply-chain integration
24) E-Government
25) Entrepreneurship & Innovation
My friend reviewed his note and asked: “Many topics are relatively new. How can university professors stay current with these latest technologies? How can they learn these new concepts well enough to be effective in their teachings?
I told him that technology knowledge is not something you learn only once but must continue to learn all your life or be a lifelong learner. Due to the fast changing in technology area, knowledge has become an essential requirement to all professionals. As professor at CarnegieMellonUniversity, I have to attend number of seminars, workshops every year to keep current with technology changes. I have to conduct research and published papers every year in certain topics and have knowledge on some technological fields. We have to stay current so our students can stay current.
My friend agreed:” That is good for professors because that is their jobs but what’s about software engineers and managers, how can they keep their knowledge current? There are so many things to learn and most people have limited amount of time that can be spent?
I told him that not every new topic is appropriate for every project. It is important for software engineers and managers to know enough about each topic so they can select the appropriate one for specific projects. In the fast changing time, they need to update their skills by attending short course training like special seminars, workshops so they can make the right decision. That is why I think every software professional must also be lifelong learners. In the highly competitive global market, as inefficient companies are being eliminated, people with obsolete skills will also find it difficult to maintain their position.