Home Blog Page 34

TopDev phát hành Báo cáo thị trường IT Việt Nam năm 2023: Điểm sáng trong phục hồi kinh tế gắn liền với chương trình đổi mới sáng tạo và chuyển đổi số quốc gia

Báo cáo thị trường IT Việt Nam năm 2023

Việt Nam đã và đang nổi lên như một nhân tố chủ chốt trong bối cảnh công nghệ toàn cầu, thu hút đầu tư đáng kể và thúc đẩy tăng trưởng nhanh chóng trong những năm gần đây. Trong bối cảnh nền kinh tế quốc gia đang phục hồi và phát triển, quan hệ hữu nghị, hợp tác song phương và đa phương với các nước phát triển đang là đường lối và chủ trương chiến lược của Đảng và Nhà nước. Cùng với đó, việc đầu tư áp dụng Công nghệ & Chuyển đổi số vào doanh nghiệp được phát triển mạnh dẫn đến việc Tuyển dụng nhân tài công nghệ trở thành một trong những mối quan tâm chính của các Nhà quản lý nhân sự và chủ doanh nghiệp hiện nay.  Điều đó càng đặc biệt được chú trọng trong bối cảnh cán cân cung – cầu trong tuyển dụng nhân sự Công nghệ ngày càng thay đổi và trở nên cạnh tranh mạnh mẽ hơn. 

Báo cáo thị trường IT Việt Nam năm 2023
Hình 1: Báo Cáo Thị Trường IT Việt Nam của TopDev năm 2023

Những thay đổi nhanh chóng sau đại dịch Covid-19 và suy thoái kinh tế toàn cầu đặt ra nhiều thách thức cho thị trường nhân sự và doanh nghiệp trong bối cảnh duy trì sự ổn định tài chính. Bên cạnh suy thoái kinh tế, cuộc Cách mạng kỹ thuật số dựa trên trí tuệ nhân tạo đặt ra nhiều thách thức nhưng mở ra nhiều cơ hội phát triển mới cho doanh nghiệp trong nước. Để có sự thích nghi với thời đại số hóa, thị trường bắt đầu yêu cầu nguồn nhân lực công nghệ có nền tảng kỹ thuật vững, tư duy kinh doanh và những chuyên môn cần thiết trong công cuộc đổi và phát triển doanh nghiệp.

Với báo cáo vừa phát hành, ông Park JongHo – CEO TopDev chia sẻ:

Tôi tin chắc rằng những thay đổi và chuyển động lớn đang ở phía trước chúng ta. Bên cạnh suy thoái kinh tế, cuộc cách mạng kỹ thuật số và công nghệ dựa trên trí tuệ nhân tạo thay đổi nhanh chóng sau đại dịch Covid-19 đặt ra nhiều thách thức cho thị trường nhân sự. Trong làn sóng thay đổi lớn này, chúng ta sẽ phải nỗ lực để hiểu rõ hơn về doanh nghiệp và con người. Cùng với việc thay đổi công nghệ, sự hiểu biết lẫn nhau này sẽ góp phần to lớn vào sự phát triển của xã hội, ngành công nghiệp và quốc gia của chúng ta.

1. Tổng quan tình hình ngành Công nghệ thông tin 2023

Mối quan hệ hợp tác chiến lược Việt Nam – Mỹ sau chuyến viếng thăm của Tổng thống Joe Biden trong bối cảnh nền kinh tế quốc gia đang phục hồi và phát triển đặt ra nhiều cơ hội và thách thức cho các doanh nghiệp trong nước thực hiện đầu tư và sáng tạo trong chính sách tăng cường chuyển đổi số quốc gia. Trong số các lĩnh vực kinh doanh, công nghệ thông tin và truyền thông (CNTT-TT) là một trong những ngành mở rộng nhanh nhất ở Việt Nam. Ngành công nghiệp CNTT của Việt Nam nói chung và ngành công nghiệp dịch vụ CNTT đã chứng kiến sự tăng trưởng tích cực trong 5 năm qua và đạt được những thành tựu đáng kể.

Theo số liệu của Tổng cục Thống kê, tình hình đăng ký doanh nghiệp tháng 8/2023 đã khởi sắc hơn tháng trước, có hơn 14 nghìn doanh nghiệp thành lập mới với số vốn đăng ký là 135,3 nghìn tỷ đồng và số lao động đăng ký 79,9 nghìn lao động, tăng 2,3% về số doanh nghiệp, tăng 6,6% về vốn đăng ký và tăng 1,2% về số lao động so với tháng 7/2023.

Nhằm đẩy mạnh triển khai thực hiện Chương trình chuyển đổi số quốc gia đến năm 2025 và Chiến lược quốc gia về phát triển doanh nghiệp công nghệ số Việt Nam đến năm 2030, chính phủ đang rất tập trung xây dựng kế hoạch và bố trí nguồn lực hỗ trợ doanh nghiệp, đặc biệt là các doanh nghiệp nhỏ và vừa trên địa bàn thực hiện chuyển đổi số, đổi mới sáng tạo, chuyển giao công nghệ phù hợp. Ngoài ra, Việt Nam cũng đang thúc đẩy hệ sinh thái các đơn vị hỗ trợ cho các nhà sản xuất chip góp phần giúp Việt Nam trở thành một trong những quốc gia có nhiều hoạt động sản xuất chip trong khu vực. Ngày càng có nhiều doanh nghiệp Việt Nam có khả năng tham gia vào ngành công nghiệp hỗ trợ sản xuất chip với lực lượng hiện tại khoảng 50 doanh nghiệp trong nước và hơn 5.000 kỹ sư Việt Nam tham gia thiết kế chip. Qua đó, việc xây dựng hệ sinh thái doanh nghiệp hỗ trợ và đội ngũ kỹ sư thiết kế chip, kỹ sư điện tử sẽ giúp Việt Nam từng bước nâng cấp và tham gia sâu hơn vào chuỗi giá trị vi mạch toàn cầu. 

Báo cáo thị trường IT Việt Nam năm 2023
Hình 2: Tốc độ tăng trưởng GDP & Ngành ICT theo Báo cáo thị trường IT Việt Nam TopDev Quý 3 2023

Trong số các lĩnh vực kinh doanh, công nghệ thông tin và truyền thông (ICT) là một trong những lĩnh vực phát triển nhanh nhất ở Việt Nam. Ngành CNTT Việt Nam nói chung và ngành dịch vụ CNTT có sự tăng trưởng tích cực trong 5 năm qua. Doanh thu lĩnh vực công nghiệp công nghệ thông tin (ICT) của Việt Nam trong 5 năm qua liên tục tăng trưởng cao, từ gần 103 tỷ USD năm 2018 lên hơn 124,67 tỷ USD năm 2020 và 136,15 tỷ USD vào năm 2021. Trong đó, kim ngạch xuất khẩu phần cứng, điện tử năm 2022 ước đạt 136 tỷ USD, tăng 11,6% so với năm 2021; xuất siêu hơn 26 tỷ USD. Trong bảng xếp hạng Chỉ số Đổi mới sáng tạo toàn cầu GII 2021, Việt Nam xếp thứ 44 trên 132 quốc gia/nền kinh tế.

2. Nhu cầu nhân lực thị trường IT Việt Nam 2023

Sự thiếu hụt nhân sự CNTT luôn là vấn đề khó khăn nhất đối với thị trường CNTT. Mặc dù mức lương và phúc lợi của ngành này vẫn giữ xu hướng tăng và có phần cao hơn so với mặt bằng chung. Dự đoán từ năm 2023 – 2025, Việt Nam vẫn sẽ thiếu hụt từ 150.000 đến 200.000 lập trình viên/ kỹ sư hàng năm. Đa số các nhà tuyển dụng cho biết họ hầu như luôn cần các lập trình viên Back-end, lập trình viên Full-stack và Front-end. Top 5 kỹ năng CNTT hàng đầu mà các công ty đang tìm kiếm vẫn giữ nguyên  như những năm trước: Javascript, Java, PHP, C#/.Net & Python.

Báo cáo thị trường IT Việt Nam năm 2023
Hình 3: Báo Cáo Thị Trường IT Việt Nam 2023 của TopDev về nhu cầu nhân lực ngành CNTT 2023

Theo các số liệu thống kê từ năm 2018 – 2023 được đưa ra, nhu cầu nhân lực cho ngành công nghệ thông tin tại Việt Nam vẫn đang tăng cao liên tục dù trong bối cảnh kinh tế nhiều biến động. Dựa trên Báo cáo về thị trường IT Việt Nam 2023 của TopDev, đến năm 2025 Việt Nam sẽ còn cần đến 700.000 nhân lực trong ngành công nghệ thông tin. Trong khi đó, số lượng lập trình viên hiện tại của Việt Nam mới chỉ đạt khoảng 530.000 người.

Thực tế, số lượng ngành học về công nghệ thông tin ở các trường đại học đang mở rộng ngày càng nhiều cũng như số lượng cử nhân tốt nghiệp chuyên ngành này vẫn tăng cao qua mỗi năm, tại sao vẫn có sự chênh lệch này? Sự thiếu hụt này chủ yếu là do trình độ của lập trình viên và yêu cầu doanh nghiệp đặt ra vẫn chưa thực sự cân bằng với nhau. Theo báo cáo, trong số hơn 57.000 sinh viên công nghệ thông tin tốt nghiệp mỗi năm chỉ có khoảng 30% lực lượng nhân sự đáp ứng được những kỹ năng và chuyên môn yêu cầu thực tế mà doanh nghiệp đặt ra, 70% còn lại cần được bố trí đào tạo thêm tại doanh nghiệp trong 3 – 6 tháng để đạt hiệu quả công việc tương ứng.

3. Cuộc cạnh tranh khó khăn hơn với nhiều sự thay đổi trong nhu cầu tuyển dụng & thị trường lao động

Nhu cầu tuyển dụng trong lĩnh vực IT vẫn luôn trên đà tăng trưởng nhanh và mạnh. Do sự thay đổi và ảnh hưởng của tình hình kinh tế – xã hội chung cũng như dựa trên các kỹ năng cứng và kỹ năng mềm mà lập trình viên sở hữu, mức lương cũng như trình độ sẽ được phân loại một cách rõ ràng hơn trong thời gian tới.

Báo cáo thị trường IT Việt Nam năm 2023
Hình 4: Báo Cáo Thị Trường IT Việt Nam 2023 của TopDev về nhu cầu nhân lực và mức lương Lập trình viên ngành CNTT 2023

Bên cạnh kỹ năng chuyên môn vững vàng, những kỹ năng mềm như khả năng tư duy phát triển, giao tiếp, quản lý thời gian, trình độ ngoại ngữ,… cũng là yếu tố quan trọng trong quá trình tuyển chọn và đánh giá ứng viên của nhà tuyển dụng. 

Sự biến động và thay đổi nhanh của Công nghệ thông tin và khoa học kỹ thuật cũng như sự đổi mới liên tục của công nghệ đòi hỏi ở các lập trình viên khả năng thích ứng nhanh và nhạy bén với mọi sự biến đổi. Các lập trình viên cần nâng cao kỹ năng công nghệ của bản thân với sự hiểu biết về các công nghệ mới và đột phá như Cybersecurity, DevOps, AI và Machine Learning, Cloud Computing,…

Với tinh thần tỉnh táo và bản lĩnh trí tuệ, Việt Nam vẫn cho thấy được những tín hiệu khả quan trong sự tăng trưởng về kinh tế cũng như thu hút các nhà đầu tư chiến lược từ nước ngoài, trong đó có cả lĩnh vực công nghệ thông tin. Để tìm hiểu chi tiết hơn về thị trường IT Việt Nam trong nửa đầu năm 2023 và xu hướng trong thời gian tới, bạn có thể đón đọc Vietnam IT Market Report 2023 – Vietnam Tech Talents Report do TopDev thực hiện tại đây.

BẢNG TIẾNG VIỆT

ENGLISH VERSION

Về TopDev

Với hơn 380.000 profile lập trình viên, TopDev hiện là nền tảng tuyển dụng chuyên về IT hàng đầu tại Việt Nam, hơn 1 triệu truy cập website hàng tháng và hơn 100.000 người dùng ứng dụng Tìm việc IT trên di động.  TopDev là đơn vị tiên phong và duy nhất trong lĩnh vực IT tại Việt Nam giúp xây dựng và phát triển Thương Hiệu Tuyển Dụng – Employer Brand cho hàng trăm công ty trong và ngoài nước thông qua 2 sự kiện công nghệ lớn nhất hàng năm: Vietnam Mobile Day & Vietnam Web Summit. Ngoài ra, TopDev còn là đơn vị uy tín chuyên khảo sát, phân tích và phát hành các báo cáo hàng năm về thị trường IT – nhân lực IT tại Việt Nam và sở hữu cộng đồng Developer lớn nhất Việt Nam. 

Nguồn trích dẫn thông tin trong TCBC:

Program Manager là gì? Học gì để trở thành Program Manager

Program Manager là gì? Học gì để trở thành Program Manager

Trong công ty chúng ta thường nghe nhắc đến vai trò của một Project Manager là người quản lý các dự án. Ở những tổ chức có quy mô lớn hay dự án lớn hơn, vị trí Program Manager được xem là người quản lý một tổ hợp nhiều dự án có liên quan đến nhau, hay nói cách khác thì Program Manager được xem là quản lý cấp trên của các Project Manager. Đây là một vị trí đòi hỏi kiến thức, kinh nghiệm và các kỹ năng về quản lý cấp cao, cũng là vai trò mà nhiều anh chị em hướng đến trong sự nghiệp. Bài viết hôm nay chúng ta cùng nhau tìm hiểu xem Project Manager là gì và cần học gì để trở thành một Program Manager nhé.

Program Manager là gì?

Program Manager hay Quản lý chương trình (có tổ chức sẽ gọi là Giám đốc chương trình) là người chịu trách nhiệm quản lý một nhóm các dự án liên quan; các dự án này được kết hợp với nhau thành các chương trình (program) để đáp ứng được nhu cầu của khách hàng hay tổ chức.

Từ “Program” ở đây mang ý nghĩa là một chuỗi các hoạt động liên quan với nhau trong một thời gian dài; nghĩa là một Program Manager sẽ là quản lý chung các dự án một cách đồng bộ để thu được những lợi ích không có sẵn từ việc quản lý chúng một cách đơn lẻ. Đây cũng là điểm khác biệt nhất khi so sánh giữa Program Manager và Project Manager, 2 vị trí thường dễ bị nhầm lẫn vai trò trong cùng một tổ chức.

Program Manager là gì?

Trong quá trình quản lý các dự án (Project Management) có liên quan với nhau, thực tế chỉ ra rằng các kết quả đầu ra được tạo bởi từng dự án có thể không thể đoán trước và không kiểm soát được; do đó; nhóm các dự án tạo thành chương trình nên được quản lý theo cách nhận ra nhu cầu tiềm năng để điều chỉnh các chiến lược và kế hoạch trong quá trình thực hiện chương trình để tối ưu hóa việc cung cấp lợi ích. Từ đó mà vị trí Program Manager ra đời với công việc quan trọng đảm bảo các thành phần chương trình được điều chỉnh theo yêu cầu để đáp ứng được các mục tiêu chiến lược của tổ chức.

  IT Manager Là Gì? Những Điều Bạn Cần Biết Về IT Manager

Vai trò của một Program Manager

Nhiệm vụ của một Program Manager là quản lý, điều phối để đảm bảo đạt được mục tiêu của chương trình, đồng thời phải tối ưu lợi ích của chương trình bằng cách phân phối và liên kết các thành phần của chương trình một cách hợp lý.

Vai trò của một Program Manager

Vai trò của một Program Manager bao gồm:

  • Căn chỉnh chiến lược chương trình, quản lý lợi ích chương trình, quản lý sự tham gia của các bên liên quan trong chương trình, quản trị chương trình và quản lý vòng đời chương trình
  • Tương tác với các Project Manager hay Program Manager khác để cung cấp hỗ trợ và hướng dẫn về các sáng kiến cá nhân được thực hiện để hỗ trợ một chương trình
  • Đảm bảo các chương trình được cung cấp các nguồn lực với độ ưu tiên phù hợp
  • Đảm bảo cấu trúc chương trình tổng thể và các quy trình quản lý chương trình được áp dụng cho phép đội nhóm chương trình và đội nhóm các thành phần hoàn thành thành công công việc và mang lại lợi ích dự đoán. 

Tham khảo các vị trí tuyển dụng Software Manager lương cao trên TopDev

Học gì để trở thành Program Manager?

Công việc chính của một Program Manager vẫn là quản lý, không hoàn toàn tập trung vào một kỹ thuật chuyên môn nào đó. Vì thế nếu muốn trở thành một Program Manager, bạn hoàn toàn có thể không xuất phát từ lĩnh vực kỹ thuật cụ thể, hay nói cách khác thì Non-tech cũng có thể trở thành Program Manager được.

Học gì để trở thành Program Manager

Program Management là một công việc khó, yêu cầu có nhiều năm kinh nghiệm làm việc ở vai trò quản lý dự án (Project Manager). Thông thường khi có kinh nghiệm làm quản lý dự án trong một thời gian, bạn sẽ có thể học và thi lấy một số chứng chỉ quản lý cấp cao hơn và hướng đến việc trở thành một quản lý chương trình trong tương lai. Có thể xem để trở thành Program Manager, trước tiên hãy học để trở thành một Project Manager.

  Xu hướng tuyển dụng IT năm 2024 mà mọi HR Manager cũng như IT Manager cần biết!

Bạn cần học và trang bị các kỹ năng, bằng cấp, chứng chỉ cần thiết như dưới đây để trở thành một Project Manager:

  • Kỹ năng quản lý dự án bao gồm lập kế hoạch, tổ chức và điều phối các hoạt động trong dự án, quản lý thời gian, nguồn lực, rủi ro và tiến độ công việc
  • Kỹ năng giao tiếp với các bên liên quan (stakeholders) bao gồm thành viên dự án, đối tác, khách hàng, lãnh đạo
  • Kiến thức chuyên môn về dự án, các nguyên tắc, phương pháp quản lý dự án và sự hiểu biết về công nghệ, quy trình và tiêu chuẩn liên quan đến dự án
  • Kỹ năng nhận biết và giải quyết các vấn đề phát sinh cùng khả năng thích ứng linh hoạt khi có sự thay đổi.

Các chứng chỉ mà bạn có thể tham khảo để tăng giá trị kinh nghiệm cũng như mức độ tin cậy trong vị trí quản lý dự án hay quản lý chương trình:

  • Google Project Management Certificate: chứng chỉ quản lý dự án chuyên nghiệp Google
  • Project Management Professional: chứng chỉ quản lý dự án chuyên nghiệp PMP
  • Agile Project Management Certificate: chứng chỉ quản trị dự án Agile
  • Certified Project Director – CPD: Chứng nhận giám đốc dự án
  • Certified Associate in Project Management – CAPM: chứng nhận liên kết trong quản lý dự án

Kết bài

Quản lý chương trình là một vị trí đòi hỏi ưu tiên tư duy chiến lược hơn là phản ứng chiến thuật thuần túy; vì thế Program Manager cần mang lại cho tổ chức những giá trị lâu dài cho tầm nhìn và hướng đi. Qua bài viết này, hy vọng các bạn đã hiểu hơn về nghề quản lý chương trình cũng như cần học, trang bị kiến thức gì để trở thành một Program Manager trong tương lai. Cảm ơn các bạn đã đọc bài và hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Có thể bạn quan tâm:

Xem thêm tuyển dụng việc làm IT hấp dẫn trên TopDev

Kỹ thuật debug ứng dụng viết bằng Node.js hiệu quả

Kỹ thuật debug ứng dụng viết bằng Node.js hiệu quả

Bài viết được sự cho phép của tác giả Tống Xuân Hoài

Vấn đề

Debug là một trong những kỹ năng không thể thiếu của một developer. Trong bất kỳ vị trí nào, ngôn ngữ gì… mà có liên quan đến viết mã thì không thể không biết debug. Bởi mỗi dòng code được thêm vào, nguy cơ tạo ra lỗi càng tăng. Debug giúp cho chúng ta tiến hành tìm ra nguyên nhân của lỗi, hay chí ít là kiểm tra xem liệu chương trình có đang hoạt động đúng như ta mong muốn.

Với mỗi nền tảng hay ngôn ngữ có các cách debug khác nhau, tùy thuộc vào khả năng chăm chút của nhà phát triển mà nó đi từ dễ dàng đến khó. Trong Node, có nhiều cách để developer tiến hành gỡ lỗi. Một trong những cách đó là “console.log every where”. Vậy ngoài console.log ra thì còn cách nào debug ứng dụng viết bằng Javascript/Node.js nữa hay không?

Console.log tốt nhưng chưa đủ

Bạn được học cách in mọi thứ ra màn hình bằng console.log. Muốn xem nội dung của biến thì console.log, muốn xem chương trình có chạy vào hàm này không cũng console.log, thậm chí console.log ra nhiều dòng thông tin khác để nhìn cho dễ… Điều này vô hình gây ra những phiền hà, thậm chí là rắc rối như mã trở nên cồng kềnh, rối loạn thông tin trong console… khiến cho nhiều người có cái nhìn không thiện cảm với nó.

Lợi ích console.log mang lại chúng ta thấy rõ, vì tính chất hiển thị ra được thông tin nhanh gọn mà nó thường được sử dụng trong debug. Bằng cách đặt console.log ở những vị trí mà ta muốn theo dõi giúp người gỡ lỗi nhanh chóng nắm bắt được luồng cũng như vị trí gây ra lỗi. Tuy nhiên việc sử dụng console.log vô tội vạ hoặc lạm dụng gây ra một sự “nhiễu loạn” thông tin khủng khiếp trong console, thậm chí nó còn có khả năng gây ra vấn đề về hiệu năng.

Nếu bạn vẫn hay sử dụng console.log để debug mà cảm hài lòng thì tôi vẫn muốn giới thiệu cho bạn một phương pháp mới hơn. Bởi vì lợi ích nó mang lại hơn hẳn console.log về mọi mặt. Còn bạn đang cảm thấy không hài lòng thì quả là khởi đầu tuyệt vời.

  Một số cách để viết mã dễ đọc hơn trong JavaScript/Node.js

  5 điều gây rò rỉ bộ nhớ (memory leak) trong Node.js và cách khắc phục

Inspector và cách hoạt động

