Lập trình

16 phân loại trong nghề lập trình viên hiện nay bạn nên biết

Huy Erick

Viễn cảnh của nghề lập trình viên hiện nay liên tục thay đổi. Các lĩnh vực chuyên môn, công nghệ và phương pháp mới xuất hiện cứ vài tháng một lần bởi sự đổi mới...

Viễn cảnh của nghề lập trình viên hiện nay liên tục thay đổi. Các lĩnh vực chuyên môn, công nghệ và phương pháp mới xuất hiện cứ vài tháng một lần bởi sự đổi mới không ngừng của ngành công nghiệp phần mềm. Theo đó, các thuật ngữ mô tả các loại nhà phát triển chuyên biệt trở thành một phần của ngành công nghiệp này (có thể nhiều chức danh chưa được coi là chính thức) và hiển thị trong quảng cáo việc làm của nhiều công ty.

Trước sự tồn tại của internet, nhiều chuyên ngành không tồn tại. Web toàn cầu đã thay đổi hầu hết các khía cạnh của cuộc sống của chúng ta, bao gồm giúp cách mạng hóa con đường sự nghiệp của các kỹ sư phần mềm.

Bạn có thể thấy, chưa tồn tại một một bảng chú giải thuật ngữ chính thức của các chức danh chúng ta sẽ đề cập sau đây. Quan trọng là phải hiểu được các kỹ năng mà mỗi loại nhà phát triển khác nhau cần có, điều này cũng dễ gây nhầm lẫn cho những người mới vào nghề. Bài viết dưới đây sẽ chỉ ra 16 chức danh phổ biến nhất trong lĩnh vực lập trình viên, cùng với mô tả ngắn và danh sách kỹ năng mà bạn cần phải có. Lưu ý rằng các định nghĩa của các thuật ngữ này phản ánh sự hiểu biết chuyên môn của tác giả, nhưng nó có thể khác nhau tùy thuộc vào công ty, khu vực hoặc ngành.

Front-end Developer (hay còn được biết đến là Client-Side Developer)

Đây là chức danh của những developer về lập trình giao diện người dùng, bao gồm thẩm mỹ và bố cục của nó. Code của họ chạy trên một trình duyệt web, trên máy tính của người sử dụng.

Đây là công việc cần hiểu biết nhiều về thẩm mỹ, thường không hề liên quan gì tới phần cứng. Nó đòi hỏi sự hiểu biết về các nguyên tắc thiết kế và tương tác của người - máy nhiều hơn lý thuyết về khoa học máy tính. Phần lớn cuộc sống của front end developer được dành để giải quyết các vấn đề về khả năng tương thích qua trình duyệt và tinh chỉnh chi tiết về trình bày trực quan của giao diện người dùng.

Các kỹ năng phát triển Front-end bao gồm thiết kế giao diện người dùng (UI) và trải nghiệm người dùng (UX), CSS, JavaScript, HTML.

Backend Developer

Đây là nhà phát triển chuyên về thiết kế, triển khai, logic lõi chức năng, hiệu năng và khả năng mở rộng của một phần mềm hoặc hệ thống đang chạy trên các server từ Người dùng cuối .

Các hệ thống back-end có thể phát triển rất phức tạp, nhưng sự phức tạp của chúng thường không thể hiện ra ngoài. Ví dụ: hãy xem xét công cụ tìm kiếm của Google. Phần front-end giao diện là giao diện đơn giản với tiêu đề, hộp văn bản và hai hoặc ba nút. Phần back-end là một hệ thống rất phức tạp, có thể thu thập thông tin web, lập chỉ mục nó, và tìm thấy những gì bạn đang tìm kiếm với hàng loạt các cơ chế phức tạp.

Một backend developer thường làm việc với các ngôn ngữ lập trình như Java, PHP, Ruby, Perl, Python, Scala, Go, C ++ ... Các backend developer thường cần sử dụng thêm một số công cụ như cơ sở dữ liệu (database), hệ thống lưu trữ (data storage), hệ thống log, caching, hệ thống email, ...

Full-stack Developer

Đây là một nhà phát triển mà làm cả front lẫn back-end. Anh ta có các kỹ năng cần thiết để tạo một ứng dụng web đầy đủ chức năng. Ngày nay, có nhiều fullstack có thể lập trình trên mobile thông qua các framework sử dụng Javascript như React Native, Cocoonjs...

Middle-Tier Developer (Tạm dịch là Nhà phát triển cấp trung)

