24 Jun, 2021
Kĩ nghệ phần mềm
Theo một báo cáo mới năm 2014, Kĩ nghệ phần mềm là một trong những việc làm tốt nhất trên thế giới ngày nay. Kĩ sư phần mềm được lương cao, ích lợi tốt chỉ với bốn năm đại học khi so sánh với bác sĩ y khoa người cần tám năm ở trường nhưng làm chỉ được hơn vài nghìn đô la.
Kĩ sư phần mềm là thuật ngữ rộng mô tả những người phát triển và bảo trì phần mềm. Điều này bao gồm các vị trí như người lập trình, người kiểm thử, người phát triển, người thiết kế, kiến trúc sư, người phân tích v.v. Ngày nay phần mềm có ở mọi nơi và điều khiển nhiều thứ từ máy tính văn phòng tới máy móc trong cơ xưởng, từ websites tới điện thoại thông minh cho nên nhu cầu về kĩ sư phần mềm có kĩ năng là cao ở mọi nước và số sinh viên đại học ghi danh vào lĩnh vực phần mềm bắt đầu tăng lên nhưng xu hướng này trong phần mềm cũng đang thay đổi từ khái quát hoá sang chuyên môn hoá.
Một nhà phân tích công nghiệp giải thích: “Thường thì phần mềm là về viết mã nhưng khi nhu cầu này tăng lên, phần mềm trở nên lớn hơn, phức tạp hơn cho nên viết mã là không đủ. Kĩ sư phần mềm phải có kĩ năng trong toàn thể vòng đời phát triển phần mềm, từ yêu cầu tới bảo trì, và đặc biệt trong khu vực hay công nghệ nào đó. Ngày nay số các công nghệ đang thay đổi nhanh chóng cho nên người lập trình không còn có thể viết mã được cho mọi loại phần mềm mà bạn phải chuyên môn hoá trong khu vực đặc biệt. Bạn có thể hoặc là người phát triển web, người phát triển app di động, người phát triển phần mềm nhúng, hay người phát triển ứng dụng doanh nghiệp nhưng không phải tất cả vì các khu vực này yêu cầu nhiều tri thức chuyên sâu trong công nghệ đặc biệt. Ngày nay sinh viên đại học phải hội tụ vào khu vực hay công nghệ đặc biệt để xây dựng tri thức chuyên sâu hơn là người khái quát hoá vì việc làm đang thay đổi, ngành công nghiệp đang thay đổi và nhu cầu cũng đang thay đổi. Vài năm trước nếu bạn biết một ngôn ngữ lập trình, bạn có thể dễ dàng kiếm được việc làm nhưng ngày nay bạn phải chuyên môn hoá trong một khu vực đặc thù. Chẳng hạn biết lập trình Java là không đủ mà bạn cũng phải biết các nền đặc biệt như Android, IOS, hay Window để làm việc trong phát triển app di động. Bạn cần biết Objective C và IOS để làm việc trong ứng dụng di động Apple; hay JavaScript và PHP để làm việc trong khu vực phát triển Web v.v. Điều đó nghĩa là đại học bây giờ phải cung cấp đào tạo trong nhiều khu vực thay vì chỉ dạy ngôn ngữ lập trình tổng quát.”
Ngày nay tính toán mây đã làm thay đổi rất nhiều bộ mặt công nghệ thông tin vì các công ti đang chuyển mọi thứ lên mây. Thay vì mua phần cứng, phần mềm, thiết lập các trung tâm dữ liệu mà làm gia tăng chi phí vận hành, các công ti có thể để các nhà cung cấp mây làm mọi công việc kĩ thuật và thuê dịch vụ với chi phí tương đối thấp cho việc sử dụng. Do đó những công việc phần mềm chung như lập trình chung, cài đặt phần mềm, cập nhật phần mềm và bảo trì hệ thống không còn được cần tới vì chúng có thể được thực hiện bởi nhà cung cấp Tính toán mây. Điều đó cũng có nghĩa là những công ti nhỏ có thể có được cùng mức dịch vụ trong mây như các công ti lớn cho nên họ có thể cạnh tranh nhanh chóng và công bằng. Điều đó cũng có nghĩa là không công nhân nào sẽ phải được chuyên môn hoá trong khu vực đặc thù hay sẽ có ít việc làm hơn cho họ. Vấn đề then chốt ở đây là có phần mềm cho khách hàng nhanh chóng nhất có thể được để cho bên cạnh các kĩ năng kĩ thuật, người kĩ sư phần mềm phải có khả năng làm việc tốt với người dùng để hiểu nhu cầu của họ. Bằng việc có kĩ năng mềm, người kĩ sư phần mềm có thể phát triển phần mềm đúng mà người dùng sẽ dùng. Điều này cũng có nghĩa là đào tạo đại học cũng phải bao gồm các kĩ năng mềm như trao đổi, trình bày, lắng nghe, cộng tác, làm việc tổ, lãnh đạo và quản lí thời gian v.v. Bằng việc có những kĩ năng mềm này, người kĩ sư phần mềm sẽ chắc rằng điều mà khách hàng diễn đạt về nhu cầu là điều thực tế được xây dựng.
—English version—
Software Engineering
According to a new 2014 report, Software Engineering is one of the best jobs in the world today. Software Engineers get high pay, good benefits for just four years of college as compare with Medical doctors who need eight years of schooling but making only a few thousand dollars more.
Software engineer is a broad term that describes people who develop and maintenance software. This includes positions such as programmers, testers, developers, designers, architects, analysts etc. Today software is everywhere and control many things from office computers to factory’s machines, from websites to smartphones so the demand for skilled software engineers is high in every country and the number of college students enrolling in software fields begin to increase but the trend in software is also changing from generalization toward specialization.
An industry analyst explained: “It used to be that software is about writing code but as the needs increase, software is getting larger, more complex so writing code is not enough. Software Engineers must have skills in the entire development lifecycle, from requirements to maintenance, and specialize in certain area or technology. Today the number of technologies is changing quickly so it is no longer possible to be a programmer to write code for all types of software but you must specializing in specific area. You can either be a web developer, a mobile app developer, embedded software developer, or enterprise application developer but not all because these areas require more in depth knowledge in specific technology. Today college students must focus on specific area or technology to build a deeper knowledge rather than be a generalist because the jobs are changing, the industry is changing and the needs are changing too. Few years ago if you know one programming language, you could easily get a job but today you must specialize in a particular area. For example knowing Java programming is not enough but you must also know specific platforms such as Android, IOS, or Window to work in mobile app development. You need to know Objective C and IOS to work in Apple mobile application; or JavaScript and PHP to work in Web development area etc. It means university must now provide trainings in several areas rather than just teach general programming language.”
Today cloud computing has change information technology dramatically as companies are moving everything to the cloud. Instead of buying hardware, software, establish data center which add to operation costs, companies can let cloud computing provider to do all the technical works and rent services with relatively low per usage. Therefore generic software works such as general programming, installing software, updating software and system maintenance are no longer needed because they can be done by Cloud computing provider. It also means small companies can get the same level of service in the cloud as big companies so they can compete quickly and fairly. It also means either workers will have to be specialized in particular area or there will be fewer jobs for them. The key issue now is getting software to customers as quickly as possible so beside technical skills, software engineers must be able to work well with users to understand their needs. By having soft skills, software engineers can develop the right software that users will use. This also means that university’s training must also include soft skills such as communication, presentation, listening, collaboration, teamwork, leadership and time management etc. By having these soft skills, software engineers will make sure that what customer’s expression of need is what actually gets built.