Ngành phát triển phần mềm luôn tràn đầy sự thay đổi. Các lĩnh vực mới về chuyên môn, công nghệ, và phương pháp xuất hiện như nấm mọc sau mưa. Song song với việc này, các thuật ngữ để mô tả và phân biệt các chuyên gia ngành này trở nên không thể thiếu trong quảng cáo việc làm và xây dựng hình ảnh công ty.
Trước khi Internet tồn tại, nhiều chuyên ngành này gần như không tồn tại. Chính Internet đã làm thay đổi con đường sự nghiệp của các kỹ sư phần mềm.
Trong bài viết này, chúng ta sẽ khám phá 16 chức danh phổ biến nhất của các lập trình viên và kỹ sư phần mềm, cung cấp mô tả ngắn gọn và danh sách các công nghệ và kỹ năng tương ứng. Các định nghĩa này dựa trên hiểu biết chuyên môn của tôi, tuy nhiên, chúng có thể thay đổi tùy thuộc vào công ty, khu vực hoặc ngành nghề.
Phân Loại Lập Trình Viên
1. Front-end Developer
Đây là chức danh của những lập trình viên chuyên phát triển giao diện người dùng. Công việc của họ đòi hỏi khả năng thẩm mỹ và bố cục cũng như hiểu biết về nguyên tắc thiết kế và tương tác người-máy. Các kỹ năng chính của front-end developer bao gồm thiết kế giao diện người dùng (UI), trải nghiệm người dùng (UX), CSS, JavaScript, và HTML.
2. Back-end Developer
Đây là nhà phát triển chịu trách nhiệm về thiết kế, triển khai, và tối ưu hóa logic lõi, hiệu năng, và khả năng mở rộng của một phần mềm hoặc hệ thống chạy trên máy chủ. Công việc của back-end developer thường làm việc với các ngôn ngữ như Java, PHP, Ruby, Perl, Python, Scala, c+ +, và Go, cùng với các công cụ như cơ sở dữ liệu, hệ thống lưu trữ, hệ thống log, caching, và hệ thống email.
3. Full-stack Developer
Đây là nhà phát triển có kỹ năng phát triển cả front-end và back-end. Họ có thể tạo ra các ứng dụng web đầy đủ chức năng. Hiện nay, có nhiều full-stack developer cũng có thể lập trình trên thiết bị di động thông qua các framework sử dụng JavaScript như React Native và Cocoonjs.
4. Web Developer
Các nhà phát triển web là những kỹ sư phần mềm chuyên tạo ra các trang web. Họ có thể là front-end developer, back-end developer, hoặc full-stack developer. Phát triển web đã trở thành một con đường rất phổ biến để bước vào thế giới kỹ thuật phần mềm. Với kiến thức cơ bản về HTML và CSS, một nhà phát triển web nghiệp dư có thể bắt đầu viết code cho nhiều hệ thống khác nhau.
5. Desktop Developer
Nhà phát triển này làm việc với các ứng dụng phần mềm chạy trên máy tính để bàn như Mac OS, Windows, và Linux. Với các công cụ như Cacao, XAML, WinForms, và Gtk, các nhà phát triển máy tính để bàn có thể tạo ra các ứng dụng phức tạp và đa dạng.
6. Mobile Developer
Nhà phát triển di động viết code cho các ứng dụng chạy trên điện thoại thông minh và máy tính bảng. Sự bùng nổ của thị trường điện thoại thông minh đã tạo ra nhiều cơ hội cho nhà phát triển di động. Họ cần hiểu rõ về hệ điều hành di động như iOS và Android cũng như ngôn ngữ lập trình như Java, Swift, và Objective-C.
7. Graphics Developer
Nhà phát triển đồ họa chuyên viết phần mềm để tạo, chỉnh sửa, và quản lý các hình ảnh, ánh sáng, màu sắc, và hiệu ứng trong các ứng dụng game và video. Để làm việc trong lĩnh vực này, nhà phát triển cần có kiến thức về toán và khoa học máy tính.
8. Game Developer
Đây là nhóm các nhà phát triển chuyên làm game. Họ có kiến thức và kỹ năng về việc thiết kế và triển khai trải nghiệm chơi game và tương tác trong game. Các công nghệ phổ biến trong lĩnh vực này bao gồm DirectX, OpenGL, Unity 3D, WebGL, C++, C#, và Java.
9. Data Scientist
Chức danh này dành cho những người viết chương trình phân tích dữ liệu. Họ phụ trách thống kê, machine learning, data visualization, và mô hình dự đoán. Các công nghệ chính mà các data scientist sử dụng bao gồm SQL, R, và Python.
10. Big Data Developer
Big data developer viết các chương trình phần mềm để lưu trữ và truy xuất số lượng lớn dữ liệu trong các hệ thống như kho dữ liệu, hệ thống ETL, và cơ sở dữ liệu quan hệ. Các công nghệ và ngôn ngữ thường được sử dụng trong lĩnh vực này bao gồm MapReduce, Hadoop, Spark, SQL, Java, Python, và R.
11. DevOps Developer
Developer này là người chuyên về các công nghệ cần thiết cho sự phát triển và quản lý phần mềm và hệ thống phân phối. Các công nghệ và công cụ phổ biến mà DevOps developers sử dụng là Kubernetes, Docker, Apache Mesos, HashiCorp stack, và Jenkins.
12. CRM Developer
CRM developer tập trung vào việc phát triển hệ thống để thu thập dữ liệu khách hàng và cải thiện sự hài lòng của khách hàng và bộ phận bán hàng. Các công nghệ và hệ thống phổ biến mà CRM developers sử dụng là SAP, Salesforce, Sharepoint, và ERP.
13. SDET (Software Development Engineer in Test)
SDET phát triển phần mềm để kiểm tra chất lượng của hệ thống phần mềm. Họ tạo ra các bài kiểm tra, công cụ, và hệ thống tự động để đảm bảo rằng các sản phẩm và quy trình chạy như mong đợi. Các công nghệ và ngôn ngữ mà SDET sử dụng bao gồm Python, Ruby, và Selenium.
14. Embedded Developer
Embedded developer là nhà phát triển chuyên làm việc với phần cứng. Các nhà phát triển nhúng thường làm việc với các ngôn ngữ như C, C++, Assembly, hoặc các công nghệ đặc quyền của họ. Các platform và công cụ mà embedded developers sử dụng có thể là vi điều khiển, hệ thống thời gian thực, giao diện điện tử, set-top box, thiết bị tiêu dùng, thiết bị IoT, và trình điều khiển phần cứng.
15. WordPress Developer
Loại nhà phát triển này tập trung vào việc tạo và tùy chỉnh các themes và plugin cho WordPress cũng như quản lý các trang web WordPress. Công nghệ và ngôn ngữ chính mà WordPress developers sử dụng là WordPress, PHP, JavaScript, và HTML.
16. Security Developer
Loại nhà phát triển này chuyên về việc tạo ra các hệ thống, phương pháp, và thủ tục để kiểm tra và sửa các lỗ hổng bảo mật trong phần mềm. Các security developers thường viết các công cụ bằng các ngôn ngữ script như Python hoặc Ruby và hiểu chi tiết các cách thức được sử dụng để tấn công các hệ thống phần mềm. Những developer này cần đọc và hiểu mã nguồn của hệ điều hành được viết bằng c và c++ .