Đây là nhà phát triển viết code (không có UI) chạy trong trình duyệt và thường làm việc với code (không phải cốt lõi) đang chạy trên máy chủ. Nói chung, “cấp trung” là “hệ thống ống nước” của một hệ thống.

Thuật ngữ nhà phát triển ở tầng giữa được sử dụng để mô tả một người không chuyên về front-end hay back-end nhưng có thể thực hiện một chút về cả hai mà không phải là nhà phát triển full-stack. Chỉ hiếm khi các kỹ sư có điều này như một chức danh chính thứ, vì nó giống một mô tả về kỹ năng yêu cầu hơn là một chức danh nghề nghiệp.

Web Developer

Khi nói về nghề lập trình viên hiện nay, không thể bỏ qua những nhà phát triển web. Đây là những kỹ sư phần mềm chuyên tạo các trang web. Họ là các front-end developer, back-end developer và fullstack developer.

Phát triển Web đã trở thành một cách rất phổ biến để bước vào thế giới kỹ thuật phần mềm vào cuối những năm 90 và đầu những năm 2000. Nó không quá khó, chỉ đòi hỏi kiến ​​thức về HTML và CSS tối thiểu. Với chỉ một vài tháng kinh nghiệm, 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. Đây là một lựa chọn đặc biệt hấp dẫn đối với những người không có nguyên tắc cơ bản về CS và muốn tham gia vào thế giới lập trình .

Desktop Developer

Đây là nhà phát triển làm việc về các ứng dụng phần mềm chạy trên các hệ điều hành máy tính để bàn (như Mac OS, Windows và Linux).

Trở lại những năm 80, đây là một trong những loại kỹ sư phổ biến nhất, với các platform như Turbo Pascal, Turbo C, Visual Basic, Quick C, Visual Studio và Delphi.

Các nhà phát triển máy tính để bàn thường sử dụng Bộ công cụ GUI như Cacao, XAML, WinForms, Gtk,...

Mobile Developer

Đây là nhà phát triển viết code cho ứng dụng chạy trực tiếp trên các thiết bị di động như đ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 đánh giấu cho việc ngày còn có nhiều nhà phát triển di động hơn. Trước đó, phát triển điện thoại di động được coi là một tập hợp con của embedded development.

Các mobile developer hiểu được sự phức tạp của hệ điều hành di động như iOS và Android, môi trường phát triển và các framework được sử dụng để viết phần mềm trên các hệ điều hành đó. Điều đó bao gồm Java, Swift và Objective-C.

Graphics Developer

Đây là một nhánh developer chuyên về viết phần mềm để dựng hình, chiếu sáng, che bóng, đánh bóng, tiêu huỷ và quản lý cảnh. Những nhà phát triển này thường chịu trách nhiệm về việc tích hợp công nghệ vào ngành sản xuất game và video.

Phát triển đồ họa được sử dụng là một hình thức low-level development (low-level không phải chỉ về đẳng cấp lập trình mà nói về độ khó), đòi hỏi sự đào tạo về toán và khoa học máy tính nâng cao. Tuy nhiên ngày nay nó trở nên dễ tiếp cận hơn với việc có nhiều framework thương mại hóa và mã nguồn mở. Ví dụ, rất ít người ngày nay cần để có thể viết một shader từ con số không, không cần sáng tạo lại chiếc bánh xe.

Nhiều framework đã include DirectX, OpenGL, Unity 3D, WebGL. Đối với các nhà phát triển đồ họa cao cấp, low-level development luôn sử dụng C, C ++ và Assembly.

Game Developer

Đây là thuật ngữ chung để xác định một nhà phát triển chuyên làm game. Họ thường có kiến ​​thức, kỹ năng cụ thể trong việc thiết kế và triển khai các trải nghiệm chơi game và tương tác trong nó.

Những framework được các nhà phát triển trò chơi sử dụng bao gồm DirectX, OpenGL, Unity 3D, WebGL và các ngôn ngữ như C, C ++ và Java. Adobe Flash đã từng là nền tảng làm game tiêu chuẩn cho các trò chơi trên web. Vì Flash đang bị lãng quên, nên JavaScript và HTML5 trở thành tiêu chuẩn mới. Trên thiết bị di động, Swift và Java hiện là công nghệ được lựa chọn cho các trò chơi iOS và Android.

Data Scientist

Chức danh này dùng để chỉ những ai viết chương trình phần mềm để phân tích dữ liệu. Họ thường phụ trách phân tích thống kê, machine learning, data visualization, và mô hình tiên đoán.

Các ngôn ngữ được các data scientist sử dụng bao gồm SQL, R và Python.

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 (Extract Transform Load), relational databases, các hệ thống quản lý hồ sơ dữ liệu …

