Ngành phát triển phần mềm luôn đổi thay 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. đồng thời đó, 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ư chơi 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ổ thông nhất của các lập trình viên, kỹ sư phần mềm với 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 hệ 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 đông 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 hợp qua trình duyệt và tinh chỉnh chi tiết về mô tả trực giác 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ế, khai triển, 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 chẳng thể hiện ra ngoài. thí dụ: hãy coi xét dụ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 dạo 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 tiếng nói 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ố 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 á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ổ 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 chọn lọc đặ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 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ổ quát 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ộ 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 vận 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 sáng ý đá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 giao hội 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 dùng là một hình thức low-level development (low-level không phải chỉ về thứ hạng 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ở. tỉ dụ, rất ít người hiện tại 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 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ở nên tiêu chuẩn mới. Trên thiết bị di động, Swift và Java hiện là công nghệ được tuyển lựa 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 nhiệm phân tích thống kê, machine learning, data visualization, và mô hình tiên lượng.
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 thân 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 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ấp 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 hội tụ 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ự ưng ý của khách hàng và bán hàng bằng cách cải tiến công cụ được dùng bởi các đại diện hỗ trợ khách hàng, quản lý trương mục và đại diện bán hàng.
Các công nghệ được các nhà phát triển 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 để 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, dụ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ư 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 thể loại 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 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 để rà soát 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ố thâ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 dụ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 sử 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 nghiệp để tìm và khai 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ể đổi thay và cập nhật bản thân. Ngay cả khi bạn đã gắn bó với một con đường cho tuốt 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 nản bởi chúng.
0 nhận xét:
Đăng nhận xét