Inspector là một trình gỡ lỗi được tích hợp trong Node.js, khi khởi chạy ứng dụng với cờ inspect hoặc --inspect, Node.js sẽ khởi chạy và lắng nghe trình gỡ lỗi. Theo mặc định nó lắng nghe ở địa chỉ và cổng 127.0.0.1:9229. Để kết nối đến, hoặc sử dụng các trình debug chuyên nghiệp bạn sẽ phải kết nối đến một địa chỉ trông giống như là ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e với 0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e là UUID của ứng dụng.

Ví dụ bạn có một file index.js:

const a = 1;
const b = 2;
const sum = a + b;

Khi debug bằng console.log, muốn biết giá trị của sum thì đặt console.log(sum) ngay bên dưới. Còn khi debug với cờ inspect như sau:

$ node inspect index.js
< Debugger listening on ws://127.0.0.1:9229/2855e131-b944-4ae4-bb4d-a6d374b83088
< For help, see: https://nodejs.org/en/docs/inspector
< Debugger attached.
Break on start in index.js:1
> 1 const a = 1;
  2 const b = 2;
  3 const sum = a + b;

Bạn sẽ thấy kết quả trông giống như trên, với dòng Break on start in index.js:1 đang bắt đầu từ dòng thứ nhất. Bây giờ nhập n rồi enter bạn sẽ thấy chuyển sang dòng 2:

debug> n
break in index.js:2
  1 const a = 1;
> 2 const b = 2;
  3 const sum = a + b;
  4 

Muốn xem giá trị của a, chúng ta dùng lệnh watch.

debug> watch('a')

Lúc này giá trị của a chưa hiển thị ra, thao tác trên chỉ mới khởi tạo nhiệm vụ theo dõi giá trị của a thôi, hãy nhập n để đến dòng tiếp theo bạn sẽ thấy giá trị của a xuất hiện.

debug> n
break in index.js:3
Watchers:
  0: a = 1

  1 const a = 1;
  2 const b = 2;
> 3 const sum = a + b;
  4

Ngoài các chỉ thị n và các hàm watch ra còn nhiều chỉ thị và lệnh khác, bạn đọc xem thêm tại Debuger Command reference.

Chà, đến đây nhiều bạn sẽ thấy debug sao mà khó khăn đến thế, cứ gõ gõ như thế thì đến bao giờ. Đúng thật gõ như thế thì biết đến bao giờ mới xong, đã thế lại còn khó thao tác, khó theo dõi nữa.

Nhưng điều tôi trình bày trên chỉ là cách debug bằng công cụ dòng lệnh (CLI), đó cũng là nền móng của những công cụ debug hiện đại. Tôi chỉ muốn trình bày ra cho mọi người hiểu cách hoạt động của Inspector, còn trong thực tế chúng ta sẽ debug thông qua công cụ trợ giúp của Text editor hoặc IDE.

Xem thêm việc làm Node.js developer hấp dẫn nhất tại TopDev

Debug bằng Break point Tích hợp Text editor / IDE

Break point là vị trí bạn muốn trình debug nhảy đến ngay lập tức mà không phải next qua từng dòng. Break point hiệu quả trong trường hợp bạn xác định được ngay vị trí nghi ngờ hoặc muốn kiểm tra trạng thái của tất cả các biến từ đầu đến khi chạy đến vị trí đó.

Hầu hết các trình viết code Node.js đều có công cụ debug, và nó dựa trên Inspector. Ví dụ nếu bạn đang dùng VSCode, hãy bấm vào Run and Debug.

 Kỹ thuật debug ứng dụng viết bằng Node.js

Bấm vào Show all automatic debug configurations > Node.js > Run Current file để chạy debug trên tệp hiện tại.

 Kỹ thuật debug ứng dụng viết bằng Node.js

Để đặt Break point rất đơn giản, chỉ cầm bấm vào bên trái số dòng một chấm đỏ sẽ hiện ra tức là bạn đã đặt thành công tại vị trí đó.

 Kỹ thuật debug ứng dụng viết bằng Node.js

Bây giờ hãy chạy debug, bạn sẽ thấy trình gỡ lỗi dừng lại ở dòng số 3.

 Kỹ thuật debug ứng dụng viết bằng Node.js

Thử di chuột vào các biến absum bạn sẽ thấy giá trị hiện tại của chúng khi chương trình chạy đến dòng thứ 3.

Hoặc là nhìn vào ô phía bên tay trái, đó là nơi chứa tất cả dữ liệu của trình gỡ lỗi thu thập được khi chạy chương trình.

 Kỹ thuật debug ứng dụng viết bằng Node.js

Để next hoặc thực hiện các thao tác khác trong quá trình gỡ lỗi, hãy để ý vào trình điều khiển giống như thế này tại cửa sổ VSCode.

 Kỹ thuật debug ứng dụng viết bằng Node.js

Có thể bạn cần phải học các sử dụng từng nút tại bài viết này. Bật mí nút đầu tiên giúp bạn nhanh chóng nhảy đến điểm Break point tiếp theo hoặc kết thúc lượt debug nếu không còn Break point nào sau đó.

Cuối cùng, bạn đọc có thể tìm hiểu chi tiết hơn về cách debug ứng dụng viết bằng Javascript/Node.js tại Node.js debugging in VS Code.

Tổng kết

Debug là một trong những kỹ năng không thể thiếu của một developer. Còn code là còn bug mà muốn fix bug thì phải trang bị cho mình kỹ năng gỡ lỗi chuyên nghiệp. Inspector là một trình gỡ lỗi được tích hợp trong Node.js, các Text editor hoặc IDE dựa vào Inspector để tạo cho chúng ta một trình gỡ lỗi chuyên nghiệp mà tiện ích hơn rất nhiều so với console.log.

Bài viết gốc được đăng tải tại 2coffee.dev

Xem thêm:

Xem thêm các việc làm công nghệ hấp dẫn trên TopDev

Những câu hỏi phỏng vấn lập trình viên hay gặp nhất

Những câu hỏi phỏng vấn lập trình viên nhất định phải biết

Bài viết được sự cho phép của tác giả Sơn Dương

Dù bạn là ai, khi đi xin việc đều phải trải qua các vòng phỏng vấn với nhà tuyển dụng. Cho dù bạn ứng tuyển vào vị trí bảo vệ tới chuyên gia, thậm chí lãnh đạo cấp cao… Vị trí càng cao thì buổi phỏng vấn càng căng thẳng.

Với ngành công nghệ thông tin hay cụ thể là lập trình viên, việc chuẩn bị trước những câu hỏi sẽ giúp bạn tự tin hơn trong buổi phỏng vấn.

Không biết các bạn có giống mình không, chứ bình thường mình có kiến thức cũng khá chắc về các kiến thức lập trình. Nhưng khi bước vào buổi phỏng vấn, mọi kiến thức quen thuộc lại “đội nón” bay đi đâu hết.

Do vậy, trước mỗi buổi phỏng vấn quan trọng, mình đều phải lướt qua những kiến thức, đặc biệt là các câu hỏi phỏng vấn lập trình viên hay gặp. Điều này giúp mình tự tin hơn.

Những câu hỏi phỏng vấn lập trình viên hay gặp nhất

Bài viết này mình sẽ điểm lại những câu hỏi phỏng vấn phổ biến nhất được đúc kết từ hàng nghìn ứng viên.

Nhưng trước đó, cùng xem qua những điều cần chuẩn bị trước buổi phỏng vấn đã nhé.

#Cần chuẩn bị gì trước buổi phỏng vấn

Để buổi phỏng vấn được diễn ra suôn sẻ, công tác chuẩn bị là vô cùng quan trọng. Chuẩn bị ở đây là chuẩn bị về kiến thức, tác phong của bạn.

Cần chuẩn bị gì trước buổi phỏng vấn
Những việc cần chuẩn bị trước buổi phỏng vấn

Dưới đây là những danh mục, đầu việc mà mình nghĩ bạn nên chuẩn bị:

1. Chuẩn bị kiến thức chuyên môn

Tất nhiên, không thể nào bảo bạn học tất cả những kiến thức liên quan đến yêu cầu công việc của nhà tuyển dụng được. Chỉ cần bạn điểm lại những kiến thức cơ bản mà bạn đã biết để tránh trường hợp bị quên khi hỏi mặc dù bình thường bạn nắm rất rõ.

Ví dụ: bạn ứng tuyển vị trí lập trình Android – Java. Vậy thì ít nhất bạn cũng nên xem lại những kiến thức cơ bản như vòng đời Activity, Fragment, AsyncTask… cách thiết kế layout … Hay lập trình hướng đối tượng là gì?

Nói chung, bạn nên xem lại một lượt kiến thức cơ bản. Có kiến thức chúng ta không sợ trời, không sợ đất.

  Tuyển tập bộ câu hỏi phỏng vấn IoT Engineer hay nhất

  Gợi ý trả lời câu hỏi phỏng vấn Data Scientist hay nhất

2. Xây dựng checklist những thứ thiết

Trước buổi phỏng vấn, bạn cần lên danh sách những thứ nên mang theo để ghi điểm với nhà tuyển dụng, cũng như hỗ trợ đắc lực cho bạn.

Hai việc quan trọng nhất, đó là:

  • Bạn cần in bản mô tả công việc cùng với thông tin về công tin. Điều này chứng tỏ bạn rất quan tâm và tìm hiểu kỹ về công việc cũng như công ty mà định ứng tuyển.
  • In bản CV và mang tới buổi phỏng vấn. Nên in nhiều bản nếu bạn không biết có bao nhiêu người trong buổi phỏng vấn. Mục đích là đủ phát mỗi người một bản CV.

Về cơ bản, bạn chỉ cần chuẩn bị như vậy là đủ. Điểm quan trọng nhất đó chính là sự tự tin. Bạn phải luôn tự tin vào bản thân là được.

Ok, đã chuẩn bị xong thì tiếp theo là tới buổi phỏng vấn thôi!

Việc làm Data Analytics HOT tại TP. Hồ Chí Minh

#Những lưu ý để buổi phỏng vấn thành công

Lưu ý để buổi phỏng vấn thành công
Lưu ý để buổi phỏng vấn thành công

Sau đây là những lưu ý khi đi phỏng vấn:

  • Không đến trễ: Đi muộn là điều tối kỵ với buổi phỏng vấn. Nhưng cũng đừng đến sớm quá. Tốt nhất là đến trước 5-15 phút là chuẩn nhất. Nếu bạn không thể làm chủ được thời gian do ngoại cảnh như tắc đường, xịt lốp xe… thì lời khuyên của mình là đến sớm nhưng không vào, ngồi đợi trà đá vỉa hè ở phía.
  • Ngừng “ôn bài”: Đây không phải là thời điểm để bạn luyện tập cách trả lời. Giờ là lúc bạn nên để tinh thần thật thoải mái và luôn tự tin vào bản thân. Nhà tuyển dụng cũng rất thích những người tự tin vào bản thân.
  • Ngừng kiểm tra email, mạng xã hội: Trong lúc chờ đợi bạn thường kiểm tra email, facebook để giết thời gian. Nhưng điều này chỉ tổ làm bạn thêm bồn chồn, lo lắng mà thôi. Hãy ưu tiên cho buổi phỏng vấn cho tới khi nó kết thúc.
  • Chỉnh đốn trang phục: Điều này chắc mình không cần phải nói chi tiết nữa nhỉ. Đừng để rau dính răng là được

Ngoài ra, còn nhiều điều chi tiết nhỏ nhặt khác nữa. Nhưng với mình thì những điều trên là quan trọng nhất rồi, còn trong buổi phỏng vấn tùy cơ ứng ứng biến. Luôn luôn tự tin vào bản thân và tôn trọng người đối diện là được.

#Top 10 câu hỏi phỏng vấn lập trình viên phổ biến nhất

Dưới đây là 10 câu hỏi mà mình thấy rất nhiều bạn khi đi xin việc về lập trình hay gặp phải.

1. Anh/Chị hãy giới thiệu về bản thân.

Có lẽ đây là câu hỏi mở đầu buổi phỏng vấn kinh điển nhất rồi. Với kinh nghiệm 5 lần đi phỏng vấn của mình thì câu này không trượt phát nào.

Bạn cứ tự tin giới thiệu về bản thân mình thôi. Như tên, tuối, trình độ đại học, điểm mạnh chuyên môn (ví dụ: có nhiều kinh nghiệm về NodejsAndroid Framework…)

Tuy nhiên, mình lưu ý là chỉ nên nói về những điểm của bản thân mà phục vụ cho công việc, cho công ty. Đừng giới thiệu những điều, sở thích ngoài lề như thích nghe nhạc, thích nghe Sơn Tùng-MTP, thích phim Hàn…

2. Tại sao lại nghỉ ở công ty cũ?

Câu hỏi này cũng hơi nhạy cảm chút. Chẳng nhẽ bạn lại nói thẳng tuột ra là: Lương thấp thì nghỉ thôi. Hay tôi ghét ông sếp nên tôi nghỉ…. Cùng lắm là tôi thích thì tôi nghỉ, anh có ý kiến gì à?!

Để trả lời câu hỏi này một cách khéo léo mà không bị nhà tuyển dụng đánh giá là không thật thà, lươn lẹo không đáng tin, thì mình gợi ý một vài cách.

Bạn có thể lựa chọn một số lý do như: Do có định hướng phát triển sự nghiệp sang lĩnh vực khác, muốn thử thách bản thân với những cái mới, môi trường mới… Những lý do này sẽ tránh được những ấn tượng xấu của nhà tuyển dụng. Vì nhà tuyển dụng rất kỵ nhân viên nói xấu sếp, đồng nghiệp và công ty cũ.

3. Bạn sử dụng thành thạo ngôn ngữ lập trình nào?

Đây là câu hỏi thuộc phạm trù chuyên môn, nên bạn cứ thành thật mà trả lời thôi. Tùy vào vị trí tuyển dụng mà bạn nói ngôn ngữ tương ứng.

Ví dụ, bạn ứng tuyển vào vị trí Android Developer, bạn có thể nói thế mạnh của mình là Java hay Kotlin. Nếu vị trí front-end thì bạn có thể trình bày về Javascript, html, CSS…

4. Bạn đã từng sử dụng công cụ quản lý source code nào không?

Do đặc thù của vị trí developer, bạn sẽ phải thao tác thường xuyên với các công cụ quản lý mã nguồn như SVN hay GIT. Do vậy, nếu bạn không biết hai hình thức quản lý source này thì bạn đã mất khá nhiều điểm trong mắt nhà tuyển dụng.

Ít nhất bạn có thể nói được khái niệm cơ bản GIT là gì? tại sao lại nên sử dụng GIT thay vì SVN…

Lời khuyên của mình: Nếu bạn chưa biết gì về GIT, bạn nên đọc bài viết này trước nhé: .GIT là gì và cách sử dụng GIT cơ bản

5. Kể tên dự án đã làm mà bạn tâm đắc nhất? Vị trí của bạn trong dự án đó là gì?

Đây là câu hỏi mà nhà tuyển dụng muốn kiểm tra kinh nghiệm làm việc thực tế của bạn. Bạn nên chọn dự án mà bạn tham gia vào nhiều công đoạn nhất, làm nhiều nhất. Không nhất thiết phải chọn dự án phức tạp nhất hay sử dụng công nghệ hiện đại mà trong đó bạn chỉ là chân “bóc hành đuổi mèo” mà thôi.

Cái mà nhà tuyển dụng cần là bạn đã làm được gì và làm như thế nào mà thôi.

6. Bạn có thể làm việc với mô hình phát triển phần mềm Agile/Crum không?

Có rất nhiều mô hình phát triển, nổi bật nhất là waterfall, Agile… Trong Agile thì thường được các công ty nhỏ, startup hay outsourcing ưu chuộng vì tính tối giản của nó.

Nên nếu bạn đã từng tham gia dự án sử dụng mô hình phát triển này thì quá tốt rồi. Hoặc ít nhất bạn cũng biết những khái niệm cơ bản như Agile là gì? vai trò của các member trong mô hình như thế nào?

7. Làm thế nào để đảm bảo chất lượng mã nguồn?

Bạn là một thành viên trực tiếp tạo ra mã nguồn của dự án, nên nếu bạn không biết cách để tăng chất lượng mã nguồn thì quá mất điểm rồi.

Đối với câu hỏi này, bạn có thể đưa ra một số tiêu chí để đảm bảo chất lượng mã nguồn như:

  • Mã nguồn có chạy đúng với requirement không? Cái này là quan trọng nhất, nếu mã nguồn sạch đẹp mà chạy sai so với requirement thì cũng vứt.
  • Viết code đúng style convention.
  • Viết code clean và tránh những bad smell.
  • Chạy Unit Test đầy đủ.

Đại khái như vậy.

8. Bạn có thể làm thêm giờ (OT) không?

Không biết các ngành nghề khác thế nào, chứ với nghề lập trình thì việc phải làm OT (over time) để kịp deadline dự án là điều xảy ra như cơm bữa.

Mặc dù, nhà tuyển dụng hỏi câu hỏi này chỉ để thăm dò bạn thôi, vì họ biết thừa bạn sẽ trả lời luôn và ngay: CÓ.

Nhưng như mình nói, họ thăm dò bạn thôi. Cái họ muốn là bạn đối diện với việc phải OT như thế nào? Việc phải chịu áp lực thời gian và trong quá khứ bạn đã từng phải OT rồi hay chưa? Điều kiện gia đình có cho phép OT triền miên hay không?…

9. Bạn có chịu được áp lực không?

Lại một câu hỏi vô nghĩa và thăm dò khác. Bởi vì nhà tuyển dụng, đặc biệt là ngành lập trình, kỹ năng chịu áp lực là một kỹ năng rất quan trọng.

Khi dự án chạy, bạn sẽ phải chịu áp lực từ rất nhiều phía: từ khách hàng, từ sếp, từ PL… rồi cả tụi tester nữa.

Nếu bạn là người không thể chịu được áp lực thì thật là khó để theo đuổi được nghề này, chứ chưa nói đến việc nhà tuyển dụng sử dụng bạn.

Với câu hỏi này, mình khuyên bạn nên trả lời thẳng vào những kinh nghiệm trải qua áp lực trong quá khứ với các dự án mà bạn đã trải qua. Chính những kinh nghiệm thực tế của bạn sẽ ghi điểm với nhà tuyển dụng.

10. Bạn có câu hỏi gì với chúng tôi không?

Đây thường là câu hỏi chốt trước khi kết thúc buổi phỏng vấn. Mặc dù họ để cho bạn hỏi lại họ nhưng cũng là một hình thức đánh giá bạn.

Bạn đừng hỏi những câu hỏi kiểu: Công ty có phục vụ ăn uống không? Có câu lạc bộ bóng đá không? Có được đi du lịch hàng năm không?… mất điểm lắm.

Thay vì đó, bạn nên hỏi về công việc mà vị trí ứng tuyển của bạn sẽ làm, về định hướng chiến lược của công ty hay như môi trường và style (văn hóa) làm việc của công ty như nào…

#Tạm kết

Như vậy là mình đã chia sẻ những kinh nghiệm đi phỏng vấn, cũng như những câu hỏi phỏng vấn lập trình viên phổ biến nhất.

Tất nhiên, đây là chỉ những câu hỏi chung chung để đánh giá thái độ và phong cách làm việc của bạn thôi. Tùy vị trí ứng tuyển mà họ sẽ còn hỏi những câu hỏi sâu về chuyên môn để đánh giá năng lực của bạn.

Nếu mọi người ủng hộ, mình sẽ tiếp tục series với các câu hỏi chuyên về từng lĩnh vực chuyên môn như: các câu hỏi phỏng Android, Front-end, Nodejs…

Nhà mình đã ai đi phỏng vấn chưa? Chia sẻ kinh nghiệm bên dưới nhé!

Bài viết gốc được đăng tải tại vntalking.com

Xem thêm:

Xem thêm Việc làm IT hấp dẫn trên TopDev

Một số cách để viết mã dễ đọc hơn trong JavaScript/Node.js

Một số cách để viết mã dễ đọc hơn trong JavaScript/Node.js

Bài viết được sự cho phép của tác giả Tống Xuân Hoài

Vấn đề

Điều mà tôi tin rằng rất nhiều lập trình viên mong muốn tiến tới là việc viết mã sao cho dễ đọc dễ hiểu. Bằng chứng là có rất nhiều Design Pattern được đưa ra để hướng dẫn mọi người giải quyết vấn đề theo cách mà nhiều người vẫn làm. Nhưng đó chưa phải là tất cả, việc viết mã hoàn chỉnh thì lại phụ thuộc vào từng lập trình viên.

Chúng ta có nhiều công cụ hỗ trợ soạn thảo mã nguồn theo nhiều cách. Như định dạng, màu sắc, giao diện hiển thị, công cụ hỗ trợ gỡ lỗi… thoải mái lựa chọn theo sở thích hoặc cùng làm việc nhóm. Bên cạnh đó, vẫn có những quy tắc được đặt ra để các thành viên tham gia phát triển phải tuân theo. Tạm bỏ qua vấn đề định dạng (format), ngày hôm nay chúng ta hãy cùng nhau tìm hiểu xem có cách nào để viết mã dễ đọc hơn không nhé!

Một số cách làm mã dễ đọc hơn

Thông thường, những người viết mã khó bảo trì thường mang trong mình phong cách Ninja mà tôi có một bài viết chi tiết tại Nhắc đến Ninja Code – họ là ai mà khiến cho nhiều người phải “khiếp sợ”?. Để viết mã dễ đọc, ngoài cách “rửa tay gác kiếm” khỏi giới nhẫn giả, thì dưới đây là một số cách bạn đọc có thể tham khảo từ chính tôi.

Tên biến và tên hàm

Biến và hàm là hai thành phần cơ bản và quan trọng nhất của bất kì chương trình nào. Việc đặt cho chúng những cái tên dễ hiểu là điều hết sức quan trọng trong việc đọc hiểu mã.

Có nhiều nguyên tắc đặt tên biến và hàm mà bạn có thể tìm thấy trên mạng. Ví dụ tôi thường đặt tên biến theo kiểu camelCase, là danh từ, gắn liền với nội dung mà nó nắm giữ, các biến thuộc dạng hằng số hoặc chỉ thay đổi theo biến môi trường thì sẽ viết hoa và theo định dạng UPPER_CASE… Tên hàm gắn liền với một hành động, nghĩa là động từ, theo kiểu camelCase. Chức năng của hàm gắn liền với cái tên của nó, chỉ làm một công việc còn nếu nhiều hơn, tách chúng thành các hàm nhỏ hơn.

  Lập trình bất đồng bộ là gì? Tại sao JavaScript là ngôn ngữ lập trình bất đồng bộ?

  Bạn có suy nghĩ như thế nào khi tôi nói rằng Node.js rất nhanh?

Tránh Magic Number hay Hardcoded Value