Một big data developer thường quen thuộc với các framework, hệ thống để lưu trữ và xử lý phân phối số lượng lớn dữ liệu như MapReduce, Hadoop và Spark. Ngôn ngữ được sử dụng bao gồm SQL, Java, Python và R.

DevOps Developer

Đây là một kiểu developer về các công nghệ cần thiết cho sự phát triển của các hệ thống để xây dựng, triển khai, tích hợp và quản lý phần mềm và hệ thống phân phối.

Các công nghệ được sử dụng bởi DevOps Engineers bao gồm Kubernetes, Docker, Apache Mesos, HashiCorp stack (Terraform, Vagrant, Packer, Vault, Consul, Nomad), Jenkins, v.v.

CRM Developer

Kiểu nhà phát triển này tập trung về lĩnh vực hệ thống thu thập dữ liệu người dùng và người tiêu dùng. Họ có nhiệm vụ nâng cao sự hài lòng của khách hàng và bán hàng bằng cách cải tiến công cụ được sử dụng bởi các đại diện hỗ trợ khách hàng, quản lý tài khoản và đại diện bán hàng.

Các công nghệ được các nhà phát triển sử dụng bao gồm SAP, Salesforce, Sharepoint và ERP (Enterprise Resource Planning).

Kỹ sư phát triển phần mềm cho test (SDET)

Kiểu nhà phát triển này có trách nhiệm viết phần mềm để xác nhận 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ệ được SDET sử dụng bao gồm Python, Ruby và Selenium.

Nhà phát triển lập trình nhúng - Embedded Developer

Những nhà phát triển này chuyên làm việc với phần cứng. Ví dụ, 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, trình điều khiển phần cứng và truyền dữ liệu nối tiếp nằm trong thể loại này.

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, Java hoặc công nghệ độc quyền, các framework và toolkits.

High-Level Developer

Đây là một thuật ngữ chung cho một nhà phát triển viết code rất xa phần cứng, trong các ngôn ngữ kịch bản cấp cao như PHP, Perl, Python và Ruby. Các nhà phát triển web thường là các nhà phát triển cấp cao, nhưng trong nhiều trường hợp cũng không nhất thiết phải là như vậy.

Low-Level Developer

Đây là một thuật ngữ chung cho một nhà phát triển viết code rất gần với phần cứng, trong các ngôn ngữ cấp thấp như assembly và C. Các nhà phát triển nhúng thường là các nhà phát triển cấp thấp hơn, nhưng tất nhiên trong nhiều trường hợp cũng không nhất thiết phải là như vậy.

WordPress Developer

Tôi thêm các nhà phát triển WordPress trong danh sách này vì họ là một nhóm các nhà phát triển web đặc biệt. Họ tạo và tùy chỉnh các themes, plugin cho WordPress và quản lý các trang web WordPress.

Kiểu nhà phát triển này sử dụng hệ thống WordPress, PHP, JavaScript và HTML.

Security Developer

Kiểu developer 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 tính bảo mật của một hệ thống phần mềm và sửa các lỗi bảo mật. Kiểu nhà phát triển này thường hoạt động như một hacker có đạo đức gọi là "mũ trắng" và cố gắng xâm nhập vào các hệ thống nhằm để phát hiện các lỗ hổng.

Các security developer 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. Các security developer cấp cao thường phải đọc và hiểu thêm về mã nguồn của hệ điều hành được viết bằng c và c++ . Họ cũng có thể bóc tách ngược các thư viện và các hệ thống phần mềm thương mại để tìm và khai thác lỗ hổng.

Có rất nhiều hướng đi mà các nhà phát triển phần mềm có thể tham gia và phát triển trong sự nghiệp của họ. Đối với nghề lập trình viên hiện nay, bất kể bạn bắt đầu với đại học hay chỉ đơn giản là tự học, hoặc có thể xông pha nghiên cứu làm web với project cá nhân hay tạo ra một trò chơi hàng triệu dollar khi nghịch ngợm với chiếc iPhone, mọi thứ đều có thể.

Một khi bạn chọn một con đường, bạn vẫn có thể thay đổi và cập nhật bản thân. Ngay cả khi bạn đã gắn bó với một con đường cho toàn bộ sự nghiệp của mình, bạn sẽ không bao giờ hết thứ để học. Công nghệ phát triển nhanh tới mức việc bạn bị tụt hậu lại phía sau còn dễ hơn là trở nên chán nản bởi chúng.

(Theo coderhood.com)

1