Đóng góp ý kiến và báo lỗi phiên bản mới tại đây

public6 năm trước

Phân Loại Lập Trình Viên: 16 Chức Danh Bạn Nên Biết

Ngành phát triển phần mềm luôn thay đổi liên tục. Các lĩnh vực mới về chuyên môn, công nghệ, phương pháp mọc lên và tồn tại như nấm sau mưa. Song song đó, các thuật ngữ để mô tả và phân biệt các chuyên gia chuyên ngành trở thành một phần không thể tách rời với ngành cũng như với quá trình quảng cáo việc làm, xây dựng hình ảnh của công ty.

Trước khi có sự tồn tại của Internet, nhiều chuyên ngành này vốn gần như không tồn tại. Có thể nói chính internet đã cách mạng hoá con đường sự nghiệp của các kỹ sư phần mềm.

Trong bài này, tôi xác định 16 chức danh phổ biến nhất của các lập trình viên, kỹ sư phần mềm với mô tả ngắn gọn và danh sách các công nghệ họ sử dụng cũng như là kỹ năng mà họ 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ôi, nhưng nó có thể khác nhau tùy thuộc vào công ty, khu vực hoặc ngành.

1. Front-end 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.

2. Back-end 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 back-end 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 back-end 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, v.v.

3. 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…

4. Web Developer

Các nhà phát triển web 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.

5. 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, v.v.

6. 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.

7. 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.

8. 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.

9. 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.

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 (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.

11. 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.

12. 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).

13. 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.

14. 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.

15. 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.

16.  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.

Kết luận

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ọ. 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 techtalk.vn

----------------------------

Hợp Tác Cùng YBOX.VN Truyền Thông Miễn Phí - Trả Phí Theo Yêu Cầu tại http://bit.ly/YBOX-Partnership

6,845 lượt xem