17 May, 2021
Người phát triển phần mềm và kĩ sư phần mềm
Một sinh viên viết cho tôi: “Em bị lẫn lộn về các chức danh “người phát triển phần mềm” và “kĩ sư phần mềm”. Phần lớn mọi người đều bảo em chúng là một như những người khác nói chúng không là một. Xin thầy giải thích.”
Đáp: Việc của người kĩ sư phần mềm là người phát triển phần mềm là tương tự, nhưng họ cũng có những khác biệt. Người phát triển phần mềm là người làm việc trên qui trình phát triển phần mềm. Việc của họ bao gồm thiết kế, thực hiện, và kiểm thử “phần mềm”. Kĩ sư phần mềm là người thực hành về kĩ nghệ phần mềm. Họ áp dụng các nguyên lí của kĩ nghệ vào yêu cầu, thiết kế, phát triển, bảo trì, kiểm thử, và đánh giá về “hệ thống phần mềm”. Do đó việc của kĩ sư phần mềm có phạm vi lớn hơn và thường phức tạp hơn.
Phần lớn những người phát triển phần mềm đều làm việc trên phần mềm, chính là một “chương trình” nhưng các kĩ sư phần mềm làm việc trên hệ thống có bao gồm “cả phần cứng và phần mềm”. Mặc dầu cả hai đều có tham gia vào mọi pha của việc phát triển như yêu cầu, thiết kế, viết mã và kiểm thử nhưng người phát triển chỉ hội tụ vào phần mềm còn kĩ sư phần mềm hội tụ vào cả phần mềm và phần cứng, giao diện giữa chúng và cách tất cả chúng làm việc cùng nhau. Một thuật ngữ thông dụng khác là người phát triển thường làm “phần mềm riêng lẻ” nhưng người kĩ sư phần mềm làm việc trên “hệ thống phần mềm lớn, phức tạp” điều cũng có nghĩa là họ làm việc từ bắt đầu của hệ thống cho tới cuối.
—English version—
Software developer and Software Engineer
A student wrote to me: “I am confused on the titles “Software Developer” and “Software Engineer”. Most people told me they are the same but other said they are not. Please explain.”
Answer: The jobs of software engineers and software developers are similar, but they also have differences. A software developer is a person who works on the software development process. Their job includes designing, implementing, and testing the “software”. A software engineer is a practitioner of software engineering. They apply the principles of engineering to the requirements, design, development, maintaining, testing, and evaluation of the “software systems”. Therefore the job of a software engineer has much a bigger scope and often more complex.
Most software developers work on software, which is a “program” but software engineers work on software system which include “both hardware and software”. Although both get involved with all phases of the development such as requirements, design, code and test but developers only focus on the software where the software engineers focus on both software and hardware, the interface between them and how they all work together. Another common term is developers often work on “stand-alone software” but software engineers work on “large, complex software system” which also means they work from the beginning of the system to the end.