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ữ để tả và phân biệt các chuyên gia chuyên ngành trở thành một phần chẳng thể tách rời với ngành cũng như với quá trình lăng xê 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ư thườ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ổ quát nhất của các lập trình viên, kỹ sư phần mềm với biểu hiện 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 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. đa số 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 – 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. thí dụ: hãy xem xét phương tiện quãng 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 báo web, lập chỉ mục nó, và tìm thấy những gì bạn đang từng 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 dùng thêm một số phương tiện 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 áp dụng web đầy đủ chức năng.
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ổ thông để 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 chọn lựa đặc biệt quyến rũ đối với những người không có nguyên tắc căn bản về CS và muốn dự 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 áp 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 dùng Bộ phương tiện 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 sáng ý 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ụ tậ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 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 sinh sản 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 hiện tại nó trở nên dễ tiếp cận hơn với việc có nhiều framework thương nghiệp hóa và mã nguồn mở. thí 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 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à khai triển 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 dùng bao gồm DirectX, OpenGL, Unity 3D, WebGL và các tiếng nói như C, C ++ và Java. Adobe Flash đã từng là nền mó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 đảm nhận 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. tiếng nói được 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, khai triển, 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 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ự bằng 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 tương trợ khách hàng, quản lý account 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ó bổn phận viết phần mềm để công nhận chất lượng của hệ thống phần mềm. Họ tạo ra các bài soát, phương tiện và hệ thống tự động để bảo đảm rằng các sản phẩm và quy trình chạy như trông chờ.
Các công nghệ được SDET 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. tỉ dụ, vi điều khiển, hệ thống thời kì 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 loại thể này.
Các nhà phát triển nhúng thường làm việc với các tiếng nói 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 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 để rà 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ầm 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 tiếng nói script như Python hoặc Ruby và hiểu chi tiết các cách thức được dùng để tiế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à vỡ hoang 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 dự 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 tinh nghịch 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 vớ 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ở thành chán nản bởi chúng.

0 nhận xét:
Đăng nhận xét