Thi thoảng trong chương trình, chúng ta hay bắt gặp việc so sánh biến với một con số nào đó ví dụ như:

if (user.lastSeen < 4321)
...

4321 lúc này được gọi là Magic Number hay Hardcoded Value, chúng ta không biết chính xác con số đó biểu thị điều gì đơn giản vì nó không có tên. Điều này khiến người đọc mã phải bối rối về sự xuất hiện của chúng. Thay vào đó, hãy sử dụng một biến để biểu thị cho ý nghĩ của những con số này.

const timeActive = 4321;
if (timeExpired < timeActive)
...

Xem thêm việc làm Node.js developer hấp dẫn nhất tại TopDev

Lệnh điều kiện

Có một sự thật là đoạn mã nào thụt lề càng nhiều thì logic sẽ càng nhiều và càng phức tạp. Hãy xem xét một ví dụ dưới đây.

async function main() {
  const user = await getUser(id);

  if (user) {
    if (user.lastSeen) {
      const userSeen = dayjs(user.lastSeen);
    } else {
      const userSeen = dayjs();
      if (userSeen.isAfter(dayjs().subtract(1, "day"))) {
        showUserOnline();
      } else {
        showUserOffline();
      }
    }
  }
}

Thật ra không có một quy tắc cụ thể nào cho việc sử dụng if...else, nhưng hãy nhìn vào ví dụ trên có phải if...else càng nhiều logic sẽ càng phức tạp, sau này có bảo trì, sửa lại mã cũng trở nên khó khăn hơn vì có nhiều logic cần được làm sáng tỏ trước khi bắt tay vào sửa mã.

Nếu có thể, hãy hạn chế các lệnh điều kiện if...else lồng nhau. Sử dụng switch...case thay thế trong những trường hợp phức tạp hơn, và tốt nhất hãy làm “phẳng” cây logic nhất có thể.

Xem việc làm javascript đãi ngộ tốt trên TopDev

Hạn chế Side-Effect

Có thể nói Side Effect đã làm thay đổi hoàn toàn cách viết mã của tôi từ khi biết đến. Để nói về vấn đề này, tôi có một bài viết chi tiết là Pure Function trong Javascript. Tại sao chúng ta nên biết càng sớm càng tốt?.

Nhìn chung, việc hạn chế Side-Effect giúp chúng ta có một cấu trúc chương trình rành mạch hơn, tránh việc gọi một hàm thôi mà làm thay đổi hết trạng thái của chương trình.

Áp dụng functional

Bất cứ chỗ nào xử lý logic, hãy tách thành những hàm nhỏ hơn và đặt tên cho chúng. Hãy xem xét một ví dụ dưới đây:

const userRoleMap = {
  0: 'admin',
  1: 'moderator',
  2: 'user',
};

fetch('https://api.example.com/users')
  .then(response => response.json())
  .then((user) => {
    return user.filter(user => user.active)
  })
  .then((user) => {
    return user.map(user => {
      return {
        id: user.id,
        name: user.name,
        roleName: userRoleMap[user.role],
      }
    })
  });

Đoạn mã trên lấy danh sách users từ một endpoint về, lọc ra danh sách users đang kích hoạt và sau đó thêm thuộc tính roleName dựa vào role của mỗi users.

Có thể mất một thời gian để hiểu được ý nghĩa của đoạn mã trên, vì chúng ta đang phải tập trung vào logic để hiểu. Thay vào đó, đoạn mã trên có thể được viết lại bằng cách tách các đoạn mã xử lý logic ra thành các hàm nhỏ hơn.

const userRoleMap = {
  0: 'admin',
  1: 'moderator',
  2: 'user',
};

const filterActiveUsers = (users) => {
  return users.filter(user => user.active)
};

const mapUsersRole = (users) => {
  return users.map(user => {
    return {
      id: user.id,
      name: user.name,
      role: userRoleMap[user.role],
    }
  })
};

fetch('https://api.example.com/users')
  .then(response => response.json())
  .then(filterActiveUsers)
  .then(mapUsersRole);

Hãy nhìn vào phần thân chương trình, toàn bộ logic đã hoàn toàn lộ rõ là filterActiveUsers và mapUsersRole. Điều này giúp chúng ta nhanh chóng nắm bắt được luồng xử lý dữ liệu, sau này nếu muốn xem chi tiết chỉ cần nhảy đến các hàm liên quan.

Sử dụng comment hợp lý

Comment là một vấn đề gây nhiều tranh cãi, có người nói ai càng comment chứng tỏ càng thiếu kinh nghiệm vì họ không biết cách viết mã sao cho dễ đọc!? Quan điểm của tôi là hãy sử dụng comment đúng lúc và không quá phụ thuộc vào nó để giải thích chi tiết cách mã của bạn hoạt động.

Kết hợp nhiều yếu tố như đặt tên và các hàm functional để gián tiếp giải thích cách mã của bạn hoạt động, trừ khi gặp phải logic quá phức tạp hoặc cần mô tả ngắn gọn luồng dữ liệu thì hãy để lại comment. Các thay đổi quan trọng có liên kết đến tài liệu bên ngoài…

Ví dụ:

