25 May, 2021
Kĩ nghệ phần mềm ngày nay
Theo một báo cáo công nghiệp năm 2013, Kĩ nghệ phần mềm ngày nay là “bằng cấp nóng nhất” với nhu cầu cao nhưng không có đủ người để lấp vào mọi vị trí mở ra. Báo cáo này nói rằng lí do cho việc thiếu hụt là do thiếu sinh viên học về kĩ nghệ phần mềm. Ngày nay với mọi kĩ sư phần mềm mà các đại học giáo dục có lẽ có ba tới bốn vị trí mở ra. Nhu cầu là cao tới mức các công ti phần mềm không chờ đợi sinh viên tốt nghiệp mà đưa ra đề nghị cho họ sáu tháng trước ngày tốt nghiệp.
Ngày nay phần lớn các đại học vẫn cung cấp đào tạo Khoa học máy tính chứ không phải Kĩ nghệ phần mềm. Khoa học máy tính bao gồm các khía cạnh lí thuyết và lập trình như truyền và thao tác dữ liệu dùng các ngôn ngữ lập trình. Hội tụ của đào tạo Khoa học máy tính là trong việc áp dụng toán học và thuật toán dùng các ngôn ngữ lập trình. Người tốt nghiệp Khoa học máy ính được đào tạo nhiều trong lập trình và phát triển thuật toán.
Kĩ nghệ phần mềm có liên quan tới mọi khía cạnh của sản xuất phần mềm từ các pha sớm cho tới pha bảo trì phần mềm. Hội tụ của đào tạo Kĩ nghệ phần mềm là trong cách tiếp cận thực hành tới phát triển, vận hành, và bảo trì phần mềm. Người tốt nghiệp kĩ nghệ phần mềm là rất nghiêm chỉnh trong trách nhiệm của họ về chất lượng, tính đúng đắn và hiệu năng của nỗ lực của họ.
Vì tăng trưởng của công nghệ trong doanh nghiệp dẫn tới đòi hỏi nhiều hơn về công nhân có kĩ năng, các công ti ưa thích thuê người tốt nghiệp kĩ nghệ phần mềm hơn là khoa học máy tính vì kĩ năng của họ rộng hơn. Một nhà phân tích công nghiệp viết: “Không thành vấn đề những người tốt nghiệp kĩ nghệ phần mềm đang làm việc trong công nghiệp nào, chưa bao giờ có thời gian kích động hơn ngày nay vì mọi thứ trong nhà, xe, văn phòng và khu vực công cộng bây giờ đều được kiểm soát bằng phần mềm. Mọi người mang theo điện thoại thông minh, máy tính bảng trong túi của họ và dùng nó ở mọi nơi. Một phần ba gia đình ở Mĩ được kết nối bằng băng rộng với Internet, nhiều vật dụng gia đình như máy điều nhiệt, máy giặt, bếp lò, ti vi, máy nghe nhạc v.v tất cả đều được điều khiển bởi phần mềm. Với nhu cầu về nhiều phần mềm hơn đưa tới nhu cầu cao về kĩ sư phần mềm.”
Theo một báo cáo của Hội quốc gia các đại học, bẩy trong mười bằng cấp được trả lương cao nhất trong năm 2013 là trong kĩ nghệ và kĩ nghệ phần mềm có lương cao nhất. Một nhà phân tích doanh nghiệp viết: “Điều này không ngạc nhiên vì có rất nhiều cạnh tranh trong các công ti về người tốt nghiệp kĩ nghệ phần mềm. Trong mười năm, kĩ nghệ dầu hoả là bằng cấp được trả lương cao nhất nhưng bắt đầu từ 2013, nhu cầu đã thay đổi và kĩ nghệ phần mềm bây giờ là bằng cấp được trả lương cao nhất trong mọi lĩnh vực học tập. Các bằng cấp kĩ nghệ khác trong số 10 kĩ nghệ hàng đầu là kĩ nghệ hoá học, kĩ nghệ hàng không, kĩ nghệ cơ học, kĩ nghệ dân sự, kĩ nghệ điện tử và kĩ nghệ viễn thông. Tiếp sau các bằng cấp kĩ nghệ này là khoa học máy tính, quản lí hệ thông tin và quản lí hậu cần. Cục thống kê lao động của Bộ lao động Mĩ dự báo tăng trưởng 30 phần trăm cho các việc làm kĩ nghệ phần mềm mãi cho tới năm 2020, điều cao hơn nhiều so với tỉ lệ tăng trưởng cho mọi nghề khác. Với ghi danh vào các chương trình của Mĩ trong phần mềm và các lĩnh vực kĩ nghệ khác chỉ hơi tăng lên, các trường Mĩ sẽ không có khả năng giữ được cùng nhịp với nhu cầu của công nghiệp và đó là lí do tại sao công nghiệp đang gây sức ép lên quốc hội Mĩ để thay đổi luật di trú để cho phép nhiều kĩ sư được giáo dục đại học tới và làm việc ở Mĩ.
Câu hỏi chung trong các sinh viên đại học là: “Kĩ năng nào đang có nhu cầu cho kĩ sư phần mềm ngày nay?” Một số người tin các ngôn ngữ lập trình như Java, Python, PHP, HTML5 và Ruby on Rails là nóng nhưng sự kiện là các ngôn ngữ lập trình có “khoảng sống ngắn” vì công nghệ thay đổi nhanh chóng. Đây là lí do tại sao người tốt nghiệp Khoa học máy tính thường được biết tới là rất giỏi trong lập trình lại không được chuộng bởi các công ti hàng đầu vì ngôn ngữ không thành vấn đề mấy. Khi công nghệ thay đổi, nhu cầu thay đổi, ngôn ngữ cũng thay đổi và có thể không có nhu cầu về kĩ năng lập trình đặc thù thêm nữa. Đó là lí do tại sao nhiều công ti đang tìm thuê các kĩ sư phần mềm vì họ cân bằng hơn, có tri thức toàn diện, và đào tạo của họ yêu cầu họ sẵn sàng học những điều mới.
Thay đổi này đã phản ánh vào trong bài kiểm tra mà các công ti công nghệ yêu cầu các ứng cử viên phải hoàn thành trong cuộc phỏng vấn việc làm. Một quan chức điều hành của một công ti phần mềm lớn nói: “Ngày nay phần lớn những người tốt nghiệp có giáo dục đại học có thể viết mã, cho nên nó không còn là yếu tố mấu chốt nữa. Điều chúng tôi cần là người suy nghĩ phê phán, người tốt nghiệp có thể hiểu vấn đề doanh nghiệp thế giới thực và có khả năng giải quyết vấn đề đó. Chẳng hạn, chúng tôi đòi hỏi người xin việc lấy một đặc tả mà yêu cầu họ viết ra một app đầy đủ chức năng có giao diện với một API ngoài. Đó là cách tốt cho chúng tôi đo năng lực giải quyết vấn đề của họ và liệu họ có là người suy nghĩ phê phán và phân tích không.”
Các công ti công nghệ coi yếu tố thuê người hàng đầu là khả năng giải quyết vấn đề và yếu tố thứ hai là khả năng trao đổi. Một người quản lí cấp cao nói: “Phần mềm là vấn đề trao đổi, KHÔNG phải là vấn đề lập trình. Đó là lí do tại sao chúng tôi chỉ thuê những kĩ sư phần mềm bởi vì đào tạo của họ bao gồm các kĩ năng mềm như lãnh đạo, làm việc tổ, thương lượng và trao đổi. Kĩ sư phần mềm bao giờ cũng làm việc trong tổ nơi nhiều sinh viên khoa học máy tính viết mã chỗ cô lập. Làm việc tổ là yếu tố then chốt của chương trình kĩ nghệ phần mềm. Mọi thành viên tổ đều phải nói với nhau và cộng tác trên dự án để đạt tới mục đích chung. Kĩ năng trao đổi tốt giúp cho tổ nhận diện các chướng ngại và làm việc cùng nhau để vượt qua chúng. Có lẽ điều quan trọng nhất là khả năng cho kĩ sư phần mềm hiểu các qui trình và nhu cầu nghiệp vụ của khách hàng và kĩ năng này không được dạy trong chương trình khoa học máy tính.”
Ngày nay tự động hoá và robotics là hai miền then chốt trong khu vực chế tạo và chúng cần nhiều kĩ sư phần mềm. Kĩ sư phần mềm có thể lấy điều đang có như qui trình con người, với con người ra quyết định và tự động hoá nó bằng việc tổ chức nó thành qui trình do phần mềm kiểm soát. Chương trình kĩ nghệ phần mềm cũng hội tụ vào nhiều khu vực miền từ doanh nghiệp tới công nghiệp điều cho sinh viên một phạm vi rộng hơn vì nhiều người sẽ viết các ứng dụng phần mềm trong các khu vực này. Chương trình kĩ nghệ phần mềm dạy họ về vòng đời phát triển, kiểm soát phiên bản, kiểm thử đơn vị và cách tạo ra hệ thống có thể đổi qui mô được và có hiệu năng cao điều chính là cách mọi thứ được thực hiện trong thế giới thực.
Ngày nay các công ti kĩ nghệ phần mềm không dựa vào bằng cấp nữa mà yêu cầu thi để chứng tỏ các kĩ năng kĩ thuật và giải quyết vấn đề. Một người quản lí giải thích: “Vì mọi người tốt nghiệp đều muốn làm việc tại Google, Facebook, Amazon hay Microsoft và kiểm tra của họ thực sự khó để chọn ra chỉ người giỏi nhất. Trong trường hợp này, người tốt nghiệp kĩ nghệ phần mềm có cơ hội tốt hơn vì họ được đào tạo trong giải quyết vấn đề và làm việc trong tổ. Lập trình là một phần nhỏ của kiểm tra vì các công ti này mong đợi người xin việc tốt nghiệp từ đại học có thể viết được mã rồi.”
—English version—
Software Engineering today
According to a 2013 industry report, today Software Engineering is the “Hottest degree” with the highest demand but does not have enough people to fill all opening positions. The report stated that the reason for the shortage is the lack of students studying software engineering. Today for every software engineer that universities educate there are probably three to five positions opening. Demand is so high that software companies do not wait for students to graduate but make offers to them six months before graduation date.
Today most universities are still offering Computer Science training not Software Engineering. Computer Science involves in the theories and programming aspects such as the transfer and manipulation of data using programming languages. The focus of Computer Science training is in the application of mathematics and algorithms using programming languages. Computer science graduates are trained intensively in programming and algorithms development.
Software Engineering is concerned with all aspects of software production from the early phases through to the maintenance phase of the software. The focus of Software Engineering training is in the practical approach to the development, operation, and maintenance of software. Software engineering graduates are very serious in their responsibility for quality, correctness, and performance of their efforts.
As the growth of technology in business drives more demand for skilled workers, companies prefer to hire software engineering over computer science graduates since their skills are broader. An industry analyst wrote: “No matter what industry software engineering graduates are working in, there has never been an exciting time than today because everything in the house, cars, offices, and public areas is now controlled by software. People carry smartphones, tablets in their pockets and use it everywhere. A third of homes in the U.S. are connected by broadband to the Internet, many household items such as thermostat, washing machines, kitchens, TV, music players etc. are all controlled by software. With demand for more software comes high demand for software engineers.”
According to a report by the National Association of Colleges, seven of the ten highest paid degrees in 2013 are in engineering and software engineering has the highest salary. A business analyst wrote: “This is not surprising since there is a great deal of competition among companies for software engineering graduates. For the past ten years, petroleum engineering is the highest-paid degree but beginning in 2013, demand has changed and software engineering is now the highest-paid degree among all field of study. Other engineering degrees among the top 10 are chemical engineering, aerospace engineering, mechanical engineering, civil engineering, electronics engineering and telecommunications engineering. Next to these engineering degrees are computer science, information systems management and logistics management. The U.S. Department of Labor’s Bureau of Labor Statistics predicts a 30 percent growth rate for software engineering jobs through 2020, which is much higher than the growth rate for all other occupations. With enrollments in U.S. programs in software and other engineering fields only increasing slightly, U.S. schools will not be able to keep pace with industry demand and that is why the industry is pressuring U.S congress to change immigration laws to allow more college educated engineers to come and work in the U.S.
A common question among college students is: “What skills are in demand for today’s software engineers? Some people believe programming languages such as Java, Python, PHP, HTML5 and Ruby on Rails are hot but the fact is programming languages have a “short lifespan” as technology changes quickly. This is why Computer Science graduates who often known as very good in programming are not in favor by top companies because languages do not matter that much. When technology changes, demand changes, language also changes and there may not be a need for particular programming skill anymore. That is why many companies are looking to hire software engineers because they are more balanced, have a comprehensive knowledge, and their training requires them to ready to learn new things.
This change has reflected in the test that technology companies are asking their applicants to complete during the job interviews. An executive of big software company said: “Today most college educated graduates can write code, so it is no longer a critical factor. What we need are critical thinkers, graduates who can understand real-world business problem and be able to solve that problem. For example, we ask applicants to take a specification that requires them to write a fully functioning app that interfaces with an external API. It is a good way for us to measure their problem-solving capabilities and whether they’re a critical and analytical thinker.”
Technology companies consider the top hiring factor is the ability to solve problem and the second factor is the ability to communicate. A senior manager said: “Software is a communication problem, NOT a programming problem. That is why we only hire software engineers because their training includes soft-skills such as leadership, teamwork, negotiations and communication. Software engineers always work in team where many computer science students write code in isolation. Teamwork is a key element of software engineering program. Every team member must talk to each other and collaborate on projects in order to achieve the common goal. Good communication skills help teams to identify obstacles and work together to overcome them. Perhaps the most important is the ability for a software engineer to understand customer’s business processes and needs and this skill is not taught in computer science program.”
Today automation and robotics are two key areas in the manufacturing sector and they need more software engineers. A software engineer can take what exists as a human process, where a human is making decisions and automate it by organize it into a process control by software. The software engineering program also focuses on several domain areas from business to industry which give students a broader scope since many will write software applications in these areas. The software engineering program taught them about development life cycle, version control, unit testing and how to produce systems that are scalable and high performance which are how things are done in the real world.
Today software engineering companies do not rely on degree anymore but require an exam to demonstrate technical and problem-solving skills. A manager explains: “Since every graduate wants to work at Google, Facebook, Amazon or Microsoft and their tests are really difficult to select only the best. In this case, software engineering graduates have better chance since they are trained in solving problems and working in team. Programming is a small part of the test as these companies expect that applicants who graduate from college can write code.”