Trong Phần 1 của bài viết chia sẻ quá trình Xây dựng dịch vụ Viblo Interview, chúng tôi sẽ Giới thiệu tổng quan về dịch vụ, cũng như các bước lên ý tưởng phát triển sản phẩm Viblo Interview.
Giới thiệu về dịch vụ Viblo Interview
Mô tả chung về dịch vụ
Lý do ra đời
Viblo Interview ra đời với mong muốn đáp ứng nhu cầu ngày càng cao của cộng đồng Công nghệ thông tin (CNTT) trong việc chuẩn bị cho cuộc phỏng vấn. Trong 8 năm xây dựng nền tảng, đội ngũ phát triển của Viblo Platform nhận thấy nhiều người dùng có nhu cầu học hỏi, tìm hiểu về các câu hỏi phỏng vấn trong ngành CNTT, cụ thể trong các vị trí như Front-end, Back-end Developer, hay phỏng vấn cho những công ty, tập đoàn cụ thể,…
Trên Internet lại chưa có một nguồn thông tin nào tổng hợp các nội dung này, mà chủ yếu chia sẻ qua những hội, nhóm tại các kênh khác nhau, thông qua các bài đăng.
Ưu điểm của các bài đăng này:
- Nhanh chóng tiếp cận
- Tiện lợi cho người đóng góp
Tuy nhiên, các bài đăng này cũng tồn tại nhiều nhược điểm:
- Dàn trải, không tập trung trên một nền tảng
Ví dụ: Những người tìm hiểu các câu hỏi phỏng vấn về Front-End Developer thường sẽ tìm câu hỏi trong các hội nhóm chuyên trao đổi về Front-End trên Facebook, hay search theo keyword Front-End trên các công cụ tìm kiếm, sau đó phải tự tổng hợp từ các nguồn này thành bộ câu hỏi phỏng vấn của mình.
- Tính di sản chưa cao
Với đặc thù của các mạng xã hội như Facebook, X (trước đây là Twitter), hay các trang web hiển thị trên công cụ tìm kiếm, tần suất và mức độ hiển thị cũng thay đổi theo nhiều yếu tố. Nếu nội dung không tương thích với những thuật toán, hay xu hướng ở thời điểm đăng, cũng như kỳ vọng của Ban quản trị các nền tảng, sẽ rất khó để nội dung được lưu trữ lâu dài, được tiếp cận qua nhiều thế hệ.
- Thời gian
Bài đăng càng cũ, vị trí hiển thị càng thấp, gây khó khăn cho người dùng khi tìm kiếm, truy cập.
- Chi phí
Nhiều bài đăng được tiếp cận tới nhiều người dùng nhờ quảng cáo. Sau khi quản trị viên của bài đăng dừng ngân sách quảng cáo, các bài viết này rất khó tiếp cận những người đọc quan tâm. Hay khi không thực hiện Tối ưu công cụ tìm kiếm (SEO), vị trí hiển thị của các bài đăng này trên các công cụ tìm kiếm cũng rất thấp, dẫn đến giảm độ tiếp cận.
- Hạn chế cập nhật khi có thay đổi
CNTT là một trong những ngành có tốc độ phát triển nhanh nhất hiện nay. Các câu hỏi phỏng vấn vì vậy cũng sẽ cần phải thường xuyên được cập nhật theo xu hướng, theo thị trường công nghệ. Điển hình như sau "cú nổ lớn" từ ChatGPT vào năm 2022, rất nhiều ngành nghề đã yêu cầu kỹ năng biết sử dụng các công cụ AI trong mô tả công việc, cũng như đưa các câu hỏi liên quan đến AI vào vòng phỏng vấn. Đó là lúc các câu hỏi phỏng vấn cần được cập nhật, với những nội dung hướng AI, xoay quanh AI nhiều hơn.
Dịch vụ Viblo Interview không chỉ là một bộ sưu tập câu hỏi phỏng vấn, mà còn là một cộng đồng kết nối, chia sẻ kiến thức và học hỏi những xu hướng mới nhất.
Viblo Interview đã chính thức được ra mắt vào ngày 03/04/2022, đúng dịp kỷ niệm 8 năm hoạt động của Viblo.
Mục tiêu (Cơ hội của dịch vụ)
Viblo Interview là dịch vụ đầu tiên tập trung vào việc tổng hợp các câu hỏi phỏng vấn trong lĩnh vực CNTT. Thay vì phải tìm kiếm qua nhiều nguồn khác nhau, ứng viên và nhà tuyển dụng có thể dễ dàng truy cập vào danh sách câu hỏi phong phú và đa dạng. Dịch vụ cung cấp từ những câu hỏi cơ bản đến những câu hỏi phức tạp, giúp ứng viên tự tin và hiệu quả trong quá trình phỏng vấn.
Hơn hết, Viblo Interview không chỉ là một tài liệu tĩnh, mà còn là một “mạng xã hội thu nhỏ” để cộng đồng CNTT giao lưu, học hỏi và chia sẻ kiến thức phỏng vấn. Các chuyên gia, nhà tuyển dụng và ứng viên có thể trao đổi thông tin, kinh nghiệm và những câu hỏi phỏng vấn quan trọng. Việc kết nối này giúp cộng đồng phát triển và nâng cao chất lượng phỏng vấn, đồng thời giúp ứng viên nắm bắt được những xu hướng mới nhất trong lĩnh vực CNTT.
Viblo Interview không chỉ là một công cụ hữu ích trong quá trình chuẩn bị phỏng vấn, mà còn là một cộng đồng năng động, đóng góp tích cực vào sự phát triển của ngành CNTT tại Việt Nam.
Nội dung chính của dịch vụ (Vấn đề dịch vụ giải quyết)
Tổng hợp các câu hỏi phỏng vấn và câu trả lời gợi ý (từ cả người đóng góp và Chatbot AI - được tự động tạo từ các câu hỏi trên hệ thống) trong lĩnh vực CNTT.
Đối tượng người dùng
- Người đang làm CNTT: Các lập trình viên, kiến trúc sư, quản trị hệ thống và các chuyên gia CNTT có thể sử dụng Viblo Interview để nắm bắt các câu hỏi phỏng vấn phổ biến, cập nhật kiến thức và chuẩn bị cho các buổi phỏng vấn.
- Người chuẩn bị sang ngành CNTT: Sinh viên, người tự học hoặc những người muốn chuyển hướng nghề nghiệp sang lĩnh vực CNTT có thể tìm hiểu và học hỏi từ Viblo Interview để chuẩn bị cho việc xin việc và phỏng vấn.
- Người cần tham khảo câu hỏi phỏng vấn lĩnh vực CNTT: Nhà tuyển dụng, giảng viên, hoặc bất kỳ ai quan tâm đến việc tìm hiểu về câu hỏi phỏng vấn trong lĩnh vực CNTT có thể sử dụng dịch vụ này để tìm kiếm thông tin và đánh giá ứng viên.
Bước 1: Lên ý tưởng
Phân tích nhu cầu người dùng
Nhận biết và phân loại nhu cầu người dùng
Nhận biết và phân loại nhu cầu người dùng giúp đội ngũ phát triển Viblo Interview tìm ra phương án triển khai dịch vụ mà người dùng đang có nhu cầu sử dụng. Như đã giới thiệu ở trên, Viblo Interview đã ra đời và trở thành dịch vụ đầu tiên tập trung vào việc tổng hợp các câu hỏi phỏng vấn trong lĩnh vực CNTT. Để có thể phát triển trở thành dịch vụ đầu tiên, mang lại những giá trị cao cho người sử dụng, đội ngũ phát triển đã thực hiện một số hoạt động tìm hiểu và xác định các nhu cầu của người dùng trong quá trình chuẩn bị xây dựng dịch vụ.
Khi sử dụng dịch vụ Viblo Interview, người dùng dịch vụ sẽ có những yêu cầu:
- Nhu cầu về chất lượng: Các câu hỏi, câu trả lời phỏng vấn trên Viblo Interview có nội dung chất lượng, cung cấp thông tin hữu ích, giải thích rõ ràng, mang lại giá trị cho người đọc.
- Nhu cầu về thao tác trên dịch vụ: Các thao tác trên Viblo Interview đơn giản, dễ thực hiện, đầy đủ các tính năng chính của dịch vụ.
- Nhu cầu kết nối: Dễ dàng theo dõi những người dùng đóng góp câu hỏi, câu trả lời, bình luận và tương tác với người dùng.
Các cách tiếp cận và thu thập ý kiến người dùng
- Qua dữ liệu người dùng từ các sản phẩm trong Viblo Platform: Viblo, Viblo Code, Viblo CTF, Viblo Learning,…
- Qua bảng hỏi khảo sát: Khảo sát các thông tin liên quan đến
- Nhu cầu, thói quen sử dụng
- Chấm điểm các nội dung mong muốn (trên danh sách nội dung đề xuất, chấm điểm 1-10 theo mức độ yêu thích)
- Chấm điểm các tính năng mong muốn (trên danh sách tính năng đề xuất, chấm điểm 1-10 theo mức độ yêu thích)
- Qua phân tích nhóm phát triển: Phân tích năng lực, ý kiến của đội ngũ phát triển để xác định nhóm công nghệ, cấu trúc hệ thống triển khai trong dịch vụ.
- Qua nghiên cứu sản phẩm tương đồng.
Phân tích yêu cầu
Sau khi tiếp nhận các nhu cầu của người dùng qua các phương pháp thu thập ý kiến trên, đội ngũ phát triển của Viblo Interview đã cùng ngồi lại, phân tích kết quả thu được. Thông qua nhiều buổi thảo luận, chúng tôi đã đi tới xác lập Các tính năng chính và Các công nghệ sẽ áp dụng với dịch vụ Viblo Interview.
Các tính năng chính của dịch vụ
Các tính năng chính của dịch vụ Viblo Interview.
- Tìm kiếm các câu hỏi/chủ đề câu hỏi phỏng vấn trong ngành CNTT
Người dùng có thể tìm kiếm các câu hỏi theo nội dung câu hỏi cụ thể hoặc theo tag của một lĩnh vực nào đó trong ngành CNTT. Ngoài ra, các câu hỏi còn được phân theo các level như Fresher/Junior/Middle/Senior để phục vụ cho nhiều mục đích tìm kiếm và tham khảo nội dung khác nhau của người dùng.
- Chia sẻ các câu hỏi/chủ đề câu hỏi mà bạn gặp trong quá trình phỏng vấn
Đây sẽ là nơi để người dùng chia sẻ các chủ đề câu hỏi kèm đáp án để những người dùng khác có thể tham khảo cho những lần phỏng vấn sắp tới. Ngoài ra, người dùng cũng có thể đăng tải những câu hỏi khó trong quá trình phỏng vấn mà bản thân chưa có được câu trả lời và cộng đồng sẽ là người trả lời giúp bạn.
Người dùng cũng có thể tự tổng hợp những chủ đề câu hỏi liên quan để chia sẻ cho cộng đồng, hay đơn giản là để phục vụ mục đích ôn tập cá nhân. Chủ đề câu hỏi là tính năng được đội ngũ phát triển đánh giá là quan trọng, bằng cách nhóm các câu hỏi có cùng nội dung/chủ đề/phân cấp (level)/tag, người tạo hoặc người xem chủ đề câu hỏi sẽ dễ dàng ôn tập và chia sẻ có hệ thống hơn.
- Tham gia trao đổi với cộng đồng Engineer khắp các lĩnh vực, cập nhật những xu hướng mới nhất trong ngành CNTT.
- Ôn tập và học hỏi kiến thức.
Không chỉ hướng đến những người dùng đang chuẩn bị cho các đợt phỏng vấn, Viblo Interview còn là nơi giúp bạn tự ôn luyện lại kiến thức của bản thân, cũng như học hỏi thêm kiến thức mới, thông qua những câu hỏi và câu trả lời được chia sẻ.
Các công nghệ được sử dụng
Công nghệ phát triển:
Là một dự án được phát triển mới hoàn toàn, vì thế team đã quyết định thử thách bản thân bằng việc áp dụng các công nghệ mới trong lĩnh vực phát triển web. Chúng tôi đã chọn một stack công nghệ hiện đại, bao gồm Vue 3, Nuxt 3, TypeScript và Storybook, nhằm tối ưu hóa hiệu suất, cải thiện trải nghiệm phát triển và tạo ra một sản phẩm chất lượng cao.
Vue 3, phiên bản mới nhất của framework JavaScript phổ biến Vue.js, là nền tảng chính cho dự án. Với Composition API mạnh mẽ và hiệu suất được cải thiện đáng kể, Vue 3 cho phép team xây dựng giao diện phức tạp một cách hiệu quả và dễ dàng bảo trì. Hơn nữa, khả năng tái sử dụng code và tổ chức logic ứng dụng linh hoạt của Vue 3 giúp chúng tôi phát triển nhanh chóng và đáp ứng tốt với các yêu cầu thay đổi của dự án.
Để nâng cao hơn nữa khả năng của Vue 3, chúng tôi đã tích hợp Nuxt 3 - một framework meta mạnh mẽ. Nuxt 3 cung cấp cho chúng tôi khả năng server-side rendering (SSR) và static site generation (SSG), giúp cải thiện đáng kể thời gian tải trang và tối ưu hóa SEO. Các tính năng như auto-import và file-based routing của Nuxt 3 đã đơn giản hóa quy trình phát triển, cho phép chúng tôi tập trung vào việc xây dựng tính năng thay vì lo lắng về cấu hình.
TypeScript đóng vai trò quan trọng trong việc đảm bảo tính ổn định và dễ bảo trì của code. Bằng cách thêm kiểu dữ liệu tĩnh vào JavaScript, TypeScript giúp chúng tôi phát hiện lỗi sớm trong quá trình phát triển, cải thiện khả năng đọc hiểu code và tăng cường trải nghiệm phát triển với IntelliSense nâng cao. Điều này đặc biệt hữu ích khi làm việc trong một team có số lượng thành viên lớn và với một codebase phức tạp.
Cuối cùng, team đã tích hợp Storybook vào quy trình phát triển để nâng cao hiệu quả trong việc xây dựng và quản lý UI components. Storybook cung cấp một môi trường cô lập để phát triển, kiểm tra và tài liệu hóa các component UI, giúp phát hiện và sửa lỗi dễ dàng hơn trước khi tích hợp vào dự án chính. Việc sử dụng Storybook giúp chúng tôi tạo ra tài liệu trực quan cho các component, Designers có thể dễ dàng theo dõi và đảm bảo rằng vision của họ được thực hiện chính xác, trong khi Developers có thể nhận được phản hồi nhanh chóng và cụ thể. Testers có thể phát hiện và báo cáo các vấn đề UI một cách nhanh chóng, giúp rút ngắn thời gian phát triển và nâng cao chất lượng tổng thể của sản phẩm.
Trong khi frontend của dự án tận dụng các công nghệ mới nhất để đạt được sự linh hoạt và hiệu suất cao, backend của chúng tôi ưu tiên sự ổn định cũng như tận dụng kinh nghiệm của đội ngũ phát triển để đảm bảo tối ưu hiệu năng cho trang web. Sau khi cân nhắc kỹ lưỡng, chúng tôi đã quyết định sử dụng PHP và Laravel 9 - phiên bản mới nhất của framework Laravel tại thời điểm bắt đầu dự án.
Công nghệ bổ trợ: Tích hợp AI để nâng cao trải nghiệm người dùng
Nhận thức được tiềm năng của công nghệ AI trong việc cải thiện trải nghiệm người dùng, chúng tôi đã chủ động tích hợp các giải pháp AI tiên tiến vào hệ thống của mình:
Tích hợp ChatGPT: Việc đưa ChatGPT vào dịch vụ Viblo Interview giúp:
- Tạo ra các câu trả lời tự động cho câu hỏi của người dùng trên hệ thống.
- Cung cấp cho người dùng các đáp án tham khảo bổ sung, giúp mở rộng góc nhìn và kiến thức.
- Tăng tính tương tác và hấp dẫn của platform, khuyến khích người dùng tham gia tích cực hơn. Tuy nhiên sau một thời gian sử dụng ChatGPT, chúng tôi đã quyết định chuyển sang GitHub Copilot.
Chuyển đổi sang GitHub Copilot: Theo thời gian, chúng tôi đã cập nhật và chuyển đổi sang sử dụng GitHub Copilot để tạo ra các câu trả lời. Quyết định này dựa trên nguyên nhân chính sau:
- Tối ưu hóa chi phí: ChatGPT bắt đầu áp dụng mô hình tính phí, trong khi các Developers của dự án Viblo Interview đã được cung cấp tài khoản GitHub Copilot. Việc chuyển đổi này cho phép chúng tôi tận dụng tài nguyên sẵn có mà không phát sinh thêm chi phí.
- Tích hợp liền mạch: GitHub Copilot có thể tích hợp trực tiếp vào môi trường phát triển của các Developers, tăng hiệu quả làm việc.
Thiết kế hệ thống: Tự động hóa và Containerization
Hệ thống của chúng tôi ban đầu sử dụng Sun* CI, một sản phẩm tự phát triển của team DevOps thuộc bộ phận Product/R&D của công ty Sun Asterisk Việt Nam, để thực hiện CI/CD (Continuous Integration/Continuous Deployment). Sau đó, chúng tôi đã chuyển sang sử dụng GitHub Actions để tự động hóa quá trình kiểm thử và triển khai. Điều này giúp đảm bảo mã nguồn luôn được kiểm tra và triển khai một cách nhất quán và nhanh chóng.
Chúng tôi triển khai sản phẩm trên nền tảng Kubernetes (K8S) và sử dụng Flux CD để quản lý và tự động hóa các triển khai ứng dụng. Sự kết hợp giữa Kubernetes và Flux CD giúp chúng tôi có thể quản lý và mở rộng hệ thống một cách dễ dàng, đảm bảo độ tin cậy và khả năng chịu tải cao.
Việc áp dụng các công nghệ này không chỉ tăng cường hiệu quả trong quá trình phát triển và triển khai, mà còn đặt nền tảng vững chắc cho khả năng mở rộng và bảo trì hệ thống trong tương lai.
© Tác giả: Software Engineer Huy Hoang, Community Development Specialist Anh Nguyen