# 02/09/2023: Thay đổi logic theo tài liệu DOC-2945
function getRandomUser() {
...

Ngoài ra, còn nhiều trường hợp khác để bạn khéo léo vận dụng cách comment ví dụ như sử dụng một tính năng nào đó của thư viện ngoài.

# Limits Environment variables
# https://developers.cloudflare.com/workers/platform/limits/#environment-variables
function setEnv() {
...

Như trong ví dụ trên, tôi đang sử dụng một tính năng biến môi trường của Cloudflare và cần tuân thủ một số quy tắc liên quan đến giới hạn, việc đính kèm tài liệu sẽ giúp cho đồng nghiệp dễ dàng truy cứu lại tài liệu và hiểu được cách tôi viết mã hơn.

Tài liệu hóa mã mà bạn viết

Dĩ nhiên một chương trình phức tạp không thể nào chỉ dựa vào mỗi việc đọc mã thôi mà có thể hiểu hết được. Bên cạnh đó, chúng ta cần có một hệ thống tài liệu mô tả hầu hết luồng hoạt động của chương trình. Nó vừa giúp cho người mới có tài liệu để nghiên cứu và giúp cho bản thân phát huy khả năng hệ thống hoá.

Hãy rèn luyện cho mình kỹ năng viết và truyền đạt lại những thứ mình làm. Đây cũng là một trong những kỹ năng cần thiết để giúp bạn tiến xa hơn trên con đường sự nghiệp.

Cuối cùng, vẫn là không ngừng học hỏi

Học, học nữa, học mãi… Học không bao giờ là đủ và cũng không bao giờ thừa. Điều tôi nói trên đây chỉ là quan điểm cá nhân, ngoài ra tôi biết còn nhiều điều cần phải học hỏi thêm từ người khác. Bạn có thể học hỏi thêm từ đồng nghiệp hoặc thông qua các dự án mã nguồn mở.

Tổng kết

Trên đây là một số các quy tắc mà tôi vẫn đang áp dụng trong công việc hàng ngày, tuy không đánh giá được mức độ tốt đến đâu nhưng ít nhất sau vài ba tuần đọc lại mã của mình viết ra, tôi vẫn có thể hiểu được chúng :D. Còn bạn, bạn có đang áp dụng thêm phương pháp nào để giúp cho mã dễ đọc hơn không? Hãy để lại bình luận nhé!

Bài viết gốc được đăng tải tại 2coffee.dev

Xem thêm:

Xem thêm việc làm công nghệ hấp dẫn trên TopDev

Ai là “cha đẻ” của các ngôn ngữ lập trình nổi tiếng nhất thế giới?

Ai là

“Cha đẻ” của các ngôn ngữ lập trình nổi tiếng trên khắp thế giới là những cá nhân tài năng đã để lại dấu ấn lớn trong ngành công nghệ thông tin. Họ đã sáng tạo ra các ngôn ngữ lập trình mạnh mẽ, giúp xây dựng các ứng dụng và hệ thống phức tạp, thúc đẩy sự phát triển của khoa học máy tính và công nghệ ngày nay.

Trong bài viết này, chúng ta sẽ khám phá những tên tuổi lừng danh và đóng góp quan trọng của họ vào các ngôn ngữ lập trình phổ biến như Python, Java, C++, JavaScript và nhiều ngôn ngữ khác. Cùng TopDev khám phá nhé!

Ngôn ngữ lập trình Java – James Gosling

James Gosling là cha đẻ của ngôn ngữ lập trình Java, một ngôn ngữ lập trình hướng đối tượng được thiết kế để có thể chạy trên nhiều nền tảng khác nhau.

Gosling sinh ra ở Canada vào năm 1955. Ông theo học khoa học máy tính tại Đại học Calgary, nơi ông bắt đầu phát triển ngôn ngữ lập trình Java vào năm 1991. Java được thiết kế để giải quyết một số vấn đề mà Gosling và các đồng nghiệp của ông gặp phải khi phát triển phần mềm cho các thiết bị di động và Internet.

Ngôn ngữ lập trình Java - James Gosling

Java được ra mắt lần đầu tiên vào năm 1995 và nhanh chóng trở nên phổ biến. Ngày nay, Java là một trong những ngôn ngữ lập trình được sử dụng rộng rãi nhất trên thế giới. Nó được sử dụng để phát triển các ứng dụng và phần mềm cho một loạt các nền tảng, bao gồm máy tính để bàn, máy tính xách tay, máy tính bảng, điện thoại thông minh, trình duyệt web và máy chủ.

Ngôn ngữ lập trình Python – Guido Van Rossum

Van Rossum sinh ra ở Hà Lan vào năm 1956. Ông theo học khoa khoa học máy tính tại Đại học Amsterdam, nơi ông bắt đầu phát triển Python vào năm 1989. Python được ra mắt lần đầu tiên vào năm 1991 và nhanh chóng trở nên phổ biến.

Ngôn ngữ lập trình Python - Guido Van Rossum

Ngày nay, Python là một trong những ngôn ngữ lập trình được sử dụng rộng rãi nhất trên thế giới. Nó được sử dụng để phát triển các ứng dụng và phần mềm cho một loạt các lĩnh vực, bao gồm khoa học dữ liệu, máy học, trí tuệ nhân tạo, web development, và DevOps.

Ngoài Python, Van Rossum còn có những đóng góp quan trọng khác cho ngành khoa học máy tính. Ông cũng là tác giả của nhiều bài báo khoa học về khoa học máy tính.

  Ngôn ngữ lập trình bậc cao - Cao thấp do đâu?

  Cách viết "Hello World" với 28 Ngôn ngữ Lập trình

Ngôn ngữ lập trình C – Dennis Ritchie

Ngôn ngữ lập trình C là một trong những ngôn ngữ lập trình quan trọng và ảnh hưởng nhất trong lịch sử công nghệ thông tin, và nó được tạo ra bởi Dennis Ritchie, một nhà khoa học máy tính và lập trình viên xuất sắc. Dennis MacAlistair Ritchie sinh vào ngày 9 tháng 9 năm 1941 tại Bronxville, New York, Hoa Kỳ. Ông đã nhận bằng cử nhân và tiến sĩ về khoa học máy tính tại Đại học Harvard.

Ngôn ngữ lập trình C - Dennis Ritchie

C được ra mắt lần đầu tiên vào năm 1973 và nhanh chóng trở nên phổ biến. Ngôn ngữ lập trình C là một trong những ngôn ngữ đầu tiên sử dụng mô hình lập trình có cấu trúc, với khả năng tạo ra các hàm và thư viện tái sử dụng. Điều này đã làm cho việc phát triển phần mềm trở nên dễ dàng hơn và hiệu quả hơn. C đã trở thành nền tảng cho việc phát triển nhiều hệ điều hành và phần mềm quan trọng, bao gồm hệ điều hành UNIX, Linux, và Windows.

Ngôn ngữ lập trình C++ – Bjarne Stroustrup

Bjarne Stroustrup là cha đẻ của ngôn ngữ lập trình C++, một ngôn ngữ lập trình hướng đối tượng dựa trên C. Bjarne Stroustrup sinh vào ngày 30 tháng 12 năm 1950 tại Aarhus, Đan Mạch. Ông đã nhận bằng cử nhân và tiến sĩ về khoa học máy tính tại Đại học Aarhus, Đan Mạch, và sau đó tiếp tục làm việc nghiên cứu tại Bell Labs ở Hoa Kỳ.

Ngôn ngữ lập trình C++ - Bjarne Stroustrup

Stroustrup bắt đầu phát triển C++ vào những năm 1979 như một phiên bản mở rộng của ngôn ngữ lập trình C. C++ kế thừa các đặc điểm mạnh của C và bổ sung nhiều tính năng mới, như hướng đối tượng, lập trình tổ chức, và kiểu dữ liệu trừu tượng.

Tham khảo thêm các vị trí tuyển lập trình C++ tại Topdev

Ngôn ngữ lập trình Ruby – Yukihiro Matsumoto

Yukihiro Matsumoto, còn được gọi là Matz, là cha đẻ của ngôn ngữ lập trình Ruby. Ông sinh ra ở Ōsaka, Nhật Bản vào ngày 14 tháng 4 năm 1965. Ông bắt đầu lập trình từ khi còn trẻ và sau đó theo đuổi nghiên cứu và phát triển trong lĩnh vực công nghệ thông tin.

Yukihiro Matsumoto

Matz bắt đầu phát triển Ruby vào những năm 1990 với mục tiêu tạo ra một ngôn ngữ lập trình dễ đọc, dễ viết và mạnh mẽ. Ruby được phát hành lần đầu vào năm 1995, và nhanh chóng thu hút sự quan tâm của cộng đồng lập trình viên.

Ngôn ngữ lập trình PHP – Rasmus Lerdorf

Rasmus Lerdorf là cha đẻ của ngôn ngữ lập trình PHP, một ngôn ngữ lập trình kịch bản được sử dụng để phát triển các ứng dụng web. Ông sinh ra ở Đan Mạch vào năm 1968. Ông đã theo học tại Đại học Waterloo ở Canada và sau đó làm việc trong lĩnh vực công nghệ thông tin và phát triển web.

Ngôn ngữ lập trình PHP - Rasmus Lerdorf

Rasmus Lerdorf bắt đầu phát triển PHP vào những năm 1994 như một tập hợp các script để theo dõi thông tin truy cập trên trang web cá nhân của mình. PHP ban đầu là viết tắt của “Personal Home Page” (Trang web cá nhân), sau đó trở thành viết tắt của “PHP: Hypertext Preprocessor,” một loại lập trình mã nguồn mở dùng để phát triển các ứng dụng web động.

PHP đã trở thành một trong những ngôn ngữ lập trình phổ biến nhất cho việc phát triển các trang web động và ứng dụng web. Nó được tích hợp vào nhiều hệ thống quản lý nội dung (CMS) như WordPress và Joomla, cũng như các framework web như Laravel và Symfony.

Ngôn ngữ lập trình JavaScript – Brendan Eich

Brendan Eich sinh vào ngày 4 tháng 7 năm 1961 tại Pittsburgh, Pennsylvania, Hoa Kỳ. Ông đã theo học tại Đại học Santa Clara và nhận bằng cử nhân về khoa học máy tính.

Brendan Eich trở thành người sáng tạo của JavaScript khi làm việc tại Netscape Communications Corporation vào năm 1995. Ông phát triển ngôn ngữ này với tên gọi Mocha sau đó đổi thành LiveScript, và cuối cùng là JavaScript. JavaScript ban đầu được phát triển để tạo ra các tính năng tương tác trên trình duyệt Netscape Navigator.

Ngôn ngữ lập trình JavaScript - Brendan Eich

JavaScript đã trở thành một trong những ngôn ngữ lập trình phổ biến nhất và quan trọng nhất trong phát triển web. Nó được sử dụng rộng rãi để tạo ra các ứng dụng web động, hiệu ứng, và tương tác người dùng.

Ngôn ngữ lập trình Pascal – Niklaus Wirth

Niklaus Emil Wirth sinh vào ngày 15 tháng 2 năm 1934 tại Winterthur, Thụy Sĩ. Ông đã nhận bằng cử nhân và tiến sĩ về khoa học máy tính tại Đại học ETH Zurich ở Thụy Sĩ.

Niklaus Wirth bắt đầu phát triển ngôn ngữ lập trình Pascal vào những năm 1968 và hoàn thành phiên bản đầu tiên vào năm 1970. Pascal ban đầu được thiết kế như một ngôn ngữ lập trình để dạy và nghiên cứu trong lĩnh vực khoa học máy tính.

Ngôn ngữ lập trình Pascal - Niklaus Wirth

Pascal đã đóng vai trò quan trọng trong giáo dục và nghiên cứu trong lĩnh vực khoa học máy tính. Nó đã giúp sinh viên và nghiên cứu viên học cơ bản về lập trình và cấu trúc dữ liệu.

Kết luận

Như vậy, trong bài viết này, chúng ta đã tìm hiểu về các tác giả đằng sau những ngôn ngữ lập trình nổi tiếng nhất thế giới và đóng góp của họ đối với sự phát triển của ngành công nghệ thông tin. Chúng ta hãy dành lời cảm ơn đến tất cả những tài năng xuất chúng này và mong rằng sẽ còn nhiều sự phát triển và tiến bộ hơn nữa trong tương lai.

Xem thêm:

Đừng bỏ lỡ hàng loạt IT job hot tại TopDev

13 phím tắt trong VS Code hữu ích giúp lập trình dễ dàng hơn

13 phím tắt trong VS Code hữu ích giúp lập trình dễ dàng hơn

Bài viết được sự cho phép bởi tác giả Sơn Dương

Thời gian gần đây, VS Code nổi lên như một trình Text Editor tốt nhất được hầu hết lập trình viên công nhận. Trước đây, mình chỉ sử dụng VS Code để làm các dự án có liên quan đến Javascript, nhưng giờ đây, hầu hết các dự án từ PHP, Java, Python… mình đều sử dụng VS Code. Lý do đơn giản là VS Code nhanh, gọn nhẹ, nhiều ”đồ chơi”.

Dưới đây, mình xin liệt kê 13 phím tắt trong VS Code (hotkeys) sẽ giúp bạn cải thiện đáng kể tốc độ viết code, nhờ đó mà hoàn thành dự án nhanh hơn. Hãy thử một lần và  đánh giá nhé.

1. Tìm kiếm files

Chắc chắn rồi, phím tắt đầu tiên mà mình muốn nhắc tới sẽ liên quan tới tìm kiếm.

Tổ hợp phím cmd + P (MacOS) hay crtl + P (Window) sẽ nhanh chóng mở tab tìm kiếm để bạn nhanh chóng tìm kiếm thứ gì đó trong mã nguồn dự án.

Với cá nhân mình thì tổ hợp phím này mình dùng không dưới 100 lần trong ngày

2. Tìm kiếm Cài đặt

Tương tự như tìm kiếm, sau khi mở hộp tìm kiếm bằng tổ hợp crtl + P (Window), bạn tiếp tục gõ >, bạn có thể tìm kiếm bất kỳ thiết lập nào trong VS Code.

3. Multiple cursors

Tính năng này khá là hay ho, mình ước là đã biết tới nó sớm hơn.

Đơn giản chỉ cần ấn phím alt và click vào bất kỳ đâu trong VS Code, multiple cursor sẽ xuất hiện.

  5 VS Code Extensions hữu ích cho React developers

4. Chọn nhiều đoạn Text để đổi tên hàng loạt

Đôi khi bạn cần phải đổi tên biến và muốn nó cũng thay đổi ở tất cả nhưng nơi gọi tới biến đó. Nếu như Java thì chuyện này khá đơn giản, nhưng với Javascript thì bạn thường phải tìm kiếm và replace thủ công hàng loạt.

Với thủ thuật sau, bạn sẽ không còn phải lo lắng sửa sót nữa.

Đầu tiên, bạn chọn một đoạn text, sau đó ấn tổ hợp:  cmd shift + L (Mac) / crtl shift + L (Windows) để chọn toàn bộ những đoạn text có nội dung tương tự như đoạn vừa chọn. Công việc tiếp theo là đổi tên đoạn text vừa chọn thôi.

  Format (Làm đẹp) code php trong VS Code

Bạn nhìn hình ảnh dưới đây sẽ hiểu rõ hơn thủ thuật này

vs code select_all_occurrences

5. Xóa một dòng code

Sử dụng tổ hợp phímcmd shift + K (Mac) / crtl shift + K (Windows), để nhanh chóng xóa một dòng code thay vì phải nhấn phím xóa <-- mỏi tay

Tham khảo việc làm React hấp dẫn trên TopDev

6. Nhân bản một dòng code

Đặt con trỏ của bạn vào dòng bạn muốn nhân bản.

Nhấn cmd + C, sau đó cmd + V (Mac) / crtl + C, sau đó crtl + V (Windows). Xong!

7. Tìm kiếm trong một file

Cái này khá quen thuộc trên tất cả các ứng dụng phổ biến (như trình duyệt): cmd + F (Mac) / crtl + F (Windows)cmd + G (Mac) / crtl + G (Windows) tìm kiếm lần xuất hiện tiếp theo, trong khi cmd shift + G (Mac) / crtl + shift + G (Windows) tìm kiếm lần xuất hiện trước đó.

8. Replace

Nếu bạn muốn replace cụm từ sau khi bạn tìm kiếm, hãy kích hoạt cmd option + G (Mac) / crtl shift + G (Windows).

Sau đó, bấm enter để thay thế cụm từ hiện tại.

Nếu bạn muốn thay thế tất cả, hãy click vào cmd + enter (Mac) / crtl + enter (Windows).

13. Đóng tab

Cái này giống như trong Chrome -  cmd + W (Mac) / crtl + W (Windows).

Tạm kết

Trên đây là một số tổ hợp phím tắt trong VS Code mà mình rất hay sử dụng trong quá trình viết code. Mình không có ý định khuyên bạn học thuộc lòng chúng ngay lập tức, chỉ đơn giản là bạn hãy thử, nếu cảm thấy có ích thì tự nhiên bạn sẽ nhớ nó.

Hãy lưu lại bài viết này nhé, có lẽ trong tương lai bạn sẽ cần tới. Thói quen sử dụng phím tắt sẽ tăng đáng kể hiệu suất công việc của bạn.

Bài viết gốc được đăng tải tại vntalking.com

Xem thêm:

Xem thêm Việc làm IT hấp dẫn trên TopDev

Tận dụng phong cách xử trí lỗi của Rust trong lập trình web

Làm thế nào để tận dụng phong cách xử trí lỗi của Rust trong lập trình web?

Bài viết được sự cho phép của tác giả Nguyễn Hồng Quân

Gần đây, tôi chuyển đổi website này sang viết bằng Rust và rất tâm đắc với phong cách xử trí lỗi (error handling) của Rust, khi ứng dụng vào việc viết web. tôi sẽ trình bày tại sao.

Trước Rust, hầu hết các ngôn ngữ lập trình tôi kinh qua đều dùng phong cách xử trí lỗi là exception handling. Một hàm đang chạy nửa chừng, nếu gặp lỗi sẽ bắn ra một exception và dừng ngay tại đó. Hàm nào gọi nó bên ngoài sẽ dùng cấu trúc try ... excepttry ... catch để phòng bị, bắt những exception này và có hướng xử trí tương ứng khi exception xảy ra. Cách làm này có ưu điểm là không cần nghĩ nhiều, giúp lập trình viên làm nhanh, cho ra sản phẩm lẹ. Tuy nhiên nó có nhược điểm là nhìn vào signature (mô tả kiểu dữ liệu đầu vào và đầu ra) của một hàm, không có cách nào biết được hàm đó có thể bắn ra những exception nào. Rust thì khác, những lỗi nào có thể xảy ra sẽ buộc phải khai báo trong signature của hàm. Ví dụ nhìn signature của hàm dùng để parse một chuỗi thành số nguyên:

fn from_str(src: &str) -> Result<i8, ParseIntError>

ta biết ngay nếu thất bại (ví dụ parse chuỗi “z” thành số) thì hàm sẽ trả về một giá trị thuộc kiểu ParseIntError, từ đó giúp ta viết code cho phần xử trí lỗi nhanh hơn, tiện hơn, tự tin hơn (không sợ bỏ sót).

Ghi chú nhỏ: Nói một cách chính xác thì những hàm có kiểu trả về Result như trên không trả về giá trị mong muốn một cách trực tiếp, mà bọc trong một enum kiểu Result để chỉ thị trạng thái thành công hay thất bại. Ví dụ với hàm parse phía trên, nếu ta gọi i8::from_str("1") thì nhận được Ok(1), nếu gọi i8::from_str("z") thì nhận được Err(e) với e thuộc kiểu ParseIntError.

Đọc tới đây, người chưa viết Rust chắc sẽ thắc mắc: “Ủa, vậy là không làm nhanh được nhỉ. Ví dụ với phong cách exception, khi tôi đang định nghĩa một hàm cho người khác sử dụng, và gọi nhiều lớp hàm con, nếu một trong những hàm con bắn ra exception, và tôi muốn chuyển tiếp exception đó ra ngoài, thì tôi chẳng cần phải viết thêm code gì cả, cứ để mặc. Còn với Rust thì cứ phải kiểm tra giá trị trả về của hàm con, rồi dùng return Err(e) để trả ra bên ngoài”. Vâng, đúng là như vậy, nhưng Rust có một cú pháp để làm việc ấy một cách rất ngắn gọn, đó là dùng toán tử ?. Ví dụ xem đoạn code sau trong một sản phẩm khác của tôi (Duri):

fn main() -> eyre::Result<()> {
    let opts = Opts::parse();
    let l = opts.verbose.log_level_filter();
    Logger::try_with_str(l.as_str())?.start()?;
    color_eyre::install()?;
    // More code
}

Các bước Logger::try_with_str()logger.start() đều có thể xảy ra lỗi (ví dụ tên log level không đúng, thiết bị console chưa sẵn sàng v.v…). Khi ấy toán tử ? sẽ truyền những lỗi ấy lên hàm main() và ngừng hàm main ngay tại bước xảy ra lỗi. Chưa dừng tại đó, toán tử & còn có một tính năng thú vị nữa là tự động chuyển đổi kiểu lỗi, nếu lỗi trả về bởi hàm con khác kiểu với kiểu mà hàm cha mong muốn. Cũng ở ví dụ trên, hàm Logger::start() trả về lỗi FlexiLoggerError trong khi hàm main mong đợi lỗi thuộc kiểu eyre::Report và toán tử & sẽ làm thêm bước chuyển đổi. Tất nhiên, chuyển đổi như thế nào thì & không tự “chế” được mà phải nhờ vào việc một trong hai kiểu (nguồn và đích) kia phải implement trait From hoặc Into.

  Viết Reminder Parser dùng Rust

  Rust và Lập trình Web

Thế thì những điều kia liên quan gì tới web? Tôi nóng ruột quá!

Vâng, quay lại với chuyện lập trình web. Để sinh ra response trả về cho người dùng, server có thể phải làm các bước sau, và bước nào cũng có thể gặp lỗi:

  • Kiểm tra xem người dùng đã login chưa. Có thể gặp lỗi khi đang đọc session, từ Redis hay từ file (ví dụ Redis sập hay ổ đĩa bị lỗi).
  • Lôi dữ liệu từ database lên. Có thể gặp lỗi khi hệ thống database cấu hình không đúng, schema không khớp, hay bị treo.
  • Tính toán, xử lý dữ liệu trước khi trả về cho người dùng. Có thể gặp lỗi vì dữ liệu có định dạng không như mong muốn.
  • Dùng template để render dữ liệu. Có thể gặp lỗi vì đường dẫn file bị sai, hay code của template không phù hợp với dữ liệu.

Xem thêm các việc làm Web developer jobs hấp dẫn trên TopDev

Tất cả những lỗi trên, nếu không được bắt và xử trí thì nhẹ sẽ sinh ra nội dung mù mờ khó hiểu (người dùng chỉ thấy trang trắng với dòng chữ “500 Internal Server Error” hoặc “Connection Reset”) hoặc nặng thì sẽ sập luôn cả ứng dụng server. Nếu có bắt lỗi thì ta sẽ có hành xử tốt hơn:

  • Hiện thông báo để cáo lỗi người dùng, và giữ được giao diện chuẩn của trang web.
  • Ghi log để giúp lập trình viên điều tra nguyên nhân gây ra lỗi, để sửa code cho đúng.
  • Giữ cho server không bị sập, tiếp tục phục vụ các request khác.

Để đạt được điều trên thì ta nên thiết kế hàm handler (trả về response tương ứng với request) dưới dạng một hàm trả về Result, trong đó Ok tương ứng với response thành công, và Err tương ứng với response báo lỗi, kết hợp với toán tử ? để viết code ngắn hơn.

Thật may là đa số các framework web của Rust đều hỗ trợ các handler kiểu này. Dưới đây tôi sẽ minh họa với framework Axum.

Ví dụ source code của hàm dùng để trả về bài viết mà bạn đang xem:

pub async fn show_post(
	// Params...
) -> AxumResult<Html<String>> {
	// Code...
	let post = get_detailed_post_by_slug(slug, &db)
        .await
        .map_err(PageError::EdgeDBQueryError)?
        .ok_or((StatusCode::NOT_FOUND, "No post at this URL"))?;
	// Code...
}

Tôi khai báo kiểu trả về của hàm là AxumResult<Html<String>>, đây là cách viết tắt, dùng type alias, thực ra nó sẽ là Result<Html<String>, ErrorResponse>. Tức là nếu xảy ra lỗi, hàm cần trả về giá trị thuộc kiểu axum::response::ErrorResponse, để Axum tạo ra response cho người dùng.

Lưu ý rằng hàm handler trong Axum không nhất thiết phải có kiểu trả về Result<T, ErrorResponse>, nó được phép có kiểu trả về Response hay impl IntoResponse nữa. Trong bài này tôi tập trung vào <Result<T, ErrorResponse> để vừa tận dụng được toán tử ? cho code ngắn hơn và để luồng code trông tường minh, rạch ròi được trạng thái bình thường / lỗi.

Xem lại ví dụ show_post phía trên, tại dòng code:

let post = get_detailed_post_by_slug(slug, &db)
	.await
	.map_err(PageError::EdgeDBQueryError)?
	.ok_or((StatusCode::NOT_FOUND, "No post at this URL"))?;

tôi đã hai lần dùng ? để kiểm tra và trả về lỗi.

Đầu tiên, hàm get_detailed_post_by_slug có signature là:

async fn get_detailed_post_by_slug(slug: String, client: &Client) -> Result<Option<DetailedBlogPost>, edgedb_tokio::Error>

Đây là hàm lấy dữ liệu từ EdgeDB nên khi gặp lỗi, nó sẽ trả về lỗi thuộc kiểu edgedb_tokio::Error. Tuy nhiên edgedb_tokio::Error không được implement trait IntoResponse nên ta không dùng trực tiếp nó làm giá trị trả về cho handler show_post được. Ta sẽ dùng method map_err() để chuyển đổi nó qua kiểu lỗi trung gian PageError, là kiểu mà ta tự định nghĩa và thêm implement trait IntoResponse. Việc ứng dụng kiểu lỗi trung gian này sẽ được trình bày sau.

Tiếp đến, nếu việc giao tiếp với EdgeDB thành công, hàm get_detailed_post_by_slug sẽ trả về dữ liệu kiểu Option<DetailedBlogPost>, tức là sẽ lấy được DetailedBlogPost hoặc không. Option là kiểu dữ liệu đặc biệt của Rust, bên cạnh Result, mà những người đến từ các ngôn ngữ lập trình hướng đối tượng truyền thống sẽ ngạc nhiên. Trong Rust không có kiểu dữ liệu null / None / nil như các ngôn ngữ phổ biến khác. Thay vào đó, để diễn tả được sự thiếu vắng dữ liệu, Rust dùng Option, là một enum với hai mặt Some và None. Cụ thể, nếu hàm get_detailed_post_by_slug lấy được dữ liệu, nó trả về Some(DetailedBlogPost) và nếu không có dữ liệu, nó trả về None. Giống như ResultOption bao trùm dữ liệu thực nên bạn buộc phải ứng xử với trạng thái “thành công / lỗi”, “có dữ liệu / không có dữ liệu” rồi mới lấy được giá trị thực. Đây là cách Rust khiến bạn lập trình cẩn thận, kỹ càng hơn và tránh được bug.

Quay lại hàm show_post, nếu người dùng truy cập vào một URL không có thật, không tương ứng với bài post nào, thì ta nên trả về lỗi 404 Not Found. Tình huống “URL không có thật” đó tương ứng với lúc get_detailed_post_by_slug trả về None, bởi vậy ta có đoạn .ok_or((StatusCode::NOT_FOUND, "No post at this URL"))? là để trả về response với status 404 (Not Found) nếu get_detailed_post_by_slug trả về None.

Nếu dùng một trình soạn thảo có hỗ trợ inlay hint, bạn có thể thấy được giá trị trả về của từng đoạn trong một dòng code, và thấy được tác dụng của ? tại từng đoạn, vừa khiến hàm trở về sớm trong điều kiện không mong muốn, vừa “bóc vỏ” ResultOption để lấy giá trị thực trong điều kiện thành công:

Tận dụng phong cách xử trí lỗi của Rust trong lập trình web

Trong một lần giao tiếp với người dùng, ứng dụng web phải kết tập dữ liệu từ nhiều nguồn, qua nhiều bước xử lý. Mỗi bước đều có thể phát sinh lỗi, nhưng thường thì những lỗi đó đều không thể dùng trực tiếp làm giá trị trả về cho handler được, vì chúng là của các thư viện khác và không implement trait IntoResponse. Khi đó ta sẽ định nghĩa một kiểu lỗi riêng làm trung gian, sẽ được chuyển đổi từ các kiểu lỗi của các thư viện khác, và có implement trait IntoResponse để có thể tạo ra response. Ví dụ khi xây dựng website này thì tôi tạo hai kiểu lỗi: PageError dùng cho các trang bên ngoài, trả về HTML, và ApiError dành cho các đầu API, trả về JSON:

#[derive(Debug, thiserror::Error)]
pub enum PageError {
    #[error(transparent)]
    EdgeDBQueryError(#[from] edgedb_errors::Error),
    #[error(transparent)]
    JinjaError(#[from] minijinja::Error),
    #[error("Permission denied")]
    PermissionDenied(String),
}

impl IntoResponse for PageError {
    fn into_response(self) -> Response {
        // Code to create response for each case of error
    }
}

#[derive(Debug, thiserror::Error)]
pub enum ApiError {
    #[error(transparent)]
    PathRejection(#[from] PathRejection),
    #[error(transparent)]
    JsonRejection(#[from] JsonRejection),
    #[error(transparent)]
    JsonExtractionError(#[from] serde_json::Error),
    #[error(transparent)]
    EdgeDBQueryError(#[from] edgedb_errors::Error),
    #[error("{0} not found")]
    ObjectNotFound(String),
    #[error("Please login")]
    Unauthorized,
    #[error("Error logging in")]
    LoginError(String),
    #[error("Not enough data")]
    NotEnoughData,
    #[error(transparent)]
    ValidationErrors(#[from] validify::ValidationErrors),
    #[error("Other error: {0}")]
    Other(String),
}

impl IntoResponse for ApiError {
    fn into_response(self) -> axum::response::Response {
        // Code to create response for each case of error
    }
}

Ở đây, tôi dùng thư viện thiserror để giúp viết code chuyển đổi ngắn gọn hơn. Ngoài ra, kiểu lỗi trung gian này nên ở dạng enum để có thể có cách lưu trữ thông tin riêng cho từng trường hợp lỗi, và tạo ra response khác nhau cho từng trường hợp (ví dụ cùng là lỗi nhưng có lúc ta trả về 500, có lúc ta trả về 422).

Thông tin thêm, có thể bạn để ý rằng, mặc dù trên signature của hàm tôi kí hiệu kiểu dữ liệu trả về là ErrorResponse nhưng nhiều lúc trong thân hàm tôi lại viết giá trị trả về là:

(StatusCode::NOT_FOUND, "No post at this URL")
// or
StatusCode::SERVICE_UNAVAILABLE

Đó là nhờ cơ chế trait và toán tử ? của Rust. Bạn có thể xem tài liệu của Axum để biết những kiểu dữ liệu nào có thể được tự động biến đổi thành ErrorResponse. Ví dụ biểu thức tuple sau

(StatusCode::NOT_FOUND, "No post at this URL")

là tương ứng với dòng sau trong tài liệu:

Tận dụng phong cách xử trí lỗi của Rust trong lập trình web

và đến lượt IntoResponse được implement trait From:

Tận dụng phong cách xử trí lỗi của Rust trong lập trình web

nên tuple đó có thể được chuyển đổi tự động.

Như vậy, tôi đã trình bày xong một trường hợp ứng dụng phong cách error handling của Rust. Khi lập trình website này, nhờ luật chặt chẽ của Rust mà tôi tránh được khá nhiều bug, điều dễ xảy ra với các ngôn ngữ khác, từ đó tiết kiệm được thời gian test đi test lại. Đây cũng là một trong những lý do tôi chọn Rust làm ngôn ngữ tiếp theo để đầu tư (sau Python), thay vì chọn Go như khá nhiều đồng nghiệp khác.

Bài viết gốc được đăng tải tại quan.hoabinh.vn

Có thể bạn quan tâm:

Các bước lập trình PLC cơ bản cho người mới (Phần 2)

Các bước lập trình PLC cơ bản cho người mới

Lập trình PLC đôi khi được đánh giá là khó nhằn cho những anh em mới bắt đầu. Tuy nhiên hướng tiếp cận được đề cập trong bài viết này sẽ giúp anh em dễ dàng hơn khi bắt đầu. Chia nhỏ các bước khi lập trình PLC giúp anh em dễ kiểm soát task tốt hơn và dễ dàng lập trình hơn.

Như đã đề cập ở lập trình PLC phần 1, phần 2 này sẽ đem tới cho anh em 1 ví dụ cơ bản khi lập trình PLC. Ví dụ này tuy đơn giản nhưng lại đầy đủ các bước cần thiết để lập trình PLC.

lap-trinh-plc-1

Hi vọng với 2 bài viết liên quan tới PLC, sẽ giúp đỡ phần nào cho anh em trong quá trình tìm hiểu về lập trình PLC. Chúc anh em xây dựng hệ thống làm việc với PLC thành công, đem vào sử dụng không xảy ra vấn đề gì.

1. Định nghĩa công việc cần làm

Như phần 1, anh em cũng đã biết để điều khiển được PLC, anh em cần có Input, Output và Process. Những yếu tố này là những yếu tố bắt buộc cần có để bắt đầu lập trình với PLC

Bước đầu tiên định nghĩa task của PLC là gì? Để định nghĩa được PLC cần làm gì, anh em có thể phải hỏi nhiều người khác nhau về cách thức hoạt động của máy. Máy đó hoạt động như thế nào?

Lúc nào thì cần PLC can thiệp? Những câu hỏi này cần phải trả lời rõ ràng trước khi anh em bắt đầu code trên PLC.

Cùng xem ví dụ dưới đây:

Các bước lập trình PLC
Nguồn ảnh / Source: accautomation.ca

Hai cảm biến: công tắc giới hạn trên cho biết khi nào piston được rút lại hoàn toàn (khi pistol kéo hết).

Phía dưới anh em có 1 công tắc, công tắc này cho anh em biết khi nào piston được mở rộng hoàn toàn. Phía trên anh em cũng có thể thấy một công tắc chính được sử dụng để bắt đầu quá trình và khi cần thì tắt. Khi bật công tắc chính, piston chuyển động tịnh tiến giữa vị trí kéo dài và thu lại. Khi tắt công tắc chính, piston sẽ trở về vị trí rút lại và tất cả các van điện từ đều tắt.

  Lập trình Arduino không hề khó cho người bắt đầu
  Lộ trình học lập trình C cho người mới bắt đầu

2. Định nghĩa input và output

Sau khi đã hiểu rõ máy móc hoạt động như nào. Giờ là lúc định nghĩa PLC sẽ làm gì cụ thể hơn với input và output. Cùng xem ví dụ dưới đây khi mô tả input và output.

Tất nhiên input sẽ là công tắc, vì bản thân công tắc có thể thay đổi chế độ bật tắt.

Khi anh em đã hiểu rõ phần hoạt động của máy thì input output không còn là vấn đề khó:

  • Công tắc chính – Bật/Tắt
  • Công tắc giới hạn trên – Bật/Tắt
  • Công tắc giới hạn dưới – Bật/Tắt

Với đầu ra (output), như ví dụ được nêu ở phần 1, output đầu ra sẽ là:

  • Down Solenoid – On/Off
  • Up Solenoid – On/Off

Sau khi đã định nghĩa được đầu vào và đầu ra, giờ là lúc lập trình chuỗi logic được định nghĩa từ trước.

Xem thêm tuyển dụng iOS hấp dẫn trên TopDev

3. Chuỗi logic

Phần này là phần tốn thời gian nhất khi lập trình với PLC. Bước 1, anh em hiểu hệ thống sẽ cần làm gì. Bước 2, anh em hiểu trong hệ thống PLC sẽ cần làm gì. Bước số 3 sẽ là bước hiện thực hoá chuỗi logic cần có ở PLC.

Để hiểu được logic, anh em có thể dùng chart hoặc sequence để mô tả phần logic sẽ dự định làm. Kinh nghiệm ở đây là nhiều anh em bỏ qua bước mô tả trình tự cần làm. Dẫn tới thiếu rất nhiều logic hoặc sai logic khi thực hiện viết vào PLC.

Các bước lập trình PLC
Nguồn ảnh / Source: accautomation.ca

Như bảng tuần tự được mô tả ở đây. Anh em sẽ thực hiện tuần tự các thao tác từ trái sang phải, từ trên xuống dưới. Trạng thái 1 (bật), và 0 (tắt) hoặc X (X ở đây anh em có thể hiểu là không quan trọng), in cũng được mà out cũng ok.

Lưu ý: Anh em sẽ nhận thấy rằng ở bước 2 sau khi bật công tắc chính, điện từ lên sẽ được kích hoạt. Vì vậy, piston luôn rút lại khi bật công tắc chính lần đầu tiên. Hoạt động này đã được chọn trong quá trình phát triển trình tự logic trong PLC này.

4. Lập trình PLC

Sau khi đã định nghĩa rõ các bước, giờ là lúc anh em bắt tay vào viết code PLC. Khi đã có đầy đủ phần logic được mô tả, anh em có thể code PLC bằng nhiều ngôn ngữ, nhưng trong phạm vi bài viết này, ladder logic sẽ được sử dụng.

Anh em code các ngôn ngữ khác có thể tham khảo thêm ở các bài viết khác.

Các bước lập trình PLC
Nguồn ảnh/ Source: accautomation.ca

5. Test thử chương trình PLC đã viết

Sau khi đã phát triển PLC, giờ là lúc kiểm tra các logic PLC đã viết. Các bước được mô tả trước đó giờ là công cụ hữu hiệu để anh em kiểm tra đối chiều các phần code PLC đã viết.

Kiểm tra phát triển chương trình PLC là một bước quan trọng để kiểm tra tất cả các điều kiện logic. (Chu kỳ nguồn, Lỗi cảm biến, An toàn, v.v.).

Tất nhiên phần kiểm tra tuỳ vào từng dự án, anh em có thể kiểm tra chương trình bằng máy mô phỏng hoặc máy thật. Ở bước này, có lỗi gì anh em có thể sửa chữa ngay.

Các bước lập trình PLC
Nguồn ảnh/ Source: accautomation.ca
Ngoài ra, anh em có thể hỏi những người am hiểu nhất về thiết bị để xem liệu thiết bị có hoạt động như họ mong đợi hay không. Phần này tương tự như feedback của end user, những người trực tiếp sử dụng máy.

6. Tham khảo

Mong rằng với 5 bước được đề ra trong bài viết này, anh em khi bắt đầu phát triển PLC sẽ dễ dàng hơn. Anh em cũng có thể tham khảo thêm các bài viết dưới đây trước khi bắt đầu dự án PLC của riêng mình.

Cảm ơn anh em đã đọc bài – Thank you for your time – Happy coding!

Tác giả: Kiên Nguyễn

Xem thêm:

C++ Developer là gì? Cách học lập trình C++ hiệu quả

C++ Developer là gì? Cách học lập trình C++ hiệu quả

Trong ngành lập trình, C được xem như cha đẻ của rất nhiều các ngôn ngữ lập trình khác nhau. C++ được xem như một phần mở rộng của ngôn ngữ lập trình C với phần class, nhờ tính tối ưu của nó mà C++ được sử dụng để viết, tạo ra rất nhiều phần mềm hệ thống trong ngành khoa học máy tính. Từ đó mà C++ Developer luôn là một vị trí được nhiều công ty, tổ chức tuyển dụng với mức đãi ngộ cao. Bài viết hôm nay chúng ta cùng tìm hiểu C++ Developer là gìcách học hiệu quả trở thành một lập trình viên C++ nhé.

Ngôn ngữ lập trình C++

C++ là ngôn ngữ lập trình bậc trung được phát triển từ năm 1979 dựa trên C; nó bao gồm sự kết hợp của cả các tính năng của ngôn ngữ lập trình bậc cao lẫn lập trình bậc thấp.

Ngôn ngữ lập trình C++

C++ có thể chạy được trên nhiều nền tảng khác nhau từ Windows, Mac OS đến các phiên bản của UNIX. Trải qua hơn 30 năm phát triển, C++ được bổ sung rất nhiều tính năng để trở thành một ngôn ngữ thương mại và phổ biến của nhiều lập trình viên. Tính năng của C++:

  • Lập trình tổng quát
  • Lập trình hướng đối tượng
  • Lập trình thủ tục
  • Lập trình đa hình
  • Các công cụ thao tác với bộ nhớ cấp thấp

Trong thực tế, C++ đang được sử dụng trong nhiều lĩnh vực như Games, hoạt hình, tạo ra các trình biên dịch, hệ điều hành. C++ cũng luôn đứng trong top 10 những ngôn ngữ lập trình phổ biến nhất hiện nay.

  Top 5 câu hỏi phỏng vấn C++ hay và khó

  So sánh giữa C++ và Golang 

C++ Developer là gì?

Lập trình viên C++ là những người sử dụng ngôn ngữ C++ để xây dựng, phát triển hay thực hiện các tính năng của chương trình, phần mềm. C++ được ưa chuộng sử dụng trong các ngành khoa học máy tính, kỹ thuật và phân tích toán học; vì vậy lập trình viên C++ thường là những người có kiến thức chuyên sâu về hệ thống, về ngành khoa học máy tính và thường xuyên làm việc, tương tác với tài nguyên phần cứng và hệ thống cấp thấp.

C++ Developer là gì?

Công việc thường ngày của những lập trình viên C++ bao gồm:

  • Phân tích yêu cầu khách hàng qua các tài liệu kỹ thuật. Đề ra giải pháp kỹ thuật cần thiết để đáp ứng yêu cầu
  • Thiết kế và phát triển các giải pháp phần mềm với ngôn ngữ C++
  • Tối ưu hóa, bảo trì, duy trì hoạt động của các hệ thống phần mềm
  • Xây dựng các ứng dụng bao gồm ứng dụng desktop (máy tính để bàn) , ứng dụng di động và các hệ thống nhúng
  • Thực hiện kiểm thử, phân tích, sửa lỗi

Nhiều vị trí tuyển dụng C++ đãi ngộ tốt trên TopDev

Kỹ năng của C++ Developer

Lập trình viên C++ cần được trang bị các kỹ năng cứng và kỹ năng mềm, cụ thể:

  • Thông thạo ngôn ngữ C++, cần có sự quan tâm đặc biệt đến cấu trúc source code của dự án cho khả năng mở rộng và quản lý trong tương lai
  • Có kiến thức, kỹ năng về lập trình hướng đối tượng để giải quyết các vấn đề lập trình một cách hiệu quả
  • Nên có kỹ năng, hiểu biết cơ bản về cơ sở dữ liệu quan hệ và cơ sở dữ liệu tài liệu
  • Kỹ năng tự học hỏi, tìm tòi và phát triển bản thân, luôn cập nhật các tính năng liên quan đến phiên bản mới

Kỹ năng của C++ Developer

Phương pháp học C++

C++ hay C là những ngôn ngữ lập trình thường được sử dụng trong việc giảng dạy lập trình ở các trường Đại học, và cũng là một ngôn ngữ quan trọng trong các dự án, quá trình nghiên cứu của các lập trình viên. Khi bắt đầu học C++, bạn có thể sẽ gặp khó khăn vì nó cần phải hiểu được nguyên lý hoạt động của chương trình với một số thiết lập trên các nền tảng hệ điều hành khác nhau.

Một số gợi ý sau có thể giúp bạn dễ tiếp cận học và trở thành C++ Developer hơn:

  • Lựa chọn sách dạy C++ và học theo: C++ là một ngôn ngữ lâu đời, vì thế có rất nhiều sách hay ebook nổi tiếng và hữu ích; bạn có thể tham khảo và đọc hiểu thêm để nắm rõ hơn về ngôn ngữ này. Một số quyển C++ bạn có thể tham khảo: The C++ Programming Language (4th Edition) By Bjarne Stroustrup, C Programming Language (2nd Edition) By Brian W. Kernighan & Dennis M. Ritchie, Head First C: A Brain-Friendly By David Griffiths and Dawn Griffiths
  • Sử dụng lưu đồ chương trình: lưu đồ (sơ đồ khối) là một loại sơ đồ biểu diễn thuật toán hoặc một quá trình. C++ là ngôn ngữ lập trình thủ tục, vì thế luồng xử lý logic là điều quan trọng trong chương trình C++; sử dụng lưu đồ giúp bạn viết code một cách tốt hơn và logic hơn.
  • Thực hành nhiều nhất có thể: Bất cứ khi học một ngôn ngữ lập trình nào thì việc thực hành viết code sẽ giúp bạn va chạm và tìm cách giải quyết bài toán một cách tốt nhất. Bạn cũng nên tham khảo các source code của người khác cùng với việc sử dụng các thư viện trong C++ để tăng khả năng viết code hiệu quả.
  • Tham gia các cộng đồng C++: C++ là một ngôn ngữ lâu đời với mức độ phổ biến cao, vì thế cộng đồng lập trình viên C++ cũng rất đông với sự hỗ trợ tuyệt vời. Bạn nên tham gia vào một số cộng đồng uy tín giúp đỡ cho việc học lập trình của bạn. Ngoài ra cũng có thể sử dụng các cộng đồng chung nổi tiếng như StackOverflow, Codechef, CodeProject để trao đổi và tìm hiểu sâu hơn về C++.

Kết bài

Qua bài viết này chúng ta đã cùng nhau tìm hiểu về C++ Developer là gì và một số gợi ý về cách học lập trình C++ hiệu quả. C++ luôn là một ngôn ngữ được đánh giá cao về mặt hiệu năng và tối ưu với tốc độ cao, vì thế trong tương lai nó vẫn sẽ là một ngôn ngữ hot với nhu cầu tuyển dụng cao. Hy vọng bài viết này hữu ích dành cho bạn và hẹn gặp lại các bạn trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Xem thêm:

Xem ngay những tin đăng tuyển dụng IT mới nhất trên TopDev

So sánh AWS, Google Cloud và Azure năm 2024

So sánh AWS, Google Cloud và Azure năm 2023

Giải pháp cloud (cloud solutions) là cơ hội để các doanh nghiệp chuyển đổi số cho doanh nghiệp của mình. Tạo ra các cơ hội kinh doanh mới, các giải pháp đột phá.

Áp dụng cloud, theo thống kê của McKinsey sẽ giúp doanh nghiệp tăng năng suất lên tới hơn 30%, giảm chi phí tới hơn 20% và đẩy nhanh quá trình phát triển, triển khai các sản phẩm mới. Về doanh thu còn tăng hơn tận 20%.

So sánh AWS, GCP và Azure năm 2023

Rõ ràng mà nói, trong lĩnh vực điện toán đám mây (cloud) thì 3 ông lớn là Amazon AWS, Google Cloud Platform (GCP)Microsoft Azure đang thống trị thị trường. Khách hàng của các công ty này phục vụ cũng là những tập đoàn lớn như Netflix, Boeing, Golmansachs. Xu hướng chuyển lên cloud là xu hướng không thể đảo ngược.

Chính vì vậy, bài viết này đem tới cho anh em một cái nhìn tổng quan, cũng như so sánh chi tiết về 3 ông lớn này.

Bắt đầu thôi anh em!

1. Tại sao phải so sánh

So sánh nhằm cung cấp cho anh em cái nhìn vừa tổng quan vừa là chi tiết từng bên cung cấp. Có cái nhìn tổng quan này giúp anh em dễ so sánh nếu phải đưa ra lựa chọn. Tất nhiên còn phụ thuộc vào dự án, công nghệ và nhiều yếu tố khác.

Tuy nhiên kiến thức tổng quan này sẽ giúp ích anh em rất nhiều trong việc đưa ra lựa chọn. Trước khi bắt đầu với chi tiết, dưới đây sẽ là một số tổng kết rút ra sau khi so sánh. Có gì anh em đọc trước.

1.1 Những so sánh chính

    • Ông AWS cung cấp giải pháp cloud với hạ tầng hoàn thiện và trải rộng trên nhiều lĩnh vực.
    • Ông Azure thì cũng mạnh cloud, nói về toàn diện thì khá toàn diện bởi không chỉ có Cloud mà còn tích hợp thêm nhiều thứ khác trong hệ sinh thái của Microsoft.
    • Ông Google thì mạnh ở data analytics và machine learning, cho phép các công ty sử dụng hoặc áp dụng các công nghệ tiên tiến.

  Hướng dẫn tạo Let’s Encrypt Certificates dưới local và import vào AWS Certificate Manage
  Triển khai Cloud tại Digital Banking: Đâu là yếu tố để đảm bảo chuyển đổi thành công?

1.3 So sánh vui

“AWS and GCP are the Volkswagen and Volvo of cloud computing. You always know you can rely on them for any service and that they’ll take you where your business needs to be with predictable performance. Meanwhile, Azure is akin to a sports car with impressive technology under the hood, but it’s not for everyone.” AWS và GCP là Volkswagen và Volvo trong giới cloud computing. Bạn luôn biết rằng bạn có thể tin cậy vào họ cho bất kỳ dịch vụ nào họ đưa ra và họ sẽ đưa bạn đến cái mà doanh nghiệp của bạn cần với hiệu suất có thể dự đoán được. Trong khi đó, Azure giống như một chiếc xe thể thao với công nghệ ấn tượng bên dưới mui xe, nhưng nó không dành cho tất cả mọi người.

Đây là đánh giá của công ty công nghệ Acropolium. Họ đã theo dõi quá trình phát triển của cloud từ những năm 2009 (đối với AWS), Azure là từ năm 2011, DigitalOcean và OpenStack là từ những năm 2013.

Tham khảo việc làm Cloud cao, hấp dẫn trên TopDev!

1.4 Thị phần của 3 ông lớn

Các doanh nghiệp ngày nay nhận thấy tiềm năng to lớn của cloud computing. Việc thanh toán cho những gì mình sử dụng (pay as you go) lại là điểm cộng lớn khi chuyển đổi lên cloud. Thay vì setup cho thừa mứa như trước đây với chi phí cao, các doanh nghiệp giờ chỉ trả tiền cho những gì họ sử dụng.

Ngoài ra các vấn đề về bảo mật cũng được các nhà cung cấp dịch vụ cloud đảm bảo, càng củng cố thêm cho quyết định dịch chuyển lên cloud đối với các doanh nghiệp từ lớn, vừa cho tới nhỏ.

Trong năm 2022, thị trường cloud được định giá 484 tỷ USD và dự kiến ​​sẽ tăng trưởng khoảng 14% mỗi năm từ năm 2023 đến năm 2030. Một con số khủng khiếp

Nói về thị phần năm 2022:

    • Amazon Web Services — 32%
    • Microsoft Azure — 23%
    • Google Cloud Platform — 10%

Ông lớn AWS tỏ ra là người mạnh mẽ nhất trong cuộc đua tam mã này rồi!

2. AWS (Amazon Web Service)

Nếu lựa chọn AWS là nền tảng của công ty, anh em sẽ có một vài ông hàng xóm cũng sử dụng AWS. Tất nhiên những ông hàng xóm này đều là những ông hàng xóm nổi bật

    • Netflix
    • Expedia
    • Apple
    • Verizon
    • Philips

Đây chỉ là một vài cái tên nổi bật, còn hàng triệu các doanh nghiệp nhỏ và vừa khác còn sử dụng AWS nữa nha anh em.

3. Azure

Nếu lựa chọn Microsoft Azure, cũng có một vài ông hàng xóm nổi đình nổi đám bao gồm

    • PepsiCo
    • Boeing
    • Adobe
    • Bosch
    • Uber

3. Google Cloud

Google Cloud cũng không khiến anh em thất vọng, dùng GCP sẽ đồng hành cùng với

    • Goldman Sachs
    • eBay
    • Twitter
    • PayPal
    • Etsy

Google Cloud

Một số công ty áp dụng chiến lược đám mây để đảm bảo an toàn cho hệ thống nhờ sức mạnh tính toán ngày càng mạnh mẽ và phạm vi dịch vụ đám mây toàn diện hơn. Biết đâu được đây cũng là kèo anh em đặt an toàn nhất.

4. Bảng so sánh

Sau khi điểm qua danh sách một số ông hàng xóm, giờ là lúc đi vào so sánh 3 dịch vụ đám mây phổ biến hiện nay. Để xem chúng có gì giống và khác nhau

Tiêu chí AWS Azure Google Cloud
Tốt với số lượng services (Suite of services) 200+ 200+ 100+
Cloud regions (khu vực có cloud) 31 60+ 37
Availability zones (cái này đánh vào tính availability – sẵn sàng) 99 3 cái mỗi region 112
Độ phủ sóng (Global coverage) 245 quốc gia và vùng lãnh thổ 140 quốc gia 200+ quốc gia và vùng lãnh thổ
Compliance offerings (dịch vụ cung cấp) 143 100+ 100+
Compute (tính toán) Amazon Elastic Compute Cloud Azure Virtual Machines, Azure Container Instances, Azure App Service, etc Google Compute Engine
Relational and non-relational databases (Database RDS và non RDS) 15 10 9
Storage (Lưu trữ) Simple Storage Service Azure Blob Storage Cloud Storage
Hybrid and multi-cloud strategy support AWS Outposts Azure Stack Anthos
IoT AWS IoT Core Azure IoT Hub Cloud IoT Core
Serverless AWS Lambda Azure Functions Cloud Run
AI/ML (trí tuệ nhân tạo, học máy) Amazon SageMaker, Amazon Augmented AI, Amazon Forecast, Amazon Personalize, … Applied AI Services, Amazon Bot Services, Azure Cognitive Services, Anomaly Detector, Kinect DK Vertex AI, Speech-to-Text, Text-to-Speech, Translation AI, Dialogflow
Giá cả Pay-as-you-go (xài nhiêu trả nhiêu) Pay-as-you-go (xài nhiêu trả nhiêu) Pay-as-you-go (xài nhiêu trả nhiêu)
Có free tier Free account + 12-month Free account + $200 credit to spend in the first 30 days Free account + $300 credit to spend

5. Một số tiêu chí

Sau khi đã xem xét thông tin toàn bộ các tiêu chí so sánh, giờ là lúc tiếp cận sâu hơn các tiêu chí so sánh đã liệt kê ở phía trên.

5.1 Availability (tính khả dụng)

Azure có tầm khoảng 3 availability trong mỗi khu vực, (tổng là hơn 60 khu vực), vậy ông Azure này có thể đảm bảo tính khả dụng cho dịch vụ của anh em cao hơn, đồng thời delay – độ trễ thấp hơn ở một số khu vực khác.

Nhưng về độ phủ sóng, Azure có vẻ lại hụt hơi hơn so với AWS và GCP, nên tính về tiêu chí này, nếu không thực sự quan trọng các tiêu chí SLA hoặc quan tâm tới availability zone. 3 ông lớn này ngang nhau về tính khả dụng.

5.2 Compliance offerings

Cả 3 ông này đều cung cấp nhiều hơn 100 dịch vụ, vậy yếu tố quyết định lựa chọn cái nào là ngành của anh em là gì? Ví dụ nếu anh em cần SaaS, cần chọn các dịch vụ cloud có HIPAA, EPCS.

Vậy tiêu chí này tuỳ thuộc vào nhu cầu của dự án anh em dự định sẽ triển khai nhé!

5.3 Compute (tính toán)

Ở khả năng tính toán thì AWS IaaS mà cụ thể ở đây là EC2, hơn 400 instances và 400 Gbps Ethernet. Song hành với đó, Azure’s Virtual Machines của Azure và Google’s Compute Engine (GCP) cũng cho phép mở rộng nhanh chóng. Với tiêu chí này, cả 3 ông đều đáng để cân nhắc.

Compute (tính toán)

5.4 Databases

Ở tiêu chí này, AWS tỏ ra vượt trội hơn về hệ cơ sở dữ liệu. AWS cung cấp tới 15 loại Database, ngoài ra ở RDS và non RDS, AWS còn cung cấp Amazon Aurora và Amazon DynamoDB. Azure và GCP chỉ cung cấp khoảng 10 loại DB (tất nhiên đây là những loại phổ biến).

Như Azure, RDS và non RDS sẽ là Azure SQL và Azure Cosmos DB. Phía GCP lần lượt là Cloud SQL và Cloud Bigtable.

6. Tổng kết

6.1 Azure

Một số yếu tố anh em có thể cân nhắc khi sử dụng Azure:

    • Hơn 95% công ty trong danh sách Fortune 500 lựa chọn Azure
    • 40% người dùng Azure ở Mỹ
    • Về tập khách hàng của Azure, theo số lượng nhân viện,thì số lượng nhân viên từ 0 đến 50 (29%), 51-100 (26%) và 101-500 (25%) nhân viên.
    • Top 5 business sử dụng Azure bao gồm: bán lẻ, công nghệ thông tin và dịch vụ, phần mềm máy tính, xây dựng và ô tô.
    • Về giá cả, 37% người dùng Azure sử dụng hoặc biết tới chiết khấu khi đặt hàng sử dụng Azure trong thời gian dài

6.2 GCP

    • 51% người dùng Google Cloud là các công ty nhỏ có tối đa 50 nhân viên
    • 59% khách hàng của GCP ở Mỹ, 7% ở Anh và 5% ở Canada
    • Về top 5 business sử dụng GCP bao gồm: bán lẻ, xây dựng, chăm sóc sức khỏe, công nghệ và dịch vụ thông tin và phần mềm máy tính
    • Về chiết khấu thì GCP chỉ đạt mức 26% người dùng sử dụng

6.2 AWS

    • 10% người dùng chọn AWS là các công ty lớn với hơn 1000 nhân viên
    • 52% khách hàng của Amazon AWS tại Mỹ và 7% ở Anh
    • 5 lĩnh vực kinh doanh (top business) gồm bán lẻ, phần mềm máy tính, công nghệ thông tin và dịch vụ, xây dựng, y tế
    • AWS ECS/EKS vượt qua Docker để giành danh hiệu số lượng người dùng nhiều nhất với 51% người dùng
    • 36% khách hàng AWS có sử dụng chiết khấu và 31% ưu tiên sử dụng tiết kiệm

Với các thông tin được cung cấp ở đây, hi vọng anh em sẽ có cái nhìn tổng quan đầy đủ về 3 ông lớn trong nhóm dịch vụ Cloud.

7. Tham khảo

Cảm ơn anh em đã đọc bài – Thank you for your time – Happy coding!

Tác giả: Kiên Nguyễn
Có thể bạn quan tâm:

CodeMirror là gì? – Khung soạn thảo Code và Markdown hiệu quả

CodeMirror là gì? - Khung soạn thảo Code và Markdown hiệu quả

Bài viết được sự cho phép của tác giả Tống Xuân Hoài

Vấn đề

inputtextarea là hai thẻ mà HTML định nghĩa để giúp chúng ta lấy được dữ liệu người dùng nhập vào. input phù hợp trong trường hợp nội dung nhập vào tương đối ngắn và ngược lại – textarea thường là một cái gì đó rất dài và xuống dòng. Sau này tìm hiểu thêm, tôi được biết đến một cách khác nữa để lấy được dữ liệu người dùng là contenteditable, nhưng ngược lại với input và textareacontenteditable cho phép người dùng chỉnh sửa trực tiếp mã HTML. Chính vì thế dữ liệu hiển thị trong contenteditable vô cùng đa dạng.

Có một hạn chế là hai thẻ trên chỉ đơn giản là cho người dùng nhập vào những dòng chữ, thuần kí tự. Nếu muốn làm gì đó trong những nội dung này, ví dụ như định dạng chữ, highlight cú pháp, tạo shortcut… thì quả là một vấn đề khó khăn. Do đó, nếu chỉ sử dụng chúng một cách đơn thuần, chúng ta khó mà có thể tạo ra được một trình soạn thảo văn bản có định dạng phong phú. contenteditable thì lại “dính” quá nhiều mã HTML, khó có thể lọc ra được nội dung của người dùng đang nhập. Chưa kể, mỗi trình duyệt lại có cách triển khai contenteditable khác nhau cho nên nhiều khi chúng sẽ hoạt động một cách khó hiểu.

  Thuật toán tìm kiếm nội suy trong JavaScript

  Bạn biết gì về thuật toán Radix Sort trong JavaScript?

Vì lẽ đó, có khá nhiều thư viện Text Editor được ra đời và cung cấp tính năng soạn thảo, định dạng văn bản rất mạnh mẽ. Có thể kể đến những cái tên như TinyMCECKEditorWYSIWYG… Điểm chung của những công cụ này là chúng có giao diện đẹp mắt, hiện đại, với các thanh công cụ hỗ trợ định dạng văn bản như một trình soạn thảo thực thụ. Sử dụng trong những trường hợp cần nhập vào nội dung không chỉ đơn giản là thuần chữ, mà còn là cách trình bày, định dạng, hình ảnh… Hầu hết chúng đều cho đầu ra là các đoạn mã HTML, chỉ cần lưu lại và trả về cho trình duyệt hiển thị là đã có trang hiển thị “y xì đúc”.

Mạnh mẽ là thế nhưng tất cả chúng hầu như lại không đáp ứng được một nhu cầu đơn giản của tôi là trình soạn thảo Markdown với chế độ xem trước (Preview). Nếu lướt qua những cái tên bên trên, có thể bạn sẽ thấy một vài thư viện có cả chế độ Markdown. Tôi đã thử qua chúng và thấy rằng nó vẫn chưa đáp ứng được, hoặc là chỉ làm nửa vời – nghĩa là không hỗ trợ hết cú pháp của markdown…

Giới thiệu CodeMirror - Khung soạn thảo Code và Markdown hiệu quả

Nhu cầu của tôi khá đơn giản, một cái gì đó nhanh, nhẹ, hỗ trợ highlight cú pháp và có khả năng tùy biến dễ dàng – nghĩa là thêm thắt tính năng nuột nà. Trên đà đó, tôi bắt đầu tìm kiếm sang các keyword khác như là “markdown editor library”… Lúc đó, một ứng cử viên sáng giá xuất hiện là SimpleMDE.

SimpleMDE đúng như cái tên của nó, một trình editor markdown siêu “đơn giản”, tập trung vào viết, hỗ trợ hầu như đầy đủ tiêu chí mà tôi cần. Nhưng khi nghiên cứu đến API của SimpleMDE, một cái tên mới xuất hiện là CodeMirror. Đến đây, tôi hiểu rằng SimpleMDE có thể đang sử dụng CodeMirror ở dưới nền. Tiếp tục tìm hiểu thì quả không sai, CodeMirror cũng là một trình soạn thảo markdown và có lẽ là rất mạnh mẽ.

Codemirror

CodeMirror là một thư viện JavaScript mã nguồn mở được sử dụng để tạo ra trình soạn thảo mã trong các ứng dụng web. Nó cung cấp một giao diện tương tác cho người dùng để viết và chỉnh sửa mã nguồn trong nhiều ngôn ngữ lập trình khác nhau. CodeMirror hỗ trợ các tính năng quan trọng như làm nổi bật cú pháp (syntax highlighting), tự động hoàn thành mã (code autocompletion), kiểm tra lỗi (error checking), thay đổi kích thước linh hoạt và nhiều tính năng khác.

CodeMirror thường được sử dụng trong các dự án web-based, chẳng hạn như trình soạn thảo mã nguồn trong các trang web dự án mã nguồn mở, các môi trường phát triển tích hợp (IDEs), trình biên tập blog với hỗ trợ mã, và nhiều ứng dụng web khác đòi hỏi khả năng soạn thảo mã nguồn.

Tham khảo việc làm JavaScript tại Hồ Chí Minh trên TopDev

Có rất nhiều lợi ích mà Codemirror mang lại để làm lý do cho tôi và nhiều người khác sử dụng nó như:

  • Làm nổi bật cú pháp (Syntax Highlighting), tự động hoàn thành mã (Code Autocompletion, kiểm tra lỗi (Error Checking):
  • Dễ dàng tạo thêm các phím tắt (Keybindings).
  • Tùy chỉnh giao diện theo sở thích.
  • Kho plugin phong phú hoặc tự tạo thêm plugin cho mình.
  • Tương thích đa nền tảng, đây là cái hết sức cần thiết vì tôi không phải mất thêm thời gian để đi fix lỗi trong nhiều trình duyệt khác nhau.
  • Tài liệu và API rõ ràng, cộng đồng sử dụng lớn nên nhanh chóng tìm được sự trợ giúp trong quá trình phát triển.

Hiện tại tôi đang sử dụng CodeMirror ở hai nơi, một là trình soạn thảo bài viết trong AdminCP, hai là khung bình luận của blog. Mặc dù chưa được tối ưu hóa cho lắm như tôi có thể kiểm soát được tính năng mới cho chúng.

Triển khai

Vì là một thư viện JavaScript nên chúng ta có thể dễ dàng nhúng lên bất kì trang web nào. Hoặc nếu đang sử dụng một thư viện như là Vue, React… thì cũng có nhiều packages biến đổi CodeMirror thành components của thư viện.

Dưới đây là một ví dụ sử dụng CodeMirror cho một khung soạn thảo markdown đơn giản.

import {basicSetup, EditorView} from "codemirror"
import {markdown} from "@codemirror/lang-markdown"
import {languages} from "@codemirror/language-data"

let view = new EditorView({
  doc: "Hello\n\n```javascript\nlet x = 'y'\n```",
  extensions: [
    basicSetup,
    markdown({codeLanguages: languages})
  ],
  parent: document.body
})

Bạn đọc có thể xem thêm nhiều ví dụ hơn nữa tại Try CodeMirror. Hoặc xem thêm ví dụ cụ thể cho từng trường hợp sử dụng tại Examples.

Bài viết gốc được đăng tải tại 2coffee.dev

Có thể bạn quan tâm:

Hàng loạt việc làm IT hấp dẫn trên TopDev đang chờ bạn ứng tuyển

RPA là gì? Ưu điểm và tính ứng dụng tuyệt vời

RPA là gì? Xu hướng công nghệ trong kỷ nguyên 4.0

RPA là gì? Trong bối cảnh cuộc cách mạng công nghiệp 4.0 đang diễn ra mạnh mẽ, RPA đã nổi lên như một công cụ quan trọng giúp các tổ chức tối ưu hóa quy trình làm việc, giảm thiểu sai sót và tăng cường năng suất làm việc. Trong bài viết này, chúng ta sẽ cùng khám phá sâu hơn về RPA, từ cách hoạt động cho đến những ứng dụng thực tiễn của RPA trong từng ngành nghề.

Tổng quan về RPA

RPA là gì?

RPA (Robotic Process Automation) là một công nghệ tự động hóa quy trình làm việc bằng cách sử dụng phần mềm để thực hiện các tác vụ và hoạt động theo cách mà con người thường thực hiện. Mục tiêu chính của RPA là giảm bớt công việc thủ công, lặp đi lặp lại và tốn thời gian bằng cách chuyển phần lớn các quy trình do con người thực hiện sang các “robot” phần mềm.

RPA là gì?

RPA có khả năng tương tác với các ứng dụng, hệ thống và giao diện người dùng như con người thông qua các quy tắc và luật lệ được lập trình trước. Điều này cho phép RPA thực hiện các tác vụ như nhập liệu, kiểm tra dữ liệu, xử lý giao dịch tài chính, kiểm tra và cập nhật thông tin trong các hệ thống khác nhau, và nhiều hoạt động khác.

RPA không chỉ được sử dụng trong doanh nghiệp, mà còn trong nhiều lĩnh vực khác như tài chính, chăm sóc sức khỏe, ngành công nghiệp và quản lý dịch vụ. Đối với các nhiệm vụ đơn giản, lặp đi lặp lại và cần tính chính xác cao, RPA đóng vai trò quan trọng trong việc nâng cao năng suất và tối ưu hóa quy trình làm việc.

Phân loại RPA

RPA thường được chia làm 3 loại:

Attended Robot: Đây là loại RPA tương tác chặt chẽ với con người trong quá trình thực hiện nhiệm vụ. Attended Robot thường làm việc trong các tình huống cần sự can thiệp, kiểm tra, hoặc quản lý từ phía con người.

Unattended Robot: Loại này hoạt động hoàn toàn tự động mà không cần sự can thiệp của con người. Chúng thường làm việc theo lịch trình hoặc khi kích hoạt bởi các sự kiện cụ thể.

Hybrid Robot: Hybrid Robot kết hợp tính năng của cả Attended và Unattended Robot. Chúng có khả năng hoạt động tự động trong môi trường không cần sự can thiệp của con người, nhưng cũng có thể tương tác với con người trong những tình huống cần thiết. Tuy nhiên, việc tích hợp Hybrid Robot vào quy trình doanh nghiệp khá phức tạp nên thường được ít sử dụng.

  Câu hỏi phỏng vấn RPA Engineer nhất định bạn phải biết!

RPA mang lại lợi ích gì cho doanh nghiệp?

RPA mang lại lợi ích gì cho doanh nghiệp?

Việc áp dụng RPA (Robotic Process Automation) mang lại nhiều lợi ích quan trọng cho các tổ chức và doanh nghiệp. Dưới đây là một số lợi ích chính của việc sử dụng RPA:

  • Tăng Hiệu Suất và Năng Suất: RPA giúp tổ chức thực hiện các nhiệm vụ tự động, nhanh chóng và chính xác hơn. Điều này dẫn đến tăng cường hiệu suất và năng suất của nhân viên, vì họ không cần phải thực hiện các tác vụ lặp đi lặp lại và thường tốn nhiều thời gian.
  • Giảm Sai Sót: RPA loại bỏ yếu tố con người trong các quy trình làm việc, giảm thiểu sai sót do nhân factor gây ra. Điều này đặc biệt quan trọng trong các nhiệm vụ cần tính chính xác cao, như xử lý tài chính và dữ liệu quan trọng.
  • Tiết Kiệm Thời Gian và Chi Phí: Tự động hóa các tác vụ thường tốn thời gian như nhập liệu, kiểm tra dữ liệu, và xử lý giao dịch giúp giảm bớt thời gian làm việc và tiết kiệm chi phí nhân sự.
  • Linh Hoạt và Tích Hợp: RPA có khả năng tương tác với nhiều hệ thống và ứng dụng khác nhau, không yêu cầu thay đổi cơ sở hạ tầng hiện có. Điều này giúp tạo ra sự linh hoạt trong việc kết nối và tích hợp các hệ thống.
  • Giải Phóng Nhân Lực: Nhân viên có thể chuyển tập trung vào các nhiệm vụ có tính sáng tạo, tư duy chiến lược và tương tác với khách hàng, thay vì phải dành nhiều thời gian cho các tác vụ đơn giản.

Tham khảo việc làm RPA Developer hấp dẫn trên TopDev

Điểm hạn chế của RPA

Mặc dù RPA có nhiều lợi ích, nhưng cũng tồn tại một số hạn chế mà các doanh nghiệp cần xem xét khi triển khai công nghệ này:

  • Khả Năng Tự Động Hóa Giới Hạn: RPA chỉ phù hợp cho các tác vụ lặp đi lặp lại và có quy tắc rõ ràng. Những nhiệm vụ phức tạp và đòi hỏi sự hiểu biết, tư duy sáng tạo, hay quyết định chưa có sẵn trong luật lệ khó có thể được tự động hóa.
  • Phụ Thuộc vào Giao Diện Người Dùng: RPA thường tương tác với các ứng dụng và hệ thống thông qua giao diện người dùng. Nếu có sự thay đổi trong giao diện hoặc quy tắc, RPA có thể gặp khó khăn hoặc không hoạt động đúng cách.
  • Không Thích Nghi Tự Động: RPA không thể tự động thích nghi với các thay đổi không được lập trình sẵn. Khi có sự thay đổi trong quy trình hoặc môi trường, cần có sự can thiệp của con người để cập nhật và điều chỉnh RPA.
  • Thay Đổi Văn Hóa và Quản Lý: Sự áp dụng RPA có thể yêu cầu thay đổi văn hóa tổ chức và quản lý để đảm bảo rằng nhân viên có thể tương tác tốt với các hệ thống tự động hóa mới.

So sánh RPA với AI

So sánh RPA với AI

RPA (Robotic Process Automation) và AI (Artificial Intelligence) là hai khái niệm liên quan đến tự động hóa và trí tuệ nhân tạo, giữa chúng có điểm khác biệt quan trọng. Dưới đây là những điểm khác nhau chính giữa RPA và AI:

RPA AI
Mục Tiêu Chính Tự động hóa các tác vụ lặp đi lặp lại và có quy tắc trong quy trình làm việc Tạo ra khả năng học hỏi và thông minh nhân tạo
Loại Tác Vụ Tác vụ cụ thể và lặp đi lặp lại Tác vụ phức tạp và đòi hỏi thông minh suy luận
Tính Tự Động Hóa Tự động hóa các nhiệm vụ cụ thể theo quy tắc Khả năng học hỏi, tương tác, và suy luận
Dữ liệu Dữ liệu cần được cấu trúc Sử dụng free time data nên không dựa theo một quy trình nào hết
Hiệu Suất Tăng hiệu suất và năng suất với các nhiệm vụ cụ thể Tạo ra khả năng thông minh và dự đoán
Khả Năng Tự động hóa dựa trên quy tắc và quy trình Học hỏi, tương tác, phân tích, dự đoán
Tương tác Vẫn cần sự giám sát từ con người do chưa thể tự đưa ra quyết định Không cần sự giám sát từ con người nhờ khả năng phân tích data và thuật toán
Ví Dụ Nhập dữ liệu từ bảng tính vào hệ thống Phân tích dữ liệu để dự đoán xu hướng

xem thêm: công việc chính của RPA Developer là gì?

Triển vọng phát triển của RPA Developer

RPA là một công nghệ phát triển nhanh chóng và được ứng dụng rộng rãi trong nhiều ngành nghề, lĩnh vực khác nhau. Theo báo cáo của Grand View Research, quy mô thị trường RPA toàn cầu dự kiến sẽ đạt 13.74 tỷ USD vào năm 2028. Điều này cho thấy nhu cầu nhân lực RPA Developer đang ngày càng tăng cao.

Triển vọng phát triển của RPA Developer

Có thể thấy, triển vọng nghề nghiệp của RPA Developer là rất khả quan. Với những kỹ năng và kiến thức chuyên môn cần thiết, RPA Developer có thể tìm được việc làm tại các doanh nghiệp lớn, công ty khởi nghiệp, hoặc các công ty cung cấp giải pháp RPA. Mức lương của RPA Developer cũng khá cao, tùy thuộc vào năng lực và kinh nghiệm của từng cá nhân.

Để trở thành một RPA Developer, bạn cần có kiến thức nền tảng về lập trình, công nghệ thông tin, và các kiến thức chuyên sâu về RPA như:

  • Cơ bản về RPA
  • Các công cụ RPA phổ biến
  • Quy trình thiết kế, xây dựng và triển khai bot RPA
  • Quản lý bot RPA
  • An ninh và bảo mật RPA

Bạn có thể tham gia các khóa học đào tạo về RPA để trang bị cho mình những kiến thức và kỹ năng cần thiết. Ngoài ra, bạn cũng có thể tích lũy kinh nghiệm bằng cách tham gia các dự án RPA thực tế.

Tổng kết

RPA (Robotic Process Automation) đã không chỉ đơn thuần là một khái niệm công nghệ, mà còn trở thành một trong những cột mốc quan trọng trong cuộc cách mạng số hóa hiện đang diễn ra. Sự phát triển của RPA đã mở ra cơ hội mới để các tổ chức tự động hóa các quy trình phức tạp hơn, dự đoán xu hướng, và tương tác thông minh với khách hàng.

RPA là một minh chứng cho sự không ngừng tiến bộ của con người trong việc tận dụng công nghệ để đạt được hiệu suất và hiệu quả tốt nhất. Điều này cũng thể hiện khả năng thích nghi của chúng ta trong thế giới số hóa ngày càng phức tạp, và khẳng định vai trò quan trọng của con người trong việc định hình và tận dụng tiềm năng của công nghệ mới.

Xem thêm:

Việc làm IT lương cao, đãi ngộ hấp dẫn có trên TopDev. Ứng tuyển ngay!

Giới thiệu công cụ Fig.io – chuyên gia nhắc lệnh cho bạn!

Giới thiệu công cụ Fig.io - chuyên gia nhắc lệnh cho bạn!

Bài viết được sự cho phép của tác giả Tống Xuân Hoài

Vấn đề

Nhớ lại nhiều năm về trước, khi mới bắt đầu học cách sử dụng Linux, điều tôi sợ nhất đó chính là sử dụng lệnh. Sợ vì không biết phải dùng lệnh gì tiếp theo hay kí ức về lệnh gần như là bằng con số 0. Nhiều lần cảm thấy chán nản định thôi không dùng nữa, nhưng một động lực nào đó lại khiến mình phải quyết tâm ở lại.

Đa số hướng dẫn khi thiết lập một công cụ hay phần mềm nào đó đều xuất hiện những dòng lệnh. Ban đầu thì cứ làm theo những gì họ bảo, “copy” và “paste” theo đúng nghĩa, miễn là chạy hoặc cài đặt thành công là được. Dần dần cũng quen, tôi có thể gõ lại được một số lệnh theo thói quen đó. Ví dụ sudo để sử dụng quyền Admin, sudo apt-get update để cập nhật repository của Ubuntu, sudo apt-get install xyz để cài một phần mềm “xyz” nào đó…

Trên đà đó, tôi bắt đầu quen hơn với những câu lệnh khác của Linux. Ví dụ như cd để di chuyển vào thư mục, ls -l hay ll để hiển thị danh sách các thư mục và tệp tin có trong thư mục, rm để xóa, mkdir để tạo, cp để copy, mv để di chuyển… Tôi nhận ra rằng phương pháp học hiệu quả nhất là lặp đi lặp lại cho đến khi bạn thông thạo nó. “Trăm hay không bằng tay quen” quả là một kinh nghiệm quý báu mà các cụ để lại.

Nếu thế tôi đã nhớ tất cả lệnh của Linux? Không đâu! Chắc chắn là không rồi. Số lượng lệnh của Linux là rất nhiều, chưa kể các cờ (flag) khi sử dụng chúng nữa. Ví dụ một lệnh rm thôi chúng ta sẽ có thêm rất nhiều flag kèm theo, thường hay sử dụng là rm -rf để xóa thư mục “cứng đầu” mà không cần xác nhận. Một mẹo để xem các flag của lệnh chính là sử dụng một lệnh khác: man. Ví dụ man rm:

 Giới thiệu công cụ Fig.io

Lệnh man có vẻ sẽ hữu ích trong một số trường hợp. Khi nào chúng ta quên gì đó, hãy dùng man để xem lại tất cả tùy chọn. Dĩ nhiên nếu đang gõ lệnh mà “quên” mất thì sao? Tôi cá là bạn phải xóa hết đi để gõ man, hoặc…mở một tab mới. Vậy thì còn cách nào hay hơn không?

  Tại sao trên Linux hay dùng những định dạng file nén như *.gz, *.xz thay vì *.zip, *.7z?

  Linux - Setup môi trường cho Web Developer

Fig.io là một công cụ trợ giúp gõ lệnh tiến tới đa nền tảng. Với nó, bạn có thể giảm được thời gian phải đi tìm kiếm sự trợ giúp vì nó sẽ nhắc cho bạn cú pháp tiếp theo cần gõ là gì. Fig.io cung cấp cho người dùng một giao diện dòng lệnh tương tự như Terminal hoặc Command Prompt trên hệ điều hành, nhưng có khả năng tự động hoàn thiện lệnh và cung cấp cho người dùng các gợi ý lệnh dựa trên lịch sử và tên lệnh đang được gõ.

Một điểm đặc biệt của Fig là tính năng hoàn thiện lệnh tự động. Khi người dùng bắt đầu gõ một lệnh, nó sẽ tự động hoàn thiện các từ và đưa ra các gợi ý lệnh phù hợp với lịch sử và tên lệnh đang được gõ. Điều này giúp người dùng tiết kiệm thời gian và giảm thiểu lỗi trong quá trình gõ lệnh.

Bạn có thể thấy, tôi chỉ cần gõ docker lập tức Fig sẽ nhắc cho tôi tất cả tham số tiếp theo kèm theo cả lời giải thích. Qua đó tôi có thể nhanh chóng lướt qua và nhớ ngay ra cú pháp tiếp theo cần dùng là gì.

 Giới thiệu công cụ Fig.io

Tham khảo việc làm Linux Hồ Chí Minh hấp dẫn trên TopDev

Cài đặt và sử dụng cơ bản

Hiện tại Fig chỉ mới hỗ trợ MacOS, các bản dành cho Windows hay Linux đang được phát triển, có thể sẽ phải đợi thêm một thời gian nếu như bạn không sử dụng Mac.

Cài đặt Fig thông qua homebrew:

$ brew install --cask fig

Hoặc bạn cũng có thể tải về bản cài đặt trên trang chủ của Fig.

Mở Fig lên, bạn sẽ cần phải đăng nhập và làm theo một số hướng dẫn để nó có quyền truy cập vào các phần mềm Shell. Sau khi hoàn thành, thử mở Terminal lên và gõ bất kì một lệnh nào mà bạn nhớ. Ví dụ tôi thường xuyên sử dụng docker và khi gõ docker nó sẽ nhắc cho tôi hết các tùy chọn tiếp theo.

Ngoài gợi ý lệnh ra, Fig còn hỗ trợ các tính năng khác như lưu trữ lịch sử lệnh, tạo và sử dụng các biến môi trường, quản lý các lệnh yêu thích và tính năng đa tab.

Một lưu ý là không phải tất cả lệnh Fig đều biết. Theo tài liệu, Fig hiện có hơn 500 CLI tools được hỗ trợ tự động hoàn thành. Ngoài ra bạn cũng có thể tìm kiếm thêm thông qua kho Plugin nếu CLI của bạn không hỗ trợ điều này.

Tổng kết

Với Fig, việc gõ lệnh sẽ trở nên dễ dàng hơn và giúp cho các lập trình viên tiết kiệm được nhiều thời gian trong quá trình làm việc. Fig cung cấp cho người dùng nhiều tính năng tiện ích, đặc biệt là tính năng gợi ý cũng như tự động hoàn thành và các lệnh tắt. Việc sử dụng fig.io cũng giúp cho người dùng có thể quản lý được lịch sử lệnh, các biến môi trường và các lệnh yêu thích.

Bài viết gốc được đăng tải tại 2coffee.dev

Xem thêm:

Xem thêm các việc làm lĩnh vực IT hấp dẫn trên TopDev

NodeJS Developer là gì? Trở thành lập trình viên NodeJS có khó không?

NodeJS Developer là gì? Trở thành lập trình viên NodeJS có khó?

NodeJS là một nền tảng được viết bằng JavaScript đang phổ biến hiện nay, vì thế vị trí lập trình viên NodeJS đang có nhu cầu tuyển dụng cao cùng mức đãi ngộ hấp dẫn mà nhiều công ty đang tìm kiếm. Bài viết hôm nay chúng ta cùng nhau tìm hiểu NodeJS Developer là gì và cần học gì để trở thành một lập trình viên NodeJS nhé.

NodeJS là gì?

Trước tiên hãy cùng tìm hiểu về NodeJS và lý do tại sao nó đang được ưa chuộng sử dụng hiện nay nhé.

NodeJS là một nền tảng (platform) được xây dựng dựa trên V8 JavaScript Engine (một engine mã nguồn mở phát triển bởi Google). Lợi thế của NodeJS là nó có thể hoạt động trên nhiều nền tảng khác nhau từ Windows, Linux hay OS X; sử dụng JavaScript là một ngôn ngữ lập trình dễ học và có thể viết code được cho cả phía client và server. 

NodeJS là gì?

NodeJS sử dụng luồng đơn (Single Thread) hay non-blocking I/O để thực hiện các yêu cầu giúp nhanh chóng giải quyết các request đến từ client và trả về kết quả, tránh tình trạng tiêu tốn bộ nhớ hệ thống; giúp nó có thể hỗ trợ số lượng lớn các kết nối đồng thời. Hiện tại, cộng đồng NodeJS phát triển rất mạnh mẽ với nhiều thư viện, module được phát hành giúp đơn giản hóa và tiết kiệm thời gian lập trình.

Nhờ những ưu điểm trên, cùng với việc chi phí xây dựng và vận hành ứng dụng NodeJS thấp hơn so với các nền tảng khác; NodeJS đang được ưa chuộng và là lựa chọn lý tưởng cho các công ty startup phát triển phần mềm nhanh chóng đưa sản phẩm đến với người dùng.

  Corepack là gì và tác dụng của nó trong Node.js

  Machine Learning với Nodejs kết hợp TensorFlow.js

NodeJS Developer là gì?

NodeJS Developer hay lập trình viên NodeJS là những người sử dụng NodeJS để thiết kế, xây dựng, tạo ra các ứng dụng, phần mềm, sản phẩm, hệ thống,… theo yêu cầu của dự án hay nhu cầu của khách hàng. NodeJS không phải một ngôn ngữ lập trình, cũng không phải framework hay thư viện mà là một nền tảng giúp các framework, thư viện chạy trên đó.

JavaScript là một ngôn ngữ ra đời với mục đích ban đầu là chạy trên trình duyệt; NodeJS giúp nó có thể chạy bên ngoài trình duyệt và từ đó lập trình viên JS có khả năng viết code ở cả phía client và server. Mặc dù vậy thì thế mạnh của NodeJS vẫn là viết ứng dụng chạy trên máy chủ (server), vì thế thông thường NodeJS Developer được xem như là một Backend Developer.

NodeJS Developer là gì?

Cụ thể công việc của một NodeJS Developer sẽ bao gồm:

  • Tham gia quá trình nhận, phân tích yêu cầu và lên giải pháp cho hệ thống phần ứng dụng dành cho máy chủ (server-side). 
  • Lập trình, xây dựng ứng dụng NodeJS, các thành phần back-ends với nhiệm vụ nhận, xử lý và trả kết quả cho phía client-side thông qua giao thức như APIs, sockets,… hay liên kết với các ứng dụng khác (web services), thông thường là các bên thứ 3 như dịch vụ SMS, Notify,…
  • Xử lý lưu trữ dữ liệu hệ thống, các bản ghi log, nhật ký giúp đảm bảo hiệu quả làm việc của hệ thống; đồng thời có biện pháp bảo mật bảo vệ dữ liệu.
  • Đảm bảo các yếu tố liên quan đến hiệu suất, cùng việc thường xuyên cập nhật hệ thống, theo dõi sửa lỗi và cung cấp các giải pháp kiểm soát hoạt động ổn định của ứng dụng.

Tham khảo việc làm NodeJS tại Hồ Chí Minh lương cao, hấp dẫn!

Cần học gì để trở thành một NodeJS Developer?

NodeJS Developer cũng như các vị trí lập trình viên khác thì đều cần có những kiến thức cơ bản về lập trình cùng khả năng sử dụng tốt các công cụ hỗ trợ quản lý source code hay làm việc teamwork khác như Git, Agile, Scrum, Jira,… Vì vậy hãy trang bị cho mình đủ kiến thức để trở thành một lập trình viên trước khi bắt tay vào tìm hiểu NodeJS nhé.

Nắm vững kiến trúc của NodeJS để có thể hiểu và làm việc với platform này một cách tốt nhất.

Cần học gì để trở thành một NodeJS Developer?

Lập trình NodeJS như đã nói ở trên sẽ làm việc phía server-side (backend) nhiều hơn; vì thế bạn cần có những kiến thức chung của lập trình Backend như cách làm việc với Databases, cách viết API, các kết nối giao tiếp với các hệ quản trị cơ sở dữ liệu hay cách để thiết lập giao tiếp với các dịch vụ bên thứ 3.

Với NodeJS chúng ta có khái niệm modules và packages cùng các cách thiết lập để quản lý, sử dụng và tạo ra các packages thông qua npm. Vì vậy hãy tìm hiểu và học cách sử dụng npm, npx, cách xây dựng packages private hay public và các thiết lập bằng scripts.

Lựa chọn một trong số các frameworks nổi tiếng chạy trên nền NodeJS để học và đáp ứng được nhu cầu tuyển dụng của công ty, tổ chức mà bạn làm việc hay muốn apply. Các framework nổi tiếng được sử dụng nhiều trên NodeJS:

  • Meteor
  • Sails.js
  • Socket.io
  • Nest.js
  • Hapi.js

Sau khi trang bị đủ các kiến thức cơ bản về NodeJS, lựa chọn framework sử dụng để học chuyên sâu; hãy tìm cho mình một hướng mà NodeJS phù hợp và đào sâu nó. Với NodeJS, chúng ta có thể tạo ra những ứng dụng đặc thù (có ưu thế so với các nền tảng khác) như sau:

  • Xây dựng Backend cho các nền tảng mạng xã hội: LinkedIn và Medium là 2 tên tuổi lớn đang sử dụng NodeJS làm ứng dụng backend cho hệ sinh thái của mình
  • Phát triển các ứng dụng đơn trang: Chất lượng luồng dữ liệu không đồng bộ giúp NodeJS trở thành lựa chọn tốt cho việc xây dựng ứng dụng đơn trang hay Single Page Application
  • Data Streaming: NodeJS có lợi thế về tốc độ xử lý tệp, khả năng mã hóa và tải lên nhẹ nhàng giúp nó được ưu chuộng trong lĩnh vực streaming data, cụ thể là nền tảng Netflix đang sử dụng nó cho các hoạt động phát trực tuyến.
  • Phát triển ứng dụng IoT: NodeJS được lựa chọn là nền tảng phù hợp nhất trong lĩnh vực IoT nhờ khả năng xử lý các sự kiện đồng thời một cách liền mạch. Ngoài ra thêm vào đó là việc tiết kiệm chi phí cũng là một lựa chọn tốt dành cho các startup công nghệ.

Kết bài

Như vậy qua bài viết này chúng ta đã cùng nhau tìm hiểu về NodeJS và nghề lập trình viên NodeJS. Nếu có ý định trở thành một NodeJS Developer, hãy tham khảo những gợi ý trong bài để có thể chuẩn bị kiến thức tốt nhất giúp bước vào ngành này nhé. Hy vọng bài viết hữu ích dành cho bạn và hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Có thể bạn quan tâm:

Xem thêm việc làm công nghệ hấp dẫn trên TopDev

Continuous Integration là gì? Giải thích chi tiết về CI

Continuous Integration là gì? Giải thích chi tiết về CI

Continuous Integration (CI) từ lâu đã là khái niệm không hề xa lạ với anh em phát triển phần mềm. Tuy nhiên, với một số anh em trước đây chỉ làm việc độc lập, CI có vẻ như là điều gì đó còn khá xa lạ.

Bài viết này cung cấp cho anh em cái nhìn đầy đủ và rõ ràng về CI, ưu điểm khi áp dụng CI vào trong dự án phát triển phần mềm.

continuous integration là gì?
Không có CI,CD là loạn tung phèo hết. Nói cho anh em hiểu là CI, CD quan trọng cỡ nào ha

Cùng bắt đầu tìm hiểu thôi anh em!

1. Cotinuous integration là gì?

Trước hết, cùng tìm hiểu định nghĩa về CI (Cotinuous integration). Đầu tiên,

Continuous integration is a DevOps software development practice where developers regularly merge their code changes into a central repository, after which automated builds and tests are run CI (tích hợp liên tục), là một phương pháp phát triển phần mềm DevOps trong đó các nhà phát triển thường xuyên hợp nhất các thay đổi code của họ vào kho lưu trữ trung tâm, sau đó chạy các bản dựng (demo) và thử nghiệm tự động (testing)

Định nghĩa hơi rối nhưng có thể hiểu thằng Continuous là liên tục, vậy CI là phương pháp phát triển phần mềm. Trong quá trình phát triển phần mềm, không thể tránh khỏi việc anh em developer liên tục đẩy code lên. Nhiều nhánh merge lại với nhau trong repo chính. Để có thể liên tục phát triển, ta cần chạy kiểm tra (testing), deploy và release. Vậy với CI, quá trình phát triển phần mềm này có thể diễn ra liên tục, không bị gián đoạn.

Tích hợp liên tục cũng thường đề cập đến giai đoạn xây dựng hoặc tích hợp của quy trình phát hành phần mềm và bao gồm cả thành phần tự động hóa. Mặc dù bản thân C và I không đề cập tới tự động (automation), nhưng anh em lưu ý bản thân từ tiếp tục (Continuous) đã mang ý nghĩa liên tục (cần có tự động để đảm bảo tính liên tục)

1.1 Tại sao ta lại cần CI?

Với một số anh em làm việc độc lập (theo kiểu cá nhân), trước đây rất có thể anh em sẽ ít gặp các trường hợp về conflict code. Làm cái nào cứ làm trên 1 nhánh, lúc nào xong thì release. Nhưng nếu tham gia vào team phát triển phần mềm, việc không merge code thường xuyên sẽ là thảm hoạ. Conflict tùm lum, không thể release cho khách hàng những tính năng đã phát triển.

Lý do này chính là lý do tại sao ta cần tới Cotinuous integration.

  Triển khai CI/CD với Gitlab
  Những điều bạn cần biết về mô hình CI/CD với CircleCI

1.2 CI hoạt động như thế nào?

Về cơ bản CI có thể trigger trên từng commit của anh em developer. Sau khi trigger được, CI sẽ thực hiện một số bước (ta gọi là stages). Các stages này thực hiện đầy đủ các bước cần thiết cho việc deployment.

CI hoạt động như thế nào
Nguồn ảnh / Source: aws.amazon.com

2. Tự động hoá với automation CI/CD

Thay vì phải thực hiện từng bước từng bước để deploy, với continuous integration, về mặt bản chất, ta cố gắng thực hiện tự động hoá các bước sẽ phải làm. Ví dụ

    • Pull code
    • Install các thư viện cần thiết
    • Build code
    • Shutdown hoặc restart môi trường hiện tại

Với CI, các bước sẽ được thực hiện tự động. Thông thường một CI hoàn chỉnh sẽ bao gồm những thành phần sau:

Tự động hoá với automation CI/CD
Nguồn ảnh / Source: analyticsvidhya.com

    • Microservices development
    • Serverless architecture
    • Continuous testing
    • Deployment containers

Trường hợp xảy ra lỗi, CI/CD cũng sẽ chịu trách nhiệm ghi lỗi, thực hiện một số actions khác nhau nếu gặp phải lỗi trong quá trình triển khai liên tục.

3. Áp dụng continuous integration mang lại lợi ích gì?

CI có lợi ích gì khi áp dụng vào quy trình sản xuất phần mềm? Đầu tiên, với CI, anh em developer có thể đẩy code lên hàng ngày, hàng giờ. Chính vì vậy, trong trường hợp có sự cố, sẽ dễ dàng để phát hiện và fix.

Tránh trường hợp để tới cuối của quy trình phát triển phần mềm mới thấy có lỗi, lúc đó thì toang, sửa không kịp. Ngoài ra, một số CI,CD còn cho phép gắn cờ. Ví dụ nhóm tính năng này sẽ phát triển nhưng chưa chắc sẽ được release, cả team có thể họp với nhau và gắn cờ. Với nhóm tính năng có cờ đó, sẽ không release trong đợt này.

Áp dụng continuous integration mang lại lợi ích gì?
Nguồn ảnh/ Source: cloudbees.com

Vậy với CI

    • Việc build tự động hoàn toàn, anh em không cần take time vào việc build, deploy.
    • Continuous testing (cái này cứ mỗi lần push code là mỗi lần test). Bộ test case có thể viết trước.
    • Security automation (phần kiểm tra bảo mật cho code cũng có thể tiến hành hoàn toàn tự động). Cứ mỗi lần đẩy lên là một lần test, tránh các rủi ro về bảo mật.

4. Các giai đoạn trọng continuous integration

Trước khi bàn về stages (bước) trong continuous integration. Ta cần hiểu stages là gì? Stages là từng bước được tiến hành cho 1 CI, CD pipeline hoàn chỉnh. Hiểu sơ thì nó là một bước.

Ví dụ trước khi build anh em cần pull code mới nhất về, vậy pull code là 1 stages. Build code lại là 1 stages mới khác. 2 stages này là 2 stages hoàn toàn khác nhau, nhưng cần có đủ các stages để một CI có thể hoạt động được.

Các giai đoạn trọng continuous integration
Nguồn ảnh / Source: cyberark.com

Dưới dây là ví dụ các stages cho một CI hoàn chỉnh. Tất nhiên tuỳ vào dự án, đặc thù code hoặc môi trường của từng dự án mà stages của anh em có thể khác nhau.

    • Bước 1: lấy code mới nhất + build
    • Bước 2: chạy code quality check, scan security, …
    • Bước 3: theo như infrastructure
    • Bước 4: build xong thì đem code qua môi trường cần deploy
    • Bước 5: kiểm tra môi trường, quản lý biến môi trường các kiểu
    • Bước 6: build xong thì restart hoặc start lại API, database services các kiểu
    • Bước 7: kiểm tra hết thì kiểm tra status, nếu fail thì rollback toàn bộ
    • Bước 8: ghi log thành công thất bại phục vụ quản lý sau này

Trên đây là ví dụ 8 bước của một CI, CD. Anh em có thể tham khảo, tuy nhiên tuỳ từng dự án số bước có thể khác nhau. Tuy nhiên luôn nhớ concept là cái nào tự động được thì nên tự động.

5. Các continuous integration phổ biến hiện nay

Danh sách các continuous integration phổ biến hiện nay bao gồm:

    • Argo CD
    • Buddy
    • Drone
    • Travis CI

Các continuous integration phổ biến hiện nay

Anh em có thể bấm voà từng CI, CD để tham khảo tài liệu, đọc sơ để so sánh ưu nhược điểm của từng loại CI,CD hiện nay. Biết thêm càng nhiều càng tốt phải không nào?

6. Tổng kết

Tóm lại continuous integration (CI) giúp đỡ rất nhiều trong quá trình phát triển dự án phần mềm. Ngày nay, nó đã trở thành một phần không thể thiếu trong các dự án. Không chỉ các vị trí Devops cần biết về CI, bản thân lập trình viên ngày nay cũng cần phải có kiến thức về CI, CD trong quá trình phát triển phần mềm.

CI, CD là tiêu chuẩn phổ biến trong hầu hết các doanh nghiệp. Giúp giảm bớt thời gian, công sức của team, của đội nhóm. Cung cấp nhanh chóng cho khách hàng các bản release của phần mềm. Hạn chế các rủi ro về bảo mật

7. Tham khảo

Cảm ơn anh em đã đọc bài – Thank you for your attension – Happy coding!

Tác giả: Kiên Nguyễn

Có thể bạn muốn xem thêm:

Đừng bỏ lỡ Việc làm Developer hấp dẫn trên TopDev

Magento Developer là gì? Học gì để trở thành lập trình viên Magento

Magento Developer là gì? Học gì để trở thành Magento Developer?

Với sự phát triển của thương mại điện tử thì nhu cầu tạo ra các website e-commerce ngày càng lớn; và trong số đó thì nhiều công ty, tổ chức lựa chọn nền tảng Magento để xây dựng hệ thống của mình. Vì thế mà Magento Developer cũng đang là vị trí tuyển dụng với nhiều đãi ngộ và là lựa chọn tiềm năng dành cho các bạn lập trình. Bài viết hôm nay chúng ta cùng tìm hiểu Magento Developer là gì và cần học những gì để có thể trở thành một lập trình viên Magento nhé.

Magento là gì?

Trước tiên hãy tìm hiểu về nền tảng PHP này và tại sao nó lại đang hot nhé.

Magento là một nền tảng thương mại điện tử mã nguồn mở được viết bằng PHP; lưu ý nó không phải là một framework như nhiều bạn nhầm lẫn nhé. Magento được dựa trên nền tảng Zend framework, ra mắt lần đầu vào năm 2017; hiện tại phiên bản mới nhất là version 2.4.3 phát hành giữa năm 2021.

Nền tảng Magento có những tính năng phục vụ cho cả đối tượng doanh nghiệp vừa và nhỏ (SMB) lẫn các tổ chức kinh tế (Enterprise) với 2 phiên bản:

  • Community Edition (CE): phiên bản miễn phí giúp bạn tải xuống, chỉnh sửa và triển khai trên server cá nhân.
  • Enterprise Edition (EE): phiên bản trả phí cao cấp với nhiều tính năng nâng cao bổ sung giúp tối ưu hóa hoạt động kinh doanh cho doanh nghiệp.

Magento là gì?

Với khả năng hỗ trợ đa dạng của mình thì Magento được nhiều nền tảng doanh nghiệp lớn sử dụng như Shopify, WIX, Nike, Samsung,… Hiện nay, Magento chiếm khoảng 25% thị phần thị trường dành cho các nền tảng thương mại điện tử (thường đứng top 1); sự phổ biến của nó cũng giúp nghề lập trình Magento trở thành một trong những ngành lập trình hot hiện nay.

  Bật mí 10 câu hỏi phỏng vấn Magento Developer hay và khó

  Virtualbox Headless Frontend là gì?

Magento Developer là gì?

Lập trình viên Magento là những người làm việc trên nền tảng Magento để tạo ra những website thương mại điện tử phù hợp với nhu cầu của dự án và yêu cầu từ khách hàng; thu hút được lượng khách hàng đầu cuối truy cập cũng như phát triển hệ sinh thái sản phẩm phần mềm.

Để hiểu rõ hơn công việc của một Magento Developer, chúng ta hãy cùng đi sâu hơn vào nền tảng này.

Magento là gì?

Magento dựa trên nền tảng Zend framework, sử dụng ngôn ngữ lập trình PHP; nó sử dụng cơ sở dữ liệu MySQL hoặc MariaDB; áp dụng quy ước về lập trình hướng đối tượng và kiến trúc MVC (Model-View-Controller). Phiên bản mới nhất Magento 2 sử dụng thư viện Knockout.js của JavaScript dành cho việc viết source code cho phía frontend. Lập trình Magento sẽ làm việc cùng với kiến trúc trên theo những quy tắc, kiến trúc mà Magento quy định. Công việc chính của một Magento Developer gồm:

  • Tùy biến, phát triển hoặc xây dựng các theme hiển thị tùy chỉnh frontend phù hợp với lĩnh vực kinh doanh, yêu cầu từ khách hàng (thông thường sẽ đòi hỏi bạn cần chuyên sâu hơn về HTML, CSS và JS).
  • Xây dựng, tùy chỉnh, cải tiến phần core của Magento nhằm đáp ứng yêu cầu về nghiệp vụ của doanh nghiệp.
  • Tích hợp các hệ thống khác như ERP, CRM, POS, cổng thanh toán vào hệ thống Magento.
  • Xây dựng, phát triển hoặc tùy chỉnh các extensions riêng cho website.
  • Quản trị nội dung, danh mục, sản phẩm, quản trị viên, người dùng,… trên hệ thống website.
  • Cập nhật phiên bản sử dụng, tối ưu, đảm bảo hoạt động của hệ thống.

Tham khảo việc làm Magento hấp dẫn trên TopDev

Học gì để trở thành Magento Developer?

Magento là một nền tảng trên ngôn ngữ lập trình PHP, vì thế điều kiện tiên quyết là bạn cần nắm vững được kiến thức cơ bản về ngôn ngữ lập trình này. Magento là một nền tảng hoàn chỉnh, từ giao diện người dùng, ứng dụng backend đến việc kết nối databases và kết hợp với các services khác, vì thế trở thành Magento Developer đòi hỏi bạn có khả năng trở thành một full-stack Developer. Tất nhiên bạn cũng có thể lựa chọn tham gia một phần vào dự án như làm công việc của một người tùy chỉnh Theme với đòi hỏi cao về HTML, CSS, JS hay tùy chỉnh phần ứng dụng core với khả năng xử lý PHP.

Học gì để trở thành Magento Developer

Lập trình Magento cũng đòi hỏi bạn hiểu biết sâu về MySQL hay MariaDB cùng những thiết lập riêng tối ưu dành cho nền tảng này. Không giống như nhiều nền tảng thương mại điện tử khác, Magento được đánh giá cao nhờ khả năng tùy biến và có thể can thiệp sâu vào nền tảng; vì vậy nó đòi hỏi lập trình viên phải có kiến thức vững và sâu, không dễ dành cho những người mới bắt đầu. Phiên bản Magento 2 hiện nay có nhiều cập nhật đáng chú ý, với việc phiên bản Community hoàn toàn miễn phí và mã nguồn mở, bạn có thể tham khảo tìm hiểu sâu trong source code của Magento. 

Ngoài những yêu cầu trên, bạn cũng cần nắm được những nghiệp vụ chuyên môn về ngành thương mại điện tử như quản lý sản phẩm, quản lý danh mục, hàng tồn kho, quản lý dịch vụ khách hàng; thanh toán; các công cụ SEO, hay phân tích và báo cáo. Điều này sẽ giúp bạn hiểu về hệ thống, hiểu về nghiệp vụ là logic code xử lý đồng thời phối hợp tốt hơn với các bộ phận khác trong dự án.

Kết bài

Như vậy chúng ta đã cùng nhau tìm hiểu về Magento Developer và một số gợi ý về những gì bạn cần học để có thể trở thành một lập trình viên Magento trong tương lai. Đây là một ngành không dễ, cần có sự tìm tòi sâu về cả kỹ thuật và nghiệp vụ. Hy vọng bài viết giúp ích cho các bạn nếu có ý định trở thành lập trình viên trong ngành thương mại điện tử này. Cảm ơn các bạn đã đọc và hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Có thể bạn quan tâm:

Xem thêm tuyển dụng các vị trí IT hấp dẫn trên TopDev

Những điều cần biết về Ruby on Rail developer

Những điều cần biết về Ruby on Rail developer

Năm 2024 rồi, có nên hay không khi trở thành Ruby on Rail developer là câu hỏi thường gặp của những bạn bước chân vào học lập trình. Vậy Ruby on Rail là gì?

Những yếu tố nào vẫn còn là sức hút lớn khi bắt đầu học Ruby on Rail? Cần làm gì để trở thành một lập trình viên Ruby on Rail giỏi?

Những điều cần biết về Ruby on Rail developer

Tất cả sẽ được giải đáp qua bài viết dưới đây.

1. Ruby on Rail là gì?

Trước khi trở thành Ruby on Rail developer thì anh em cần hiểu Ruby on rail là gì? Luôn tới với phần khái niệm đầu tiên.

Ruby on Rails is an open-source server-side web application framework with an MIT license. While Ruby on Rails is written in Ruby, a dynamic, general-purpose programming language from Japan, RoR is, in fact, a framework, not a language. Many entrepreneurs and non-developers often confuse the two, thinking of Rails when hearing Ruby but rarely the other way around.

Những điều cần biết về Ruby on Rail developer

Ruby on Rails là một framework web phía server. Mã nguồn mở và có giấy phép MIT. Trong khi Ruby on Rails được viết bằng Ruby, một ngôn ngữ lập trình đa năng, năng động phát triển bởi mấy anh Nhật Bổn, thì RoR trên thực tế là một framework chứ không phải một ngôn ngữ. Nhiều doanh nhân và những người không phải là nhà phát triển thường nhầm lẫn cả hai, nghĩ đến Rails khi nghe đến Ruby nhưng hiếm khi nghĩ ngược lại.

Đấy, anh em nhớ giúp cho, Ruby là ngôn ngữ, nhưng Ruby on Rail lại là framework nha.

Ruby ra đời năm 2004 và thằng giải ngôn ngữ lập trình của năm.

Tham khảo tuyển dụng ruby on rails lương cao trên TopDev

2. Ruby on Rail developer và Web application

Kể từ khi được ra mắt vào năm 2005, Ruby on Rail lúc này đã giới thiệu một cách tiếp cận mới để xây dựng các ứng dụng Web (web application). Không chỉ nhanh chóng, thuận tiện (do các gem hỗ trợ). Ruby Rails mang theo mô hình thiết kế phần mềm dựa. Mô hình thì nhiều nhưng Ruby thiết kế mô hình sao cho anh em developer làm việc ở nhiều cấp độ.

Với Django, so sánh luôn với cả Laravel, Rails tiên phong đưa MVC và các phương pháp phát triển phần mềm tốt vào. Một số nguyên tắc thiết kế cũng được ưu tiên đem vào Rail. Chẳng hạn như nguyên tắc DRY.

Những điều cần biết về Ruby on Rail developer
Airbnb là website nổi tiếng có sự góp mặt của Ruby on Rail.

Ruby on rail lúc này như đấng cứu thế, giải phóng anh em developer khỏi mấy thứ config lặt vặt. Để cho anh em developer tập trung duy nhất vào các tính năng kinh doanh và logic của ứng dụng. Mà từ chỗ chỉ tập trung vào 1 phần, rõ ràng là tăng năng suất và giúp anh em developer giao hàng MVP nhanh thiệt nhanh.

Cho anh em nào cho biết thì MVP là phần core của product.

  5 câu hỏi phỏng vấn Ruby on Rails Developer hay, thường gặp

  Mẫu bảng mô tả công việc lập trình Ruby on Rails

3. Tại sao mọi người nghĩ không nên học Ruby on Rail?

Nếu anh em có một vài người bạn học Java, Golang. Thường là sẽ chê Ruby. Nhưng thường họ chê gì ở ngôn ngữ lập trình Ruby?.

Anh em cần tỉnh táo nhìn rõ hồng trần như thế nào để tin tưởng lựa chọn viên ngọc quý (Ruby on Rail)?

3.1 Performance (hiệu năng)

Thật sự thì nếu chấm điểm benchmark, Ruby tỏ ra hụt hơi so với golang hoặc nodejs. Tuy nhiên anh em nên nhớ sự chậm đó chỉ nhận ra khi nói về dữ liệu lớn. Tức là từ lớn tới cực lớn mới nhận ra sự khác biệt này. Ngoài ra còn các yếu tố liên quan tới server và hệ cơ sở dữ liệu.

Vì vậy, nếu nói đến chậm, cần đặt lên bàn cân, xem xét Ruby đang sử dụng cho ứng dụng lớn cỡ nào. Chưa kể các bản release gần đây Ruby cải thiến khá nhiều về tốc độ. Anh em có thể xem thử.

Những điều cần biết về Ruby on Rail developer
Bản thân Ruby có bộ đánh giá Benchmark cho riêng mình

Ruby 2.6.1, released in 2018, included performance improvements and new features. The developers behind Ruby 3 aimed to speed up the language by three times compared to Ruby 2.

Xem thêm việc làm Ruby các vị trí hấp dẫn trên TopDev

3.2 Khả năng mở rộng

Nói về khả năng mở rộng thì không nằm tại ngôn ngữ lập trình. Bản thân ngôn ngữ chỉ là công cụ. Nếu muốn hệ thống có thể mở rộng. Ngoài chip, CPU và kiến trúc lựa chọn từ trước, ta cần có thiết kế hệ thống cụ thể.

Cụ thể khi Twitter chuyển từ Rail qua Scala, anh em thường đồn thổi là do Ruby khó có khả năng mở rộng. Tuy nhiên mức độ và tốc độ được yêu cầu ở Twitter lại khác hẳn so với các ứng dụng khác. Nên khả năng mở rộng, bàn tới hay không thì anh em cần đặt vào bài toán thực tế nó như thế nào.

4. Mức độ phổ biến của Ruby on Rail

Có thể anh em vẫn còn đang lấn cấn về mức độ phổ biến của Ruby on Rail. Cũng dễ hiểu vì xung quanh chúng ta ít có nghe nói về Ruby. Số lượng Ruby developer thì lại các ít.

Đã ít lại còn hiếm có khó tìm, nhưng ít người học không có nghĩa là ngôn ngữ Ruby hiếm như số lượng Ruby on Rail developer.

Những điều cần biết về Ruby on Rail developer Bản thân Ruby có bộ đánh giá Benchmark cho riêng mình
Cụ thể nhìn vào Tiobe, trang web thống kê mức độ phổ biến thì Ruby vẫn lọt vào top 20 ngôn ngữ phổ biến. Về mức độ thì năm rồi còn tăng hẳn 0.18%.

Vậy về mức độ phổ biến mà nói thì không có gì lấn cấn khi anh em bắt đầu bước vào học Ruby ha.

5. Ruby on Rail sử dụng làm gì?

Không chỉ Ruby on Rail developer mà hầu hết các lập trình viên ở ngôn ngữ lập trình khác cũng luôn tò mò đặt câu hỏi. Ngôn ngữ lập trình mà chúng ta đã, đang và sẽ học sẽ được sử dụng vào mục đích gì?. Đối với Ruby on Rail, ta có một vài câu trả lời như sau:

5.1 Xây dựng MVP

Do nhẹ và nhanh chóng, Ruby on Rail thường được sử dụng để xây dựng các phần core. Phần các tính năng chủ chốt, xử lý phức tạp tập trung ở phần lõi. Phần này sẽ được viết, phát triển nhanh chóng bởi Ruby

5.2 Ứng dụng social

Do khả năng hỗ trợ các ứng dụng có lưu lượng truy cập lớn của Ruby nên nó hoàn hảo cho việc anh em xây dựng các ứng dụng mạng xã hội như Twitter, Facebook.

5.3 App căn hộ, đặt phòng

Ruby được tin tưởng lựa chọn bởi AirBnB. Nên Ruby cũng được sử dụng cho các ứng dụng đặt phòng và chia sẻ căn hộ – Điển hình như là 2 ông lớn Airbnb và Couchsurfing – vì nó quản lý nhanh chóng một số lượng lớn giao dịch hàng ngày và đặt chỗ bất động sản.

Những điều cần biết về Ruby on Rail developer

5.4 Ecommerce platforms

Có thể anh em không biết nhưng Ruby là ngôn ngữ lập trình được nhiều nền tảng thương mại điện tử như Shopee hoặc Shopify lựa chọn. Chủ yếu việc sử dụng ruby cho các ứng dụng lớn này thường để quản lý và xử lý nhiều giao dịch cùng một lúc.

6. So sánh với các ngôn ngữ khác

Không thể phủ nhận rằng việc trở thành Ruby on Rail developer phải đánh đổi một vài thứ. Thực tế mà nói mức độ phổ biến khi so sánh với Php và Python, Ruby on Rail tỏ ra kém cạnh hơn về mức độ phổ biến.

Nhưng nói về đóng góp (Contributor), 2 framework phổ biến dùng PHP và Python là LaravelDjango lại có ít người đóng góp hơn Ruby on Rail. Mà càng nhiều người đóng góp thì thư viện hoặc framework sẽ được coi là có chất lượng tốt.

Một số contributor phổ biến đóng góp cho Ruby on Rail

Đối với Laravel và Django ta có con số contributor lần lượt là

  • Django: 2,230
  • Laravel: 3,151

Về cơ hội việc làm, cũng không phải là ít khi xem một vài con số thống kê các ngôn ngữ lập trình

  • Ruby on Rails developer: 39,119
  • Laravel developer: 1,161
  • Django developer: 41,695
  • Ruby developer: 27,985
  • PHP developer: 62,443
  • Python developer: 147,255

Với con số này, anh em đã tự tin để học trở thành Ruby on Rail developer chưa nào?

7. Tham khảo

Cảm ơn anh em đã đọc bài – Thank you for your time – Happy coding!

Tác giả: Kiên Nguyễn

Xem thêm các việc làm IT lương cao hấp dẫn tại TopDev

Học gì để trở thành C# developer? Những kiến thức quan trọng

Học gì để trở thành C# Developer? Những kiến thức quan trọng

C# Developer là gì? Học để trở thành C# Developer có khó không? Những kiến thức gì cần có đối với một C# developer?

Tất cả sẽ được giải thích tường tận trong bài viết này. Tất nhiên không có nhìn ớn ăn loằng ngoằng như cái roadmap dưới đây nên anh em khỏi lo nha!

1. Năm 2024 rồi, vậy học C# còn có lợi ích gì?

C# được sử dụng để xây dựng nền tảng Unity dùng để phát triển các ứng dụng và các ứng dụng game. Tới tận bây giờ thì .NET core.NET vẫn rất là phổ biến, đặc biệt là khu vực âu mỹ. Chính vì vậy học C# đem lại cơ hội việc làm cao nha anh em.

Chưa cần quá mới, quá cao siêu hay ứng dụng trí tuệ nhân tạo gì vào. C# đã đang và sẽ còn cần rất nhiều nhân lực trong thời gian tới.

Học gì để trở thành C# developer

.Net nói gì thì nói vẫn sẽ tồn tại lâu dài trong việc phát triển ứng dụng web và mobile. Dễ học vì anh em có một cộng đồng thân thiện gồm nhiều các ông thạo C#, những người sẽ hướng dẫn anh em thành thạo ngôn ngữ này sau vài tháng.
    • C# là ngôn ngữ hướng đối tượng và hướng thành phần (dễ học, dễ phát triển, dễ bảo trì).
    • C# được sử dụng để phát triển nhiều application như ứng dụng bảng điều khiển (HMI,…), ứng dụng máy tính để bàn và cho mobile, AI, IoT và cloud.

Nghe thôi đã thấy toàn cái mới và tất nhiên C# vẫn cứ là hot thôi. Anh em đừng lo.

  Kiểm thử đơn vị trong C# với Nunit và .Net Core
  Lộ trình học lập trình C cho người mới bắt đầu

2. Kiến thức cơ bản

Để trở thành C# Developer, tất nhiên anh em cần nắm vững kiến thức cơ bản của ngôn ngữ lập trình C#. Một số kiến thức không chỉ là cơ bản ở C# mà còn cả với các ngôn ngữ lập trình khác. Cụ thể là:

    • data types (loại dữ liệu)
    • variables (biến)
    • operators (biểu thức)
    • control structures (các câu lệnh if else,…)
    • arrays (mảng)

Ngoài các kiến thức cơ bản này ở C#, anh em cũng cần hiểu biết về các thành phần khác trong ngôn ngữ lập trình như:

    • classes
    • objects
    • inheritance
    • polymorphism
    • interfaces

Học gì để trở thành C# developer

Các tính chất của OOP (lập trình hướng đối tượng). Sau khi đã nắm vững các kiến thức này, anh em sẽ tìm hiểu tiếp về framework, bởi ngôn ngữ chỉ là ngôn ngữ và nếu không biết về framework sẽ rất khó trở nên thành thạo hơn ngôn ngữ lập trình C#. Cụ thể ở đây anh em cần biết thêm về .NET Framework, .NET Core. Phần database connect anh em tìm hiểu Entity Framework. Nếu làm web sẽ là ASP.NET.

Tham khảo việc làm lập trình C hấp dẫn trên TopDev!

3. Kiến thức nâng cao cho C# developer

Sau khi đã nắm vững các kiến thức cơ bản của C#, để trở thành Senior C# Developer, anh em cần tìm hiểu sâu hơn. Vọc vạch nhiều hơn về

    • multithreading (đa luồng)
    • async programming (bất đồng bộ)
    • LINQ
    • generics
    • delegate
    • events

Bước này cũng sẽ bao gồm các kiến thức để thiết kế ứng dụng có thể scale (mở rộng). Có performance tốt. Không những chỉ code mà còn biết cách tối ưu code. Xử lý các vấn đề khác nếu code hoặc application của anh em có vấn đề.

Kiến thức nâng cao cho C# developer
Nguồn ảnh / Source: microsoft.com
Sau khi đã nắm bững các khái niệm phía trên. Kế tiếp anh em cần đọc và hiểu thêm về:

    • Singleton, Factory, and Observer patterns (các design pattern phổ biến)
    • MVC, MVVM, và Clean Architecture

Các nội dung này là bắt buộc để hiểu hơn về kiến trúc của không chỉ ngôn ngữ lập trình C#. Còn là kiến trúc của các framework mà ta sẽ sử dụng.

4. Các phần kiến thức khác

Để trở thành C# Developer giỏi, ngoài các kiến thức liên quan tới code, kiến trúc,… Kỹ năng test cũng là một kỹ năng quan trọng mà anh em cần có.

Sau khi code sẽ là fix bug, còn đối với test sẽ là một vài khái niệm phổ biến anh em cần tìm hiểu:

    • Unit testing
    • Integration testing
    • Acceptance testing

Ngoài testing, cũng sẽ cần phải tìm hiểu thêm về CI,CD, Jenkins, GitLab CI, và Azure DevOps. Một số anh em nghĩ rằng những kiến thức này không phải là chủ yếu khi học C#, hoặc có thể là không cần thiết. Tuy nhiên hiểu biết về CI, CD luôn là một lợi thế lớn. Còn gì tuyệt hơn vừa viết code vừa có thể tự deploy. Nên là học thêm không hề thừa thãi đâu nha. Cố gắng đọc.

Về kỹ năng mềm, cần tập trung rèn luyện và phát triển các kỹ năng mềm như:

    • Giải quyết vấn đề
    • Giải thích vấn đề cho người khác
    • Thuyết trình bằng tiếng anh
    • Tìm kiếm nguyên nhân lỗi
    • Làm việc với team

5. C# Developer thường làm gì

C# developer thường làm gì, task hằng ngày là gì?. Đó là những câu hỏi thường gặp với những bạn muốn bắt đầu thử sức với C#. Để cho dễ mà nói thì C# developer không đơn thuần chỉ là code task bằng C#. Môi trường công việc thực tế sẽ yêu cầu nhiều công việc được xử lý. Cụ thể ta có

    • Phát triển giải pháp C# .NET cho tổ chức, cho nội bộ và khách hàng.
    • Fix bug và sửa lỗi cho các ứng dụng, dự án C#.
    • Bảo trì nâng cấp dự án.
    • Báo cáo và giải quyết các vấn đề liên quan đến dự án .NET.
    • Xác định và xử lý các rủi ro và vấn đề kỹ thuật.
    • Làm việc trong nhóm dự án cùng với các anh em developer khác.
    • Hỗ trợ kỹ thuật cho các dự án chạy trên nền tảng .Net.
    • Báo cáo về tình trạng và sự phát triển của dự án cho team leader.
    • Tham gia các cuộc họp dự án với team.

C# Developer thường làm gì
Nguồn ảnh / Source: cbs.nl
Đấy, có liệt kê ra mới biết không chỉ đơn giản là làm task của riêng mình. Vị trí developer đúng nghĩa luôn yêu cầu cao về kỹ năng làm việc nhóm và các kỹ năng mềm khác. Vì vậy anh em cố gắng rèn luyện thêm về kĩ năng mềm.

6. Các khoá học

Anh em có thể tham khảo thêm 1 số khoá học C# Developer

Cảm ơn anh em đã đọc bài – Thank you for your time – Happy coding!

Tác giả: Kiên Nguyễn

Xem thêm:

Tham khảo ngay việc làm IT mọi cấp độ trên TopDev!

Xamarin Developer là gì? Tại sao nên sử dụng Xamarin?

Xamarin Developer là gì? Tại sao nên sử dụng Xamarin?

Xamarin developer liệu có còn hot và nhiều việc trong khi đã có những cross platform khác phát triển song song như Flutter hay React Native. Muốn trở thành Xamarin Developer anh em cần những kiến thức gì? Những khoá học nào bổ ích sẽ giúp đỡ anh em nhiều trong quá trình học tập đó?

Xamarin developer là gì?

Tất cả sẽ có trong bài viết này!

1. Xamarin Developer làm gì?

Bắt đầu với định nghĩa, nếu anh em đã nghe qua Xamarin trước đó thì biết là với Xamarin mình có thể build được app cho cả AndroidiOS. Chỉ cần viết với một ngôn ngữ duy nhất là Xamarin.

A Xamarin developer uses Xamarin, an open-source tool, to design, develop, and build cross-platform mobile applications for both Android & iOS apps. The main benefit awarded to these developers is that Xamarin lets them write all their code in a single language. Xamarin developer sử dụng Xamarin, công cụ mã nguồn mở để thiết kế, phát triển và xây dựng các ứng dụng di động cho cả Android và iOS. Ưu điểm của những lập trình viên sử dụng Xamarin là chỉ viết code với một ngôn ngữ duy nhất

Xamarin developer là gì?
Nguồn ảnh / Source: 20+ Xamarin Courses & Certifications [2023] | Learn Online

Tương tự như Flutter hay React native, với Xamarin, anh em Xamarin developer chỉ viết code 1 lần, 1 ngôn ngữ. Ngôn ngữ cụ thể ở đây là C#. Tất nhiên Xamarin có hỗ trợ rất nhiều tool và plugin để phát triển cũng như kiểm thử app phát triển riêng cho Android và iOS.

  Xamarin là gì? Ưu và khuyết điểm của nó
  Biết chọn gì đây? Flutter, React Native hay Xamarin?

2. Kỹ năng cần có của Xamarin developer

Sau khi đã hiểu Xamarin Developer là gì, giờ là lúc kiểm tra lại xem mình đã có đủ kỹ năng để trở thành Xamarin developer hay chưa?

Vậy những kỹ năng nào được xem là kỹ năng cần có của Xamarin developer

    • .NET/C#,
    • Ajax
    • JSON
    • HTML

Nếu chỉ nói riêng về ngôn ngữ, vì Xamarin dựa trên C#, nên kiến thức và kỹ năng làm việc với ngôn ngữ lập trình C# là bắt buộc cần có. Ngoài C#, vì làm việc với mobile app là bao gồm cả phần UI và Backend, nên biết thêm về JS, HTML, CSS thì càng tốt.

Ngoài kỹ năng về ngôn ngữ lập trình. Vì Xamarin nằm trong hệ sinh thái Microsoft, nên sẽ tốt hơn nếu anh em có kinh nghiệm làm việc với Azure DevOps, GIT,…

Hướng đối tượng (Object-Oriented) và  iOS and Android SDKs cũng là kiến thức nên có trước khi học hoặc theo đuổi để trở thành Xamarin developer.

Xem thêm các vị trí tuyển dụng lập trình Xamarin lương cao!!

3. Tại sao nên sử dụng Xamarin?

Để giỏi hơn ở một ngôn ngữ lập trình hoặc ít nhất là có kỹ năng tốt, anh em cần biết ngôn ngữ mình đang sử dụng có gì tốt. Điểm mạnh của ngôn ngữ đó là gì?

Anh em đọc bài viết này muốn trở thành Xamarin developer tất nhiên cần biết Xamarin có những ưu điểm gì.

    • Bao trọn hầu hết các nền tảng mobile (cái này thì hỗ trợ iOS và Android là đã hỗ trợ hết rồi).
    • Gỉam giá thành (thay vì viết code Android với Java hoặc Kotlin và iOS với Swift, thì chỉ với C#, ta đã có 2 mobile app ngon lành rồi.
    • Phát triển nhanh (đúng vì chỉ cần thành thạo C# và quen với Xamarin, tốc độ phát triển sẽ nhanh hơn nhiều so với phát triển 2 app truyền thống).
    • Mã nguồn mở (Xamarin đang được chia sẻ mã nguồn mở và vẫn đang được hỗ trợ bởi Microsoft).

Tại sao nên sử dụng Xamarin?
Nguồn ảnh / Source: appfutura.com

4. Cần chuẩn bị gì cho Xamarin

Nếu anh em đang dùng Mac, lợi thế là cả Android và iOS đều đã sẵn sàng cho anh em code và build thử

    • Operating System — Từ macOS Mojave (10.14) trở lên
    • Development Environment — Anh em nên cài Visual Studio
    • Xamarin.iOS — Nên có và ưu tiên iOS 12 SDK trở lên
    • Xamarin.Android — Nên có và ưu tiên Android 6.0 / API level 23 trở lên
    • Xamarin.Forms — (Cho cả iOS và Android)

Chi tiết hơn anh em có thể tham khảo tại trang của Microsoft

Tại sao nên sử dụng Xamarin?
Nguồn ảnh / Source: learn.microsoft.com

5. App nổi tiếng xây dựng bởi Xamarin

Anh em Xamarin Developer thông thường khi tìm hiểu thường so sánh các cross platform với nhau. Cụ thể là Flutter hay React Native. Đừng lo lắng, Xamarin cũng là một cross platform đáng gờm và được tin tưởng để xây dựng nhiều ứng dụng lớn trên thế giới.

Cụ thể ở đây ta có:

    • Storyo
    • SuperGiant Games
    • The World Bank
    • APX
    • Skulls of the Shogun

Với React Native và Flutter, ta có

    • Walmart
    • SoundCloud
    • Bloomberg
    • FaceBook
    • Instagram

Tại sao nên sử dụng Xamarin?
Nguồn ảnh/ Source: worldbank.org

Mỗi platform đều có ưu và nhược điểm riêng, vì vậy tìm hiểu thật kỹ, đọc thêm thật nhiều để trở thành Xamarin Developer giỏi.

6. Khoá học nào để trở thành Xamarin Developer

Khoá đầu tiên không thể bỏ qua là khoá của Udemy. The Complete Xamarin Developer Course: iOS And Android! Khoá này cung cấp toàn bộ kiến thức nên tảng của Xamarin. Form, layout, XAML, ModelView – View models.

Tất cả đều có trong khoá học này.

Anh em cũng có thể tham khảo thêm khoá: Xamarin Forms: Build Native Cross-platform Apps with C#

Xamarin developer là gì?
Nguồn ảnh / Source: udemy.com

Kế tới là khoá học của Coursera khi anh em đã nắm vững các kiến thức nền tảng.

7. Tham khảo

Cảm ơn anh em đã đọc bài – Thank you for your time – Happy coding!

Tác giả: Kiên Nguyễn

Xem thêm:

Tìm việc làm IT mới nhất trên TopDev!