Kỹ thuật phần mềm (Software Engineering) liên quan đến việc phát triển và bảo trì tất cả phần mềm chúng ta sử dụng hàng ngày, từ các công cụ năng suất (productivity tool) đến trình duyệt web.
Nhu cầu đối với developer trên thế giới là rất lớn, vì nhiều lĩnh vực kinh doanh tiếp tục phụ thuộc lớn vào công nghệ. Do đó, các kỹ sư phần mềm (software engineer) kiếm được một mức lương ấn tượng và có triển vọng việc làm mạnh mẽ.
Bài viết này sẽ nói về cách trở thành kỹ sư phần mềm, cung cấp cho bạn thông tin cần thiết để quyết định xem nghề nghiệp này có phù hợp với bạn hay không.
Kỹ thuật phần mềm (software engineering) là việc áp dụng các khái niệm kỹ thuật vào phát triển phần mềm. Mục tiêu chính của nó là tạo ra, cải tiến và bảo trì phần mềm.
Kỹ thuật phần mềm tính đến các khía cạnh kỹ thuật như môi trường phần cứng và phần mềm khi làm việc trên một chương trình.
Dù mô tả công việc của kỹ sư phần mềm thường trùng lặp nhiều với nhà phát triển phần mềm (software developer), nhưng kỹ sư phần mềm (software engineer) và nhà phát triển phần mềm (software developer) lại không giống nhau.
Sự khác biệt chính là các kỹ sư phần mềm áp dụng các khái niệm và nguyên tắc kỹ thuật khi phát triển phần mềm.
Phạm vi làm việc của kỹ sư không giới hạn ở việc viết code và họ còn làm việc cả trên môi trường mà chương trình sẽ hoạt động.
Kỹ sư phần mềm sẽ tạo, duy trì và quản lý nhiều loại ứng dụng phần mềm khác nhau. Dưới đây là một số nhiệm vụ của kỹ sư phần mềm.
Phạm vi nhiệm vụ của kỹ thuật phần mềm sẽ tùy vào tổ chức và quy mô của nhóm phát triển.
Trách nhiệm của kỹ sư phần mềm có thể bao gồm thiết kế, phát triển và bảo trì toàn bộ sản phẩm. Chúng cũng có thể chỉ đơn giản là giúp cấu trúc code của một ứng dụng trong các nhóm lớn hơn.
Thông thường, các kỹ sư phần mềm sẽ phải làm việc với nhà phát triển (developer), khách hàng và các bên liên quan khác để đáp ứng nhu cầu thiết kế cho sản phẩm của họ.
Một số vai trò kỹ thuật phần mềm bao gồm trí tuệ nhân tạo, trong khi những vai trò khác có thể là quản lý các chương trình ở phía máy chủ.
Dù với vai trò nào, một kỹ sư phần mềm sẽ sử dụng các ngôn ngữ lập trình để viết và duy trì nhằm đáp ứng một nhu cầu nhất định.
Nếu bạn muốn lấn sân sang lĩnh vực kỹ thuật công nghệ, bước đầu tiên là tìm ra lộ trình sự nghiệp mà bạn muốn nhắm đến. Hãy xem qua một số lộ trình phổ biến đối với kỹ sư phần mềm.
Kỹ sư phần mềm phát triển phần mềm cho các thiết bị điện tử. Các nhà phát triển này sử dụng các ngôn ngữ lập trình như C ++, Java và Python để tạo các ứng dụng chạy trên máy tính.
Họ làm việc trên cả giao diện người dùng lẫn back-end, liên quan tới những gì người dùng nhìn thấy và cơ chế hoạt động đằng sau của một chương trình.
Các kỹ sư này chịu trách nhiệm thiết kế, phát triển, thử nghiệm và bảo trì các hệ thống nhúng. Hệ thống nhúng là sự kết hợp phần cứng và phần mềm được thiết kế để thực hiện các nhiệm vụ cụ thể.
Ví dụ, một kỹ sư hệ thống nhúng có thể làm việc trên phần mềm hỗ trợ máy ATM hoặc chương trình điều khiển rô bốt.
Kỹ sư bảo mật chịu trách nhiệm tạo ra các hệ thống, phương pháp và chính sách để đảm bảo hệ thống thông tin đáp ứng các tiêu chuẩn nhất định và không có lỗi bảo mật.
Các kỹ sư bảo mật thường hoạt động như hacker “mũ trắng” và cố gắng đột nhập vào các hệ thống hiện có để xác định xem có vấn đề bảo mật nào tồn tại hay không.
Các kỹ sư Đảm bảo chất lượng (QA) sẽ viết, xem xét, kiểm tra và bảo trì phần mềm.
Các kỹ sư này chịu trách nhiệm đảm bảo nhóm phát triển viết mã có chất lượng nhất quán. Họ tạo ra các tiêu chuẩn và chính sách để đảm bảo tất cả mã hiệu quả và hoạt động chính xác.
Có nhiều lộ trình bạn có thể đi theo để trở thành một kỹ sư phần mềm, nhưng phổ biến nhất thường tuân theo các bước sau:
Có thể mất từ sáu tháng đến bốn năm để học kỹ thuật phần mềm.
Nếu bạn tham gia vào một khóa học hoặc chương trình đào tạo về lập trình, trung bình bạn có thể trở thành một kỹ sư phần mềm trong vòng sáu tháng đến một năm.
Ngoài ra, bạn có thể nhận được một nền giáo dục chính quy về kỹ thuật phần mềm bằng cách theo học bằng cử nhân bốn năm trong lĩnh vực này.
Có ba lộ trình phổ biến để học kỹ thuật phần mềm, đó là:
Mỗi lộ trình đều có những lợi ích và hạn chế của nó.
Trước đây, chỉ những sinh viên tốt nghiệp đại học mới đủ điều kiện cho các vai trò kỹ sư phần mềm chuyên nghiệp, nhưng điều đó đã thay đổi trong vài năm qua.
Nhiều kỹ sư phần mềm gần đây đã phát triển mạnh trong lĩnh vực này mặc dù đã tự học và không được đào tạo chính quy về lập trình.
Tuy nhiên, có một phương án khác ngày càng phổ biến: Coding bootcamps.
Chương trình đào tạo lập trình cung cấp một giải pháp thay thế khả thi cho giáo dục đại học truyền thống.
Trong chương trình đào tạo này, bạn sẽ học được tất cả các kỹ năng thiết thực mà bạn cần để thành công trong sự nghiệp phát triển phần mềm (software developement).
Ngoài ra, hầu hết các bootcamp đều cung cấp một hệ thống hỗ trợ nghề nghiệp mạnh mẽ cho sinh viên và sinh viên mới tốt nghiệp.
Bạn sẽ làm việc với người cố vấn (mentor) và người hướng dẫn để học các kỹ năng mới và xây dựng porfolio để giới thiệu kỹ năng và khả năng của bạn với các nhà tuyển dụng tiềm năng. Họ thậm chí còn trợ giúp khi bạn tìm kiếm việc làm.
$ 188,000 | $ 120,000 | $ 50,000 |
Kỹ sư trình độ Senior | Kỹ sư trình độ Middle | Kỹ sư trình độ Junior |
Các chương trình đào tạo kỹ sư phần mềm là một giải pháp thay thế khả thi cho giáo dục cao đẳng hoặc đại học. Một trong những loại chương trình phổ biến nhất là dưới dạng bootcamps.
Dưới đây là danh sách một số bootcamps được đánh giá cao nhất và phổ biến nhất trong kỹ thuật phần mềm.
App Academy là một trường học lập trình cung cấp cả chương trình đào tạo trực tiếp và trực tuyến.
Không có chi phí học phí cho đến khi bạn được thuê trong vai trò kỹ sư phần mềm và kiếm được hơn 50.000 đô la.
App Academy đã đưa hơn 3.000 người vào các vị trí kỹ sư phần mềm toàn thời gian, thu về mức lương trung bình là 80.000 đô la.
Các cựu sinh viên của chương trình bootcamp làm việc tại hơn 1.000 công ty trên khắp thế giới, chẳng hạn như Twitter, Netflix, Apple và Google.
Flatiron School cung cấp các chương trình trực tuyến và trực tiếp về kỹ thuật phần mềm.
Sinh viên tham gia vào một chương trình giảng dạy nghiêm ngặt phù hợp với nhu cầu của thị trường. Flatiron School dạy học sinh cách suy nghĩ và làm việc như một kỹ sư phần mềm.
Ứng viên phải nộp đơn đăng ký bằng văn bản nêu rõ lý do đăng ký tham gia chương trình đào tạo. Các em cũng phải học một số kỹ năng cơ bản để đủ điều kiện tham gia các chương trình nhập vai thông qua các khóa học dự bị miễn phí của Flatiron School.
Thinkful là một chương trình đào tạo trực tuyến cung cấp khóa học kéo dài bảy tháng về kỹ thuật phần mềm.
Các khóa học được thực hiện toàn thời gian hoặc bán thời gian.
Suốt chương trình, sinh viên sẽ được kèm cặp bởi một cố vấn cá nhân, huấn luyện viên nghề nghiệp và người quản lý thành công trong học tập. Họ cũng tham gia vào một mạng lưới đồng đẳng hỗ trợ để giúp đảm bảo thành công.
Trong một số khóa học, sinh viên đủ điều kiện được Thinkful đảm bảo học phí. Nghĩa là nếu một sinh viên không tìm được việc làm trong vòng sáu tháng sau khi tốt nghiệp, họ sẽ được trả lại tiền.
Rithm School là một chương trình kỹ thuật phần mềm toàn thời gian kéo dài 17 tuần.
Được thành lập bởi một đội ngũ giảng viên giàu kinh nghiệm, chú trọng vào quy mô lớp học nhỏ. Mỗi lớp học giới hạn 18 học viên với ba giảng viên giàu kinh nghiệm.
Chương trình học tập trung vào Python, SQL, Node, React, Cấu trúc dữ liệu và Thuật toán.
Không giống như các chương trình đào tạo lập trình khác, sinh viên dành ba tuần để ký hợp đồng cho các công ty và tích lũy kinh nghiệm chuyên môn.
Ngoài các khóa học và chứng chỉ, sách kỹ thuật phần mềm có thể mở rộng kiến thức của bạn một cách đáng kể.
Những cuốn sách này chứa đầy lời khuyên và thông tin hữu ích về lĩnh vực này.
Cho dù bạn là người mới bắt đầu hay một chuyên gia có kinh nghiệm, sau đây là những tài nguyên hữu ích cho bất kỳ kỹ sư phần mềm nào
Cracking the Coding Interview: 189 Programming Questions and Solutions - Gayle Laakmann McDowell
Nếu bạn ứng tuyển vào vị trí kỹ sư phần mềm, bạn có thể phải tham gia một cuộc phỏng vấn viết code.
Cuốn sách này giúp bạn tìm kiếm các chi tiết ẩn trong các câu hỏi viết code, chia nhỏ vấn đề thành các phần có thể quản lý được và cải thiện khả năng học các khái niệm của bạn.
Ngoài ra còn có 189 câu hỏi phỏng vấn và cách giải quyết trong cuốn sách, sẽ giúp bạn chuẩn bị cho cuộc phỏng vấn tiếp theo.
Code Complete: A Practical Handbook of Software Construction - Steve McConnell
Code Complete là một phân tích về xây dựng phần mềm. Nó được viết tốt và được coi là một tiêu chuẩn công nghiệp.
Thực tế, mọi lập trình viên ít nhất nên đọc qua cuốn sách này. Nó bao gồm các chủ đề về thiết kế, coding, testing và debugging.
Cuốn sách này đặc biệt hữu ích cho những người có một số kinh nghiệm chuyên môn ban đầu về lập trình.
Tuy nhiên, những người mới bắt đầu sẽ tự tin hơn khi làm phần mềm sau khi đọc cuốn sách này.
The Clean Coder: A Code of Conduct for Professional Programmers - Robert Martin
Cuốn sách này dạy cho bạn tất cả về các nguyên tắc, công cụ, kỹ thuật và thực hành của nghề làm phần mềm, kèm với lời khuyên thực tế về coding, testing, refactoring và estimating.
Sau khi đọc cuốn sách, bạn sẽ học được cách giải quyết những xung đột, những quản lý khó tính và lịch trình chặt chẽ.
Bạn còn học được cách tạo môi trường cho developer phát triển mạnh mẽ, tránh tình trạng kiệt sức và tham gia vào luồng coding.
Introduction to Algorithms - Thomas H. Cormen
Đây là một hướng dẫn tuyệt vời cho tất cả các loại thuật toán. Là một phần cần thiết của kỹ thuật phần mềm, cuốn sách này bao gồm mọi thứ cho người mới bắt đầu cũng như các chuyên gia.
Bạn sẽ tìm hiểu về các thuật toán nhanh, thuật toán thời gian đa thức, lý thuyết đồ thị (graph theory), hình học tính toán (computational geometry) và cấu trúc dữ liệu (data structure). Nó thậm chí còn đưa ra một số ví dụ thông qua mã giả (pseudo-code).
The Pragmatic Programmer - David Thomas và Andrew Hunt
Cuốn sách này chứa đầy những lời khuyên chuyên môn và kỹ thuật giúp bạn trở thành một kỹ sư phần mềm giỏi hơn.
Cuốn sách xem xét ý nghĩa của việc trở thành một nhà phát triển hiện đại, khám phá các chủ đề từ kỹ thuật kiến trúc đến phát triển nghề nghiệp. Khi đến trang cuối cùng, bạn sẽ học được cách lập trình thích ứng, linh hoạt và động.
Một bước khác giúp bạn nổi bật trong quá trình phỏng vấn xin việc là kiếm chứng chỉ.
Chứng chỉ giống như bài kiểm tra cho phép nhà tuyển dụng biết bạn có đáp ứng một kỹ năng hoặc kiến thức nhất định cần thiết cho một công nghệ cụ thể.
Dưới đây là một số chứng chỉ hữu ích nhất dành cho kỹ sư phần mềm:
Thay vì cố gắng thu thập càng nhiều càng tốt, hãy tập trung vào các chứng chỉ hỗ trợ các công nghệ bạn định sử dụng trong sự nghiệp của mình.
http://dreaimincode.net/
Đây là một cộng đồng trực tuyến lớn, với hàng trăm nghìn thành viên trên trang web. Nó kết nối các lập trình viên có kinh nghiệm, cho phép họ chia sẻ thông tin với nhau.
Trang web có các hướng dẫn lập trình chi tiết, các đoạn mã và một diễn đàn giúp bạn có thể nhận được bất kỳ hỗ trợ kỹ thuật phần mềm nào.
http://programmr.com/
Trang này là một công cụ giáo dục trực tuyến. Nó toàn diện và bao gồm một loạt các chủ đề như Ruby, SQL, C ++, Python, C #, HTML, PHP và một vài chủ đề khác.
Mặc dù việc lập trình có thể phức tạp, nhưng tài nguyên trên đây rất đơn giản và dễ hiểu, giúp bạn dễ dàng bắt đầu.
http://stackoverflow.com/
Stack Overflow là một phần cộng đồng của mạng Stack Exchange. Nó tập trung vào việc cung cấp thông tin cho các developer ở tất cả các cấp độ kỹ năng.
Trang này được sử dụng bởi các lập trình viên trên toàn thế giới. Nếu bạn có câu hỏi, bạn sẽ được giải đáp thông qua trang web này.
http://codecademy.com/
Codecademy là một trang web tương tác dành cho các lập trình viên. Trang web cung cấp quyền truy cập vào một chương trình miễn phí giúp xây dựng kỹ năng phát triển web.
Có các chương trình dạy bạn các ngôn ngữ lập trình cụ thể. Trang web cũng cho phép sinh viên soạn thảo chương trình giảng dạy của họ và làm việc theo tốc độ của họ.
Lộ trình | Chứng chỉ Bootcamp, bằng cử nhân hoặc tự học |
Các kỹ năng kỹ thuật cần thiết | Kiểm thử và gỡ lỗi phần mềm, lập trình, thiết kế hướng đối tượng, cấu trúc dữ liệu và thuật toán, dịch vụ web và API |
Kỹ năng mềm cần thiết | Làm việc theo nhóm, chú ý đến chi tiết, giải quyết vấn đề |
Mức lương trung bình | $ 98,500 |
Nguồn: careerkarma.com