Xin chào mọi người! Tên tôi là YK, hiện đang quản lí CS Dojo, một kênh YouTube giáo dục lập trình với hơn 200.000 người đăng ký. Tôi cũng từng là một nhà phát triển phần mềm tại Google.
Trong quá trình làm ra các video, tôi thường được hỏi hai câu hỏi phổ biến:
“Sự khác biệt giữa khoa học máy tính và phần mềm kỹ thuật phần mềm là gì?”
Và …
“Tôi có nên chọn khoa học máy tính hay kỹ thuật phần mềm để trở thành một kỹ sư phần mềm?”
Trong bài viết này, tôi sẽ trả lời các câu hỏi trên và đưa cho bạn phân tích nhanh về những chuyên ngành này.
Tổng quan nhanh về hai chuyên ngành này
Khoa học máy tính là nghiên cứu về cách các máy tính hoạt động, chủ yếu từ quan điểm lý thuyết và toán học.
Bạn nên chọn Khoa học máy tính nếu bạn thích toán học, logic hoặc nếu bạn muốn tham gia vào một lĩnh vực chuyên biệt trong CS chẳng hạn như trí tuệ nhân tạo, học máy, an ninh, hoặc đồ họa.
Kỹ thuật phần mềm là nghiên cứu về cách thức các hệ thống phần mềm được xây dựng, bao gồm các chủ đề như quản lý dự án, đảm bảo chất lượng và kiểm tra phần mềm.
Bạn nên chọn kỹ thuật phần mềm nếu bạn quan tâm nhiều hơn đến cách thực hành và nếu bạn muốn tìm hiểu chu kỳ sống chung của phần mềm được xây dựng và duy trì như thế nào.
Cả Khoa học máy tính và kỹ thuật phần mềm đều dạy các nguyên tắc cơ bản của lập trình và khoa học máy tính, vì vậy bạn vẫn có thể chọn một trong hai để trở thành một nhà phát triển phần mềm.
Để hiểu được sự khác biệt giữa khoa học máy tính và kỹ thuật phần mềm, chúng ta hãy cùng xem chương trình giảng dạy của họ tại Đại học Waterloo ở Canada.
Tôi đã chọn Đại học Waterloo vì nó có một trong những chương trình khoa học máy tính tốt nhất ở Bắc Mỹ
Triển vọng nghề nghiệp
Đầu tiên chúng ta hãy so sánh các loại công việc và thực tập mà bạn có thể có được thông qua mỗi chương trình.
Rất may, trang web của Đại học Waterloo có cung cấp một số ví dụ cụ thể.
Khoa học máy tính
- Nhà phát triển Web / Kiến trúc sư Desinger
- Lập trình viên
- Nhà phát triển điện thoại di động Moblie / đám mây Cloud
- Kỹ thuật Phần mềm
- Kỹ thuật phát triển phần mềm
- Kỹ sư Agile
- Chuyên viên Phân tích Kinh doanh
- Quản lý sản phẩm
- Hỗ trợ công nghệ IT Support
- Nhà phát triển phần mềm
- Quản lý Phần mềm
- Kỹ sư phần mềm
- Quản lý Sản phẩm Kỹ thuật
- Tư vấn, Giải pháp Tài chính
- Tư vấn thực hiện
Như bạn thấy, không có sự khác biệt lớn giữa các loại công việc mà bạn có thể có được.
Đa phần các sinh viên sau khi tốt nghiệp đều làm Software Developer hoặc Software Engineer
Cũng có những lựa chọn liên quan khác như quản lý sản phẩm, nhà phân tích QA và tư vấn công nghệ. Nó hoàn toàn tùy thuộc vào khả năng của bạn.
Các khóa học năm thứ nhất:
Bây giờ, chúng ta hãy xem các khóa học bắt buộc của mỗi chương trình. Trước tiên chúng ta hãy so sánh một số các khóa học bạn cần phải thực hiện trong năm đầu tiên của bạn.
-
Khoa học máy tính
CS 135 – Thiết kế các chương trình chức năng
CS 136 – Thuật toán và khai thác dữ liệu
MATH 135 – Đại số
MATH 136 – Đại số tuyến tính 1
MATH 137 – Calculus 1
MATH 138 – Calculus 2
Cộng thêm một vài môn phụ
-
Kỹ thuật phần mềm
CS 137 – Nguyên tắc lập trình
CS 138 – Thu thập và thực hiện dữ liệu
MATH 115 – Đại số tuyến tính cho kỹ thuật
MATH 117 – Calculus 1 cho Kỹ thuật
MATH 119 – Calculus 2 cho Kỹ thuật
ECE 105 – Vật lý Kỹ thuật Điện 1
ECE 106 – Điện và Từ
ECE 124 – Các mạch và hệ thống số
ECE 140 – Mạch tuyến tính
SE 101 – Phương pháp kỹ thuật Phần mềm
Như bạn thấy, các khóa học năm đầu cũng tương tự như vậy. Cả hai đều bao gồm một vài khóa học về khoa học máy tính cơ bản, và một vài môn toán trong đại số tuyến tính và tính toán.
Sự khác biệt lớn duy nhất là phần mềm Kỹ thuật có thêm vật lý và các thành phần kỹ thuật điện, trong khi Khoa học Máy tính có thêm một số môn tự chọn.
Các khoá học sau năm đầu tiên:
Các khóa học bắt buộc và tự chọn sau năm đầu tiên như thế nào? Chúng ta hãy xem xét một số ví dụ ở đây:
- Khoa học máy tính:
MATH 239 Giới thiệu tổng hợp
STAT 230 Xác suất
STAT 231 Thống kê
CS 240 Cấu trúc dữ liệu và Quản lý dữ liệu
CS 241 Các cơ sở của các chương trình tuần tự
CS 245 Logic và Tính toán
CS 246 Phát triển phần mềm hướng đối tượng <- không bắt buộc đối với các chuyên ngành Kỹ thuật phần mềm
CS 251 Tổ chức và thiết kế Máy tính
Thuật toán CS 341
CS 350 Hệ điều hành
Thêm vào đó, một số môn Khoa học máy tính
- Kỹ thuật phần mềm:
CHE 102 Hóa học cho kỹ sư
ECE 222 Máy vi tính số (bao gồm ngôn ngữ lắp ráp)
ECE 358 Mạng máy tính
MATH 213 Toán cao cấp cho kỹ sư phần mềm
MATH 239 Giới thiệu tổng hợp
STAT 206 Thống kê cho Kỹ thuật Phần mềm
MSCI 261 Kinh tế Kỹ thuật: Quản lý Tài chính cho Kỹ sư
CS 241 Các cơ sở của các chương trình tuần tự
CS 240 Cấu trúc dữ liệu và Quản lý dữ liệu
CS 247 Nguyên tắc Kỹ thuật Phần mềm <- không bắt buộc đối với các chuyên ngành Khoa học máy tính
Thuật toán CS 341
Giao diện Người dùng CS 349 <- không bắt buộc đối với các chuyên ngành Khoa học máy tính
CS 343 Lập trình song song và song song <- không bắt buộc đối với các chuyên ngành Khoa học máy tính
CS 348 Giới thiệu về Quản lý Cơ sở dữ liệu
SE 212 Logic và Tính toán
SE 350 Hệ điều hành
SE 465 Kiểm thử phần mềm và đảm bảo chất lượng
SE 464 Thiết kế và Kiến trúc phần mềm
SE 463 Yêu cầu phần mềm Yêu cầu kỹ thuật và phân tích
Dự án Thiết kế SE 490
Thêm vào đó, một vài môn khoa học máy tính và các môn kỹ thuật điện
Tôi đã cung cấp cho bạn rất nhiều thông tin để tiêu hóa ở đây. Nhưng ngắn gọn thì:
Khi nói đến các yêu cầu trong toán học và thống kê, Khoa học máy tính và Kỹ thuật phần mềm gần như giống hệt nhau. Chúng bao gồm tổ hợp, xác suất và thống kê.
Các yêu cầu về khoa học máy tính cốt lõi cũng tương tự nhau, bao gồm các thuật toán, cấu trúc dữ liệu và các hệ điều hành.
Sự khác biệt chính là:
- Kỹ thuật phần mềm có nhiều yêu cầu hơn về kỹ thuật điện và các nguyên tắc cơ bản về phần mềm, chẳng hạn như kiểm tra phần mềm, thiết kế và yêu cầu phần mềm.
- Khoa học Máy tính cho phép nhiều môn tự chọn trong các khóa học khoa học máy tính cấp cao hơn. Bạn có thể chọn từ một loạt các chủ đề như an ninh, nguyên tắc cơ bản về công nghệ phần mềm, tầm nhìn máy tính, học máy và quản lý cơ sở dữ liệu.
Vậy, bạn nên chọn chuyên ngành IT nào nào?
Tôi nghĩ rằng nó chủ yếu phụ thuộc vào sở thích của bạn. Nói ngắn gọn:
Bạn nên chọn Khoa học máy tính nếu bạn thích toán học, logic, hoặc nếu bạn muốn tham gia vào một lĩnh vực chuyên biệt trong CS chẳng hạn như trí tuệ nhân tạo, học máy, an ninh hoặc đồ họa.
Bạn nên chọn Kỹ thuật phần mềm nếu bạn quan tâm nhiều hơn đến cách tiếp cận thực hành và nếu bạn muốn tìm hiểu chu kỳ sống chung của phần mềm được xây dựng và duy trì như thế nào.
Nhưng ngành nào thì thích hợp cho software engineer?
Thông thường, các công ty thường tìm kiếm trong một ứng cử viên kỹ sư phần mềm là khả năng viết code tốt và xây dựng các dự án thú vị, cũng như những nguyên tắc cơ bản về khoa học máy tính bao gồm các cấu trúc dữ liệu và thuật toán.
Tôi nghĩ cách tốt nhất để trau dồi kỹ năng này là nhanh chóng học thật vững về nguyên tắc cơ bản về máy tính, và dành thời gian riêng của mình để thực hành viết code.
Dựa trên chương trình học cho kỹ thuật phần mềm và mức độ bận rộn của sinh viên, tôi nghĩ rằng sẽ khó thực hiện việc này nếu bạn theo học kỹ thuật phần mềm hơn là khoa học máy tính.
Một lợi ích khác của chương trình khoa học máy tính này là nó cho phép nhiều môn tự chọn hơn. Điều này khá tuyệt vời vì tùy thuộc vào nhu cầu thị trường lao động, bạn có thể điều chỉnh các khóa học của mình. Ví dụ: nếu phát triển ứng dụng di động, bạn có thể tìm hiểu điều đó. Và nếu tính toán song song là nhu cầu, bạn có thể tập trung vào nó thay cho những khóa khác.
Tôi chắc chắn rằng có một số lợi ích để học các nguyên tắc cơ bản về công nghệ phần mềm (quản lý dự án, thiết kế, thử nghiệm, v.v.). Nhưng tôi cá nhân sẽ linh hoạt hơn đối với các kỹ năng được xác định trước. Đó là lý do tại sao tôi nghĩ rằng khoa học máy tính là một lựa chọn tốt hơn để trở thành một kỹ sư phần mềm.
Tất nhiên, đó chỉ là ý kiến của tôi, và đây nó dựa trên chương trình từ một trường đại học cụ thể. Tôi rất muốn nghe ý kiến của bạn và kinh nghiệm của bạn về hướng chọn chuyên ngành này.
Bài viết gốc được đăng tải tại Medium
Có thể bạn quan tâm:
- Các bạn trẻ đừng sợ chọn sai ngành học!
- Dành cho các bạn trẻ sắp bước vào ngành Công nghệ thông tin…
- Tại sao có rất ít người chọn ngành Khoa học máy tính?
Xem thêm tuyển dụng ngành cntt hot nhất trên TopDev