Sự khác nhau giữa Developer, Programmer và Computer Scientist

Thứ Ba, 07-06-2016
Trước đây mình cũng đi code được một thời gian khá lâu, cũng làm qua cái này cái khác, mặc dù không phải là pro cho lắm. Đôi khi mình cũng không biết mình thuộc thể loại gì nữa. Hí hí… Đôi khi cũng thắc mắc sự khác nhau giữa Developer, Programmer, Computer Scientist, Software Engineer?

Sự khác nhau giữa Developer, Programmer và Computer Scientist

 

 

Trước đây mình cũng đi code được một thời gian khá lâu, cũng làm qua cái này cái khác, mặc dù không phải là pro cho lắm. Đôi khi mình cũng không biết mình thuộc thể loại gì nữa. Hí hí… Đôi khi cũng thắc mắc sự khác nhau giữa Developer, Programmer, Computer Scientist, Software Engineer?

Thì hôm nay mình xin chia sẻ một số thông tin sưu tầm dưới đây có thể giải đáp được phần nào đó thắc mắc của mình.

Người ta thường sử dụng ba thuật ngữ:“Developer”,“Programmer”,“Computer Scientist”, "Software Engineer"thường xuyên và chúng có thể hoán đổi cho nhau hoàn toàn. Trong tiếng Việt thì ai cũng nghĩ mình là Lập Trình Viên nhưng chỉ người trong ngành mới biết rõ mình thuộc thể loại nào. Tuy nhiên không phải ai cũng chỉ là một trong ba loại này.

  • Computer Scientist: (Nhà nghiên cứu khoa học máy tính)

Họ viết code nhưng không nhất thiết phải là những đoạn code tuyệt vời được tổ chức bài bản nhưng chắc chắn là code chạy được. Chủ yếu họ muốn dùng nó để chứng minh một điều gì đó. Một nhà nghiên cứu khoa học máy tính cũng giống như một nhà toán học hay như một nhà kĩ thuật, khả năng giao tiếp không cần phải quá tốt. Bù lại, họ có một nguồn kiến thức rộng trong thể lĩnh vực IT nói chung, nhưng lại đi vào chuyên sâu ở một khía cạnh rất nhỏ mà họ nghiên cứu. Họ thường tập trung vào những việc có liên quan đến lĩnh vực họ nghiên cứu trong thời gian làm việc của mình.

  • Programmer (Lập trình viên)

Lập trình viên (LTV) là những người có khả năng viết code đẹp. Đối với họ, code đẹp, được tổ chức tốt và không có lỗi là vấn đề tối quan trọng, nhưng việc đoạn code đó phải thực hiện đúng chức năng còn quan trọng hơn. Ngoài ra, họ cần có một số hiểu biết toán học nhất định, tuy đôi khi nó cũng không cần thiết. Lập trình viên không giống như người nghiên cứu khoa học máy tính, họ luôn muốn biết nhiều giải pháp tốt cho một vấn đề nhưng không cần chứng minh giải pháp nào là tốt nhất. Khả năng giao tiếp và cách làm việc trong nhóm là điều cần thiết nhưng không bắt buộc phải có. Ngoài kiến thức về lập trình, những hiểu biết về quy trình làm phần mềm cũng là điều cần thiết đối với họ. Một số lập trình viên thường làm những phần mềm để phục vụ nhu cầu cá nhân nếu thấy hứng thú trong thời gian rảnh.

  • Developer (Nhà phát triển phần mềm)

Chắc chắn rằng các Developer có khả năng viết code và tổ chức code trong chương trình một cách bài bản.

Đối với những người này, kĩ năng toán học không bắt buộc, tuy vậy khả năng giao tiếp và làm việc nhóm là điều khá quan trọng. Nói một cách khác họ có thể được gọi là “người cái gì cũng biết” vì không chuyên sâu trong một lĩnh vực nào. Họ là những chuyên gia đi tìm các giải pháp để giải quyết vấn đề. Trong thời gian cá nhân, họ thích nghiên cứu hoàn thiện những phần mềm mới để thay thế những cái họ nghĩ là chưa tốt. Đôi khi họ cũng thích tham gia vào các hoạt động không liên quan đến lĩnh vực CNTT và lập trình.

  • Software Engineer (Kỹ sư phần mềm)

Nôm na nó giống Developer, nhưng vẫn có 1 chút khác biệt. Thông thường những Software Engineer sẽ biết nhiều ngôn ngữ và lĩnh vực hơn Developer, còn Developer thì chuyên sâu vào 1 hay 1 số lĩnh vực công nghệ chủ yếu nào đó mà họ quan tâm và đam mê.

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.

Tóm lại

Ở đây chúng ta cần hiểu rằng không có loại nào là hoàn hảo cũng như không có loại nào là tốt. Có thể nói đây là các khía cạnh khác nhau trong nghề làm phần mềm. Một số tố chất đặc biệt sẽ dễ nhận thấy đối với người này nhưng lại khó thấy trong loại khác, nhưng không có nghĩa là làm lập trình viền thì không thể nghiên cứu khoa học.

Bạn hoàn toàn có thể vừa làm một người phát triền phần mềm tuyệt vời vừa là một người có skill lập trình siêu đẳng (mặc dù như vậy sẽ khá khó khăn vì phải tập trung vào nhiều thứ). Nếu bạn có cả 4 tố chất trên thì xin chúc mừng, bạn có thể là ngôi sao sáng trong công ty bạn. Dù bạn thuộc tuýp người nào nhưng nếu bạn làm tốt trong chuyên môn của mình thì bạn đều có thể thành công.

Nguồn: Review Company 

‪#‎fpttelecom‬ ‪#‎ftel‬ ‪#‎ftelfun‬ ‪#‎fptjobs‬

094.46.65.172