Chuyện là, tớ vừa thi Hackathon…

Đầu tháng trước, công ty tớ mới tổ chức một cuộc thi Hackathon. Tớ cùng mấy anh chị em khác đã đăng ký tham gia với quyết tầm giành cái giải nhất để có tiền xách balo đi du lịch. Và sau 2 tuần lên plan, tìm hiểu công nghệ, 20 tiếng code xuyên màn đêm cùng 2 ngày cuối tuần “chìm sâu” trong phòng để hồi mana, tớ muốn lên đây kể lại vài thứ thú vị cóp nhặt được sau cuộc thi lần này.

Wait… nhưng Hackathon là cái khỉ gì vậy?

Ừ thì từ cái tên chắc cậu cũng đoán ra được rồi. Hackathon được ghép từ Hack và Marathon, trong đó “Hack” là tìm giải pháp thông qua việc lập trình (hoặc copy-paste từ một nguồn nào đó). “Marathon” là cuộc thi chạy với độ bền và sự tập trung cao. Nên tóm lại, Hackathon là cuộc thi nhắm đến việc giải quyết một vấn đề thông qua lập trình trong thời gian ngắn và liên tục.

Mỗi đội sẽ có tầm 5 người, thực hiện tất cả mọi việc từ lập trình, làm slide và trình bày cho ban giám khảo, trong khoảng từ một đến hai ngày. Và vì thời gian rất gấp nên cả đội sẽ phải chiến đấu xuyên màn đêm để ra một sản phẩm, có thể “chắp vá”, nhưng thể hiện rõ được giải pháp cho vấn đề mà nhóm đã đề cập.

Thế thì có gì thú vị nhỉ?

Đối với tớ, quan trọng nhất là giải thưởng tớ được thoải mái code những gì tớ thích, thử nghiệm các công nghệ mới. Tớ thể hiện được cái tôi của mình trong sản phẩm và làm ra một thứ thuộc về bản thân mình.

Thứ hai, có lẽ là do lượng dopamin tiết ra tràn trề khi các milestones được hoàn thành trong khoảng thời gian ngắn. Nhìn sản phẩm của mình tiến hóa thần tốc trong 24h là một cảm giác rất yomost các cậu ạ.

Thứ ba, có lẽ là đặc sản “code xuyên mà đêm” của hackathon. Chúng tớ không chỉ code và thảo luận cùng nhau, mà còn có những giây phút ăn uống, đàn hát, thậm chí chán quá thì chạy sang team khác chơi, tiện thể thăm do tình hình đội bạn.

Và lý do cuối cùng thì sure là vì giải thưởng rồi^^ Được chơi, được thể hiện bản thân, còn có thể có thưởng mang về thì tội gì không quẩy, nhỉ.

Code xuyên màn đêm ^^

Hành trình của tớ như thế nào và tớ đã học được gì?

“Tớ đã học được gì?” thực ra chẳng có gì to tát cả.

Tớ nghĩ tất cả những gì tớ bánh vẽ dưới đây, ai cũng đều đã nghe hoặc đọc qua rồi. Chính tớ bây giờ cũng thấy nó hiển nhiên. Nhưng trong cuộc thi, thực sự tớ đã làm theo “bản năng” và đi sai hướng rất nhiều. Nên tớ viết những bài học này không phải để “dạy” mọi người nên làm thế nào, mà để làm sâu sắc thêm trải nghiệm của bản thân sau khi đã tự mình trải qua nó.

Thay vì nghĩ ý tưởng, hãy tìm kiếm vấn đề

Một ý tưởng hay luôn là điểm khởi đầu tuyệt vời, nó có thể giúp cậu lôi kéo thêm đồng đội, “truyền cảm hứng” để mọi người chiến đấu nhiệt hơn. Nhưng ban đầu tớ đã tiếp cận sai cách…

Tớ muốn ý tưởng của mình phải thật đặc biệt, do đó tớ tìm cách sử dụng các công nghệ công ty đang có để tạo nên một sản phẩm mới. Thế nhưng những ý tưởng tớ nghĩ ra, hoặc là đã có sản phẩm tương tự, hoặc là “chả ai cần một ứng dụng như vậy cả”.

Và tớ nhận ra là, những ý tưởng luôn phải xuất phát và giải quyết cho các vấn đề thực tế. Nên thay vì ngồi nghĩ ý tưởng, tớ chuyển sang tìm kiếm các vấn đề hiện tại, đắp thêm công nghệ mới vào và đưa ra một giải pháp thật “wow”.

Ý tưởng khởi đầu của nhóm là về một app thu thập dữ liệu public, xử lý và lưu trữ để làm giàu thêm cơ sở dữ liệu khách hàng. Nó xuất phát từ những hạn chế khi khách hàng buộc phải nhập liệu và update database thủ công, trong khi dữ liệu đó đã được đưa lên website từ trước.

Rồi lần lượt các ý tưởng khác được vẽ ra, từ những cái mang tính ứng dụng cao (nhưng khó) như xây dựng chatbot để hỏi đáp trên file văn bản, đến cái chỉ phục vụ mục đích chơi bời như tạo app để connect, tăng tương tác mọi người thông qua các open activities.

