Nhà khoa học máy tính và kỹ sư CNTT khác nhau không ? việc của người này người kia có làm được không ? về trình độ thì ai cao hơn ? Có người nói rằng nếu không có nhà khoa học máy tính thì có thể tồn tại được mà không cần đến Kỹ sư CNTT, nhưng kỹ sư CNTT lại phụ thuộc vào những kết quả nghiên cứu của nhà khoa học máy tính. Điều đó có đúng không ?
Nhà Khoa học máy tính và Kỹ sư CNTT khác nhau không?
Bạn cứ nghe đến chữ nghiên cứu/ khoa học thì bạn hiểu rằng công việc của họ không nhất thiết phải sớm có ứng dụng trong thực tế. Hay nói cách khác họ không bị áp lực cao phải tạo ra sản phẩm hữu hình để mang bán ngoài thị trường. Tất nhiên quá trình làm việc, nghiên cứu luôn tạo ra sản phẩm, thường là ở dạng các công trình nghiên cứu (bài tạp chí, chuyên luận, sách, báo cáo khoa học…).
Còn nói đến kỹ sư là nói đến thực hành, nếu không tạo ra sản phẩm nào trong thời gian chừng 1-5 năm thì thường ông kỹ sư/ nhóm đó đã bị chỗ làm sa thải.
Như vậy, hai cái trên có sự giao thoa nhau giống như kiến trúc sư (vẽ là chính, thi công là phụ) và kỹ sư xây dựng (thi công là chính) vậy.
Hi there,
Để tớ thử trả lời từng câu hỏi trong chuỗi câu hỏi của cậu nhé
Có cậu ạ.
Nhà khoa học thường là người nghiên cứu những lý thuyết nhằm giải quyết một vấn đề nan giải nào đó, có thể ở mức lý thuyết hoặc thực tiễn. Họ thường quan tâm tới khác khía cạnh lý thuyết của giải pháp đó. Các giải pháp của họ thường được kiểm tra trong môi trường thực nghiệm, hoặc môi trường thực tế với quy mô nhỏ và điều kiện lý tưởng. Kết quả công việc của họ là một công trình nghiên cứu, một bài báo trên tạp chí khoa học nào đó.
Nhà khoa học máy tính sẽ đi sâu vào nghiên cứu computer science, giải quyết các vấn đề lý thuyết nan giải trong ngành này.
Kỹ sư là những người biến khoa học thành hiện thực. Họ sử dụng các kiến thức khoa học và công nghệ để thiết kế, xây dựng lên các giải pháp thực tế. Họ sẽ quan tâm tới các khía cạnh thực tiễn của giải pháp đó, như chi phí (xây dựng và vận hành), độ bền, khả năng mở rộng, khả năng thích ứng, khả năng chịu được các điều kiện cực đoan… Các vấn đề họ giải quyết có thể ở cả quy mô nhỏ lẫn quy mô rất lớn. Kết quả công việc của họ là một công nghệ, một hệ thống, một thiết kế bền vững, một sản phẩm (tùy vào ngành sẽ là các sản phẩm khác nhau).
Kỹ sư CNTT thường đi sâu vào việc ứng dụng computer science và computer technology để giải quyết các vấn đề thực tiễn.
Về lý thuyết thì có. Một nhà khoa học có thể tạo ra một sản phẩm, hay một kỹ sư có thể nghiên cứu khoa học.
Trong thực tế:
- Có rất nhiều kỹ sư chuyển sang làm khoa học (sau khi đi làm một thời gian, họ có thể quay lại trường Đại học, học lên cao học và chuyển sang làm về khoa học),
- Nhà khoa học chuyển sang làm kỹ sư (những nhà khoa học sau khi học tiến sĩ, chuyển ra ngoài làm việc như một kỹ sư - không phải làm R&D).
Nhưng dĩ nhiên là họ phải có thời gian để catch up mới có thể làm ở ngành còn lại, nếu không, cậu sẽ dễ dàng gặp:
- Một kỹ sư không có hiểu biết sâu sắc trong lĩnh vực khoa học mà họ nghiên cứu (thường họ phải đọc rất nhiều paper của ngành đó - hay liên quan tới vấn đề mà họ đang nghiên cứu. Nếu không, họ sẽ rất khó để hiểu bất cứ một bài báo mới)
- Một nhà khoa học máy tính không có nhiều hiểu biết về công nghệ, hay gặp rắc rối khi viết code với thiết kế vô cùng tồi tệ, không có khả năng maintain (với method hàng trăm dòng code + tái sử dụng biến, hoặc dùng biến toàn cục để tối ưu hóa bộ nhớ, dẫn tới spaghetti code với side effect everywhere), cùng với việc cố gắng tuning từng byte bộ nhớ, từng vòng lặp - if-else hay for loop khi viết code
Khó có thể so sánh được chính xác sử dụng một tiêu chí chung về mặt trình độ, vì các lý do:
- Concern của 2 ngành này là khác nhau: một bên quan tâm lý thuyết khoa học, một bên quan tâm ứng dụng thực tiễn.
- Vấn đề họ xử lý cũng khác nhau, và không thể nói bên nào cần xử lý vấn đề khó hơn.
- Sản phẩm của mỗi bên làm ra cũng khác nhau.
- Kỹ năng và kiến thức yêu cầu của 2 bên này tương đối khác nhau.
Nếu như chỉ so sánh về bằng cấp academy, in general các nhà khoa học thường có bằng cấp cao hơn các kỹ sư, vì các kỹ sư thường chỉ cần bằng cử nhân, sau đó sẽ đi làm thực tế để tích lũy kinh nghiệm cũng như giải quyết các bài toán thực tế.
Tuy nhiên, so sánh này không đánh giá việc trình độ của nhà khoa học cao hơn trình độ của kỹ sư Nó giống việc cậu so sánh cam với táo vậy - 2 cái cùng là “trái cây”, nhưng ngoài ra chẳng liên quan tới nhau.
Hở? Tớ không hiểu ý cậu lắm. Không có nhà khoa học máy tính thì không có kỹ sư CNTT cũng được á? Sao nghe cực đoan vậy?
Well, không hẳn vậy. Nếu người đưa ra luận điểm trên cho rằng nhà khoa học máy tính là người tìm ra cách giải quyết các vấn đề thực tiễn, thì tớ e là nó chưa đủ đâu
Trong lý thuyết, không có sự khác biệt giữa lý thuyết và thực tiễn. Trong thực tiễn thì có. Các giải pháp lý thuyết nhiều khi không có ứng dụng trong thực tiễn, hoặc cần phải cải tiến rất nhiều + sử dụng rất nhiều các lý thuyết khác để chính thức giải quyết được một vấn đề thực tiễn, và sự cải tiến này được thực hiện bởi các kỹ sư.
Ở thời điểm hiện tại, cá nhân tớ thấy công việc của các kỹ sư gần như độc lập so với công việc của nhà khoa học máy tính. Hàng loạt công nghệ được phát triển với tốc độ chóng mặt (nếu cậu từng làm việc với javascript, cậu có thể thấy vài ngày lại có một framework mới nào đó ) mà không cần chờ một nghiên cứu mới nào đó từ các nhà khoa học máy tính.
Hope it helps!
làm khoa máy tính đúng nghĩa là chuyên tâm nghiên cứu cái mới, ngôn ngữ lập trình, framework, chip, thuật toán mới, vvv.
nhưng ở VN ít job như này lắm, toàn phần mềm thôi.