Sau đó là liên tục các cuộc “meeting” để thống nhất ý tưởng, xác định pros and cons, vẽ sơ đồ luồng hoạt động, define database. Sau khoảng 4 ngày, những ý tưởng mơ hồ cũng dần thành hình. Bọn mình sẽ làm một app quản lý dự án, tích hợp OpenAI để có thể chat trực tiếp như một assistance, rồi auto reporting, warning, …

Đây là cuộc chạy đua với thời gian, hãy chọn công nghệ đã tích hợp nhiều chức năng nhất có thể!

Xong phần ý tưởng, tiếp đến sẽ là công nghệ…

Trước nay tớ thường “không có thiện cảm” với những tool kiểu kéo thả, cảm giác như nó làm người dùng lười biếng và không hoàn toàn làm chủ được sản phẩm của chính mình. Vốn ban đầu tớ định tìm một template có sẵn, chỉnh sửa source code và thêm các service mới vào. Tuy nhiên mọi thứ vẫn là khá nhiều (so với trình độ hiện tại của nhóm mình) để hoàn thiện tất cả các features đã đề ra trong một thời gian ngắn.

Cuối cùng, chúng tớ quyết định sử dụng các công nghệ mới, đã tích hợp sẵn nhiều chức năng nhất có thể, nhằm cắt giảm thời gian code và tập trung hơn vào các feature quan trọng. Và dưới đây là cách mà chúng tớ tạo một app ăn liền, gần như no-code nhưng vẫn đảm bảo các chức năng chính, sẵn sàng cho việc demo.

Để làm frontend, chúng tớ quyết định sử dụng Appsmith, là một webapp cho phép xây dựng frontend bằng cách kéo thả component và có thể kết nối trực tiếp với database để nhập liệu và tạo report. Điều này giúp nhóm đỡ mất công tìm kiếm và tùy chỉnh một template nào đó, bởi vốn nhóm mình cũng không ai mạnh về frontend cả.

Về phần backend, nhóm sử dụng Supabase, một Backend as a platform service (BaaS). Nó cho phép người dùng tạo database (postgres), edge functions, cung cấp authentication (social providers, phone login,…), storage large file, storage embedding vector…

Đối với con assistance chatbot, mình dùng OpenAI để detect intent, entities, đồng thời sử dụng nó để tạo câu trả lời theo ngôn ngữ tự nhiên (natural language generation) từ kết quả truy vấn trong cơ sở dữ liệu. Để hiển thị đoạn chat, nhóm sử dụng Streamlit để stream kết quả mà OpenAI tạo ra, tránh cảm giác nhàm chán khi phải đợi hơn 10s mới có được câu trả lời hoàn chỉnh.

Về phần gửi warning khi có issue hay report mỗi cuối tuần qua email, nhóm sử dụng Zapier, một automation workflow hỗ trợ connect với rất nhiều apps như gmail, facebook, slack, … Và tất nhiên cũng hoàn toàn là kéo thả.

Rõ ràng, để làm chủ được các công nghệ này cần một thời gian dài đọc docs, thử và sai. Nhưng với mục đích triển khai nhanh một prototype và mang đi thi, chúng tớ lựa chọn áp dụng các công nghệ mới, có khả năng tự động hóa càng nhiều càng tốt.

Và hạnh phúc là một hành trình…

Tại sao à, tại vì nhóm tớ tạch. Tạch ngay từ vòng loại :)))

Nhưng đến thời điểm này, tớ nghĩ nó chẳng còn quan trọng nữa. Bởi vì, tớ đã giữ lại cho mình thật nhiều những kỷ niệm đáng nhớ về cái đêm “định mệnh” mà cả nhóm gần như không ngủ.

Hành trình của tớ, là những buổi chiều sau giờ làm ngồi lên ý tưởng, vẽ flow, design database. Là cái ngày cuối tuần, tớ đang uống dở cốc nước dừa ở Quy Nhơn cũng phải chạy đi bật teams lên họp. Là câu nói “thức khuya, ăn đồ cay nóng, chuẩn combo hủy diệt bản thân” của thằng em trong nhóm khi tớ ăn nốt cốc mì thứ hai lúc 4h sáng. Là lúc mà mấy đứa dở hơi, nửa đêm trên công ty ngồi đánh đàn, hát Nắng ấm xa dần với Cơn mưa ngang qua của Sơn Tùng MTP.

Và, là cái đêm 3h sáng anh em vẫn cố làm, dù cho não đã đình công và đôi mắt thì muốn dừng hoạt động.

Carbon team – Team của tớ nhưng thiếu một người : ))

Ờ thì, đúng là hành trình này không trọn vẹn. Đích đến của nó chẳng phải nơi mà chúng tớ mong muốn, cũng như kết quả của nó chẳng phải niềm vui mà là những tiếc nuối cùng 2 ngày cuối tuần “ngất” ở trên giường.

Nhưng mà, yeah, không có con đường nào dẫn tới hạnh phúc vì hạnh phúc chính là cả hành trình, và hy vọng những chiến hữu trong Carbon team sẽ “cháy” hết mình trong những dự định sắp tới, còn nếu áp lực quá, mong một ngày được thấy mọi người tỏa sáng rực rỡ như kim cương^^

“There is no way to happiness, happiness is the way”

Thiền sư Thích Nhất Hạnh

Leave a Reply