KMS Hackathon – Một trải nghiệm

Bài viết này chia sẻ lại một phần trải nghiệm của mình sau kì Hackathon do KMS Technology đứng ra tổ chức với chủ đề lớn là Social Impact và nội dụng chính là giải quyết vấn đề thất nghiệp. Nội dung bên dưới là về quá trình tham gia giải đến khi kết thúc trải nghiệm đó.

Ngắn gọn thì đây là một trong những kì Hackathon tổ chức thành công nhất ở Việt Nam mà mình từng tham gia cũng như để lại nhiều trải nghiệm quý báu cho bản thân mình cũng như đồng đội lẫn các đội tham gia khác.

Team Up

Sau khi vừa nhận thông tin từ trên trang KMS Technology Vietnam về cuộc thi, mình nhanh chóng liên hệ một vài người bạn cấp 3 và một người anh làm cùng công ty. Loay hoay vẫn còn thiếu một thành viên, tụi mình ghi luôn tên của một bạn Intern làm Front-end trong công ty (tới trước ngày thi một ngày bạn đó mới biết là mình bị kéo vào tham gia giải =)) )

Công đoạn hình thành team Infection nhanh chóng kết thúc với line-up:

  • Lê Tử Khiêm (Team Lead): Một người bạn cấp 3 của mình. Bạn này khá cứng về Technical và thực hiện nhiều dự án áp dụng Machine Learning. Cũng có nhiều kinh nghiệm và tham gia với mình trong nhiều kì thi Hackathon trước đây. Đồng thời bạn này cũng từng tham gia kha khá và đạt nhiều giải về lập trình, giải thuật.
  • Ninh Văn Tú: Mình quen bạn này khi tham gia kì 9cv9 Hackathon. Cũng là một bạn nổi bật về Technical và có kinh nghiệm làm Machine Learning, Computer Vision. Về giải thuật thì Tú cũng không thua kém Khiêm là mấy, và nếu cần thiết có thể viết Android application nếu muốn.
  • Đào Tuấn An: Thành viên hay bị troll nhất team. Bạn đã hi sinh ngày kỉ niệm 2 tháng quen nhau với người yêu để tham gia kì thi này cùng với team, hi vọng hai bạn sẽ làm lành và sống hạnh phúc với nhau sau hôm nay ❤ . Trong team mình, bạn này đóng vai trò quan trọng khi phụ trách làm khá nhiều thứ như làm tạ, làm màu và làm phiền ah ngoài ra thì còn 1 cái cũng có ích là làm người bị troll cho team giải trí.
  • Lương Nhật Minh: Bạn Intern mà mình kể ở trên(mà thật ra giờ nó sắp từ bỏ vị trí senior intern architect front-end để promote lên làm junior software engineer rồi). Được mệnh danh là Thanos Front-end với khả năng búng ngón tay – ra luôn hẳn front-end cho cái product. Việc đưa bạn vào team cùng với khả năng hacking ReactJS code nhanh cũng là lợi thế cho team trong một kì thi Hackathon 30 tiếng. Ngoài ra thì mắt thẩm mỹ của bạn này cũng rất tốt, một đặc tính cần thiết nếu muốn tập trung vào UX của sản phẩm.
  • Hoàng *BEEP* *BEEP*: Chủ chính của trang blog này cũng như người anh Tester đã tham gia cùng mình. Về Technical khá cứng và cũng đã quen với những Technology stack mà tụi mình thân thuộc như React, Django, Flask. Anh tham gia không chỉ để làm trụ cột cho team mà còn chủ yếu để mua vui và sống lại những ngày tháng trẻ trung, năng động của cô thiếu nữ mới lớn.
  • Mai Bá Lộc: Là mình ^^ Mình chỉ biết chút ít về Python và có kha khá kinh nghiệm khi trải qua các kì thi Hackathon khác nhau, do đó hi vọng sẽ đóng góp được gì cho team.
37226438_1055597701270491_6957767944877113344_o.jpg

Dàn trai đẹp Infection

Vòng gửi xe

OK. Vòng phân loại chính là một bài test về Coding và Logical programming. Lúc nhận đề cũng là lúc mình, anh Minh và Minh Lương chuẩn bị đi du lịch Đà Lạt cùng công ty. An thì lo làm đồ án. Giao lại cho Khiêm và Tú cũng là hai thành viên cứng nhất về mặt giải thuật.

Ban đầu mình nghĩ có thể đề sẽ tương đối đơn giản. Trên thực tế, việc đọc đề và giải của Khiêm và Tú gặp vấn đề do việc hai bạn đã quen với các cuộc thi sử dụng máy tính để chấm bài và cần có một đề bài với nội dung và kết quả đầu ra chính xác. Còn với đề của BTC, những gì BTC muốn nhắm đến là về cách phân tích và cách viết code dễ đọc, dễ hiểu nhất.

Bài nhóm được nộp sớm và cả nhóm ngồi chờ ngóc mỏ hóng kết quả. Đến ngày 12/07 tụi mình cũng nhận được mail mời tham dự Hackathon từ BTC.

event pass e-card 720x1280px - Infection (1)-1.jpg

Passcode được thiết kế đẹp mắt

Trước ngày diễn ra sự kiện, tụi mình họp bàn trước về những gì có thể xảy ra, những gì nên làm và những công nghệ, công việc sẽ được chia.

Nhận xét của mình về vòng loại đợt này:

Mình khá thích:

  • Việc đọc kĩ code và phân tích khả năng thay vì sử dụng cách thông thường đưa máy chấm sẽ có những đội bị loại đáng tiếc vì không có khả năng giải đề competitive programming.

Có thể cải thiện:

  • Đề thi có thể gợi ý rõ hơn về cách thức chấm bài cũng như không nên đưa quá nhiều ví dụ không cần thiết tránh làm loãng nội dung.
  • Gửi thông báo sớm hơn đến các đội được mời.

Mở đầu cuộc thi

Hacking day được tổ chức ở văn phòng Tản Viên của công ty KMS Technology. Có thể nói văn phòng khá rộng rãi và thoáng mát. Trang trí, thiết kế nội thất đẹp.

Với các thành viên đến sớm, có một buổi tiệc đứng nhẹ với bánh mặn, cà phê, nước cam và trái cây.

37329500_1055597437937184_2274623634968412160_o.jpg

Bánh trái ngập mặt

37319926_1055597531270508_142984890122502144_o.jpg

Đi lòng vòng thì mình gặp khá nhiều gương mặt quen thuộc từ các kì thi khác như Zalo Hackathon, Facebook Vietnam Hackathon, 9cv9 Hackathon,etc.

Team mình nhanh chóng tập trung xuống khu vực thi đấu và chuẩn bị cho buổi lễ bắt đầu kì thi.

Trước khi nghe công bố chủ đề, cùng xem sơ qua bộ Hack Kit mà BTC tặng nào:

  • Một áo thun Hackathon khá ngầu
  • Một bình nước
  • Một gối cổ

Tạm vậy trước.

37234946_1747090638721152_4876822110615371776_o.jpg

Bộ hack kit KMS tặng nè!

Qua nhiều kì thi mà mình đã tham gia thì với KMS Hackathon, việc công bố chủ đề chính khá thú vị và đạt hiệu quả cao nhất. Trước khi cuộc thi bắt đầu, chỉ có chủ đề bao quát nhất được công bố chính là Social Impact. Khi nói về Social thì có rất nhiều vấn đề và khía cạnh cần xem xét cũng như có thể cải thiện, do đó đây là một chủ đề mà không team nào có thể thực hiện trước hay chuẩn bị sẵn một giải pháp cụ thể nào. Vào Hacking day, 1 trong 3 chủ đề với scope hẹp hơn mới được bốc thăm và công bố.

Nhận xét của mình về phần công bố chủ đề:

Mình rất thích:

  • Cách BTC sắp xếp công bố chủ đề rộng và chủ đề chính sau khi thu hẹp giúp giảm số lượng các team chuẩn bị trước làm mất phần hay và thú vị của một kì thi Hackathon
  • Nội dung và vấn đề đưa ra thực tiễn, cần được giải quyết và vô cùng thú vị.
  • Đây là một trong những điều mình thích nhất ở kì thi Hackathon này

37264475_1055597827937145_1775498806826106880_o.jpg

Let the hacking … begin

Vào cuộc thôi! Chủ đề có vẻ rộng và có nhiều góc nhìn. Thứ nhất: vấn đề thất nghiệp không phải chỉ do một hay hai yếu tố gây nên mà là do vô vàn lý do khác nhau như định hướng sai ngành nghề, số lượng cung không đủ cầu (sức lao động) cho một công việc, khả năng của người lao động chưa đạt chuẩn, … Thứ hai: Sẽ có rất nhiều hướng để giải quyết như tạo ra việc làm, giảm thiểu tình trạng thất nghiệp bằng cách nâng cao trí thức, mở những lớp học, đào tạo kĩ năng cho nguồn lao động. Dù vậy, đặc điểm thứ nhất của đề thi sẽ dẫn đến một vấn đề lớn hơn cho các đội thi: Không có một nguyên căn cụ thể dẫn tới hiện trạng và cho dù có nhiều góc nhìn, nhiều khía cạnh có thể xử lý thì các đội chơi cũng khó lòng đưa ra một biện pháp hữu hiệu (mang tính ý tưởng) nhất và lại có thể thực tế hóa (mang tính hiện thực) trong 30 giờ đồng hồ.

Team mình dành khoảng hơn ba giờ đồng hồ để thảo luận với nhau về những Root causes, hướng đối tượng khách hàng mà team muốn nhắm đến và cả phương thức thực hiện đồng thời tham khảo ý kiến thành phần Mentors được công ty KMS tổ chức, họ giúp các đội thi làm rõ hơn vấn đề, cắt gọt lại những ý tưởng thừa thải và không khả thi trước khi bắt tay vào thực hiện.

Tầm 12 giờ trưa – 1 giờ chiều  (khoảng 3-4 tiếng sau khi bắt đầu), team mình cũng bắt đầu chốt ý tưởng (baseline) cho sản phẩm và chia công việc:

Sơ bộ về ý tưởng:

  • Nhóm tập trung vào thành phần lao động phổ thông vì theo số liệu thống kê từ Google, đây là thành phần có tỉ lệ thấp nghiệp cao nhất tại Việt Nam.
  • Sản phẩm mà nhóm đưa ra cần cái một UI đơn giản nhất có thể. Để cho những người không biết gì nhiều về công nghệ thông tin hay ứng dụng số cũng có thể sử dụng được. Tập trung kĩ vào phần trải nghiệm người dùng.
  • Để đơn giản hóa tối đa các quy trình cần thiết, tụi mình sẽ áp dụng một phần dữ liệu có sẵn trên mạng và áp dụng một số thuật toán Machine Learning để đưa ra những nhận xét / tư vấn về công việc cho nhóm người lao động phổ thông.

Công việc được chia ra:

  • Minh Lương và anh Ngọc *BEEP* sẽ đảm nhận việc phát triển UI/UX.
  • Khiêm, Tú và An sẽ xây dựng và train các models phục vụ cho việc tư vấn. Đây sẽ là phần khó khăn nhất vì cần xác định rõ sẽ sử dụng những thuật toán nào, train bao nhiêu data là đủ và kết quả cuối cùng (với tập dữ liệu nhỏ) có ra được chính xác như mong muốn hay không. Đồng thời, giới hạn về thời gian cũng là một thứ thách lớn với các nhóm muốn tự train các Machine Learning models như nhóm mình.
  • Mình có vai trò nhẹ gánh nhất đó là viết Rest API server trung gian cho việc communicate giữ tầng Logic phía ML models và phía Front-End của nhóm.
37179063_10216849435367626_5093386520732106752_n.jpg

Bắt đầu code hoy!!

Technology stack mà nhóm sử dụng:

  • Phía Front-end thì team mình sử dụng ReactJS – Minh Lương và anh Ngọc *BEEP* đều đã quen với bộ thư viện này.
  • Phía Machine Learning models thì đa số tụi mình sử dụng một số thư viện cho Python như Scikit Learn cho việc train model Parsing CV, fastText cho NLP và một số thư viện hỗ trợ khác.
  • Do phía Machine Learning viết code và evaluate models đều dùng Python nên mình quyết định chọn một framework của ngôn ngữ Python để tiện cho việc integrate. Ban đầu mình có nghĩ tới Django Rest Framework, sau đó thì thấy framework này khá cồng kềnh và không cần thiết, mình chuyển qua sử dụng Flask Restful cho việc develop Communicate server nhanh hơn.

Ý tưởng, những tính toán trên bảng còn sót lại:

37329547_1747090608721155_1734382590980259840_n.jpg

Note: Xuyên suốt cả ngày thi, bánh Poca và nước được cung cấp khá đầy đủ, mình với Minh Lương cũng khá là hăng hái trong việc đi lụm đồ ăn về cho team bào =)).

Gần đến trước tối thì team mình đã hoàn thành một số thứ sau:

  • Crawl một số data về công việc, job description ở trên trang Vietnamworks
  • Crawl một số data về Vocab liên quan tới các ngành nghề
  • Xử lý một số phần liên quan tới NLP cho sản phẩm, tới lúc này thì nhóm định hình là sẽ làm một ứng dụng dạng gần như một con Chat Bot.
  • Mình cũng làm xong sườn cho Communicate server và mock sẵn một số api cho Minh Luong sử dụng thử
  • Team front-end cũng đã lên được master layout cho sản phẩm.

Nhận xét của mình về phần cách tổ chức Hacking day:

  • Việc cho các Mentors rảo xung quanh và đóng góp ý kiến là một cách hay để giúp đỡ cũng như đánh giá các team mà BTC đưa ra.
  • Bản hướng dẫn setup GitLab còn lằng nhằng và một số nhóm không thể push code được, điển hình là team mình.
  • Đồ ăn được trang bị khá đầy đủ, chỉ tiếc là không có sự đa dạng vì mình bào đi bào lại cũng chỉ có 2-3 món snacks.

Hacking Night

OK tới tối rồi. Lúc này thì cả đám vẫn còn sung do uống kha khá Red Bull. Team mình lúc này đã di chuyển xuống lầu trệt của KMS, dạng như một quán nước nhỏ:

36249526_1747090632054486_2094831450644807680_o.jpg

Chỗ ngồi rộng rãi

Nghe đâu là ở trên lầu (chỗ thi đấu ban đầu) có tổ chức Code Detox, dạng như sẽ có quầy bar, cocktail uống các kiểu rồi các thí sinh thi nhau đờn hát. Team mình lúc đó vẫn đang mãi mê ngồi code nên cũng chả quan tâm mấy.

Cũng mở cái màn hình thêm mà BTC cung cấp ra để xem đá banh relax chút

37244601_1747090718721144_1131591885266092032_o.jpg

Lúc này thì việc crawling cũng xong. Tụi mình bắt đầu tiếng hành train và evaluate các model. đến tận tối khuya thì ai cũng bắt đầu mệt mỏi. Một số người nằm nghỉ trước rồi lại ngồi dậy code tiếp.

37173054_2040814329262643_1875239642635173888_n.jpg

Một bức ảnh của mình lúc 3 giờ sáng do một anh trong BTC chụp được(thiệt ra 2 đứa mình đang làm màu do biết BTC đang chụp ảnh =]] ). Code một hồi thì tụi mình cũng gục gần hết (khoảng 4-5 giờ sáng thì phải). Sáng dậy là lúc team mình bắt đầu integrate code 3 phần (front-end, webapp và models) với nhau. Một số vấn đề xảy ra vào vài tiếng trước thời điểm submit code đó chính là tụi mình phải implement thêm một số cơ chế dạng mô phỏng WebSocket để xử lý thêm và dữ liệu truyền cho models xử lý (do cấu trúc và cách hoạt động bên phía models không đơn giản như việc gửi / nhận request giữ Front-end và Back-end). Đồng thời là một đống bugs bay tới bay lui :))

Một số thành viên còn lại chia ra làm nốt slide, trả lời câu hỏi từ BGK. (Có một thành viên trong thành phần BGK phụ trách về teamwork – một thầy từ trường KHTN – thầy đi hỏi tất cả các nhóm về cách phân chia công việc của team)

Một tấm screenshot sản phẩm trước khi Pitching của nhóm:

demo.png

Pitching Day

À tới lúc này thì đống bánh snack bắt đầu báo thù cái dạ dày của mình làm nó đau kinh khủng, với cả nhiệt độ Pitching room khá lạnh khiến mình khá run với yếu. Cả team xác định mình lên trình bày sản phẩm rồi, nên thôi mình kiếm cái ghế, nằm lăn ra ngủ luôn đợi đến khi nào tới lượt thì lên thôi cho thoải mái đầu óc.

Mình nhớ khá rõ là bài pitching của mình không như mong đợi của bản thân. Nhưng lại khá tự hào vì mình có thêm trải nghiệm để cải thiện bản thân hơn. Đóng máy, về nhà ngủ.

=========================================

Hai hôm sau thì mời các team thắng cuộc tới buổi trao giải và tại buổi trao giải

37294495_1748552438574972_4092028265902899200_n.jpg

Thông báo hai đội về nhất, cái tên Infection được nêu lên cùng với Game Changers

4366556_KMS_Hackathon_6.jpg

Team mình bên phải, từ phải qua: *BEEP*, Tú, Lộc, An, Minh, Khiêm

Team mình cũng được vinh danh là đội Á Quân của cuộc thi với phần thưởng 2000$

37410811_10216867099449217_319614531112271872_o.jpg

Infection team

Sau cuộc thi này, ít nhiều mình và team cũng đã thể hiện được một chút năng lực của nhóm, học hỏi được thêm nhiều điều từ các đội thi và BTC, đội ngũ cố vấn.

Về việc thực hiện, source code và những vấn đề liên quan tới kĩ thuật thì có thể mình sẽ đề cập trong một bài viết khác. Mình xin tạm dừng “phím” ở đây. Cảm ơn đơn vị tổ chức KMS Technology đã mang lại một trải nghiệm Hackathon thú vị, mới lạ và không kém phần chuyên nghiệp. Cảm ơn các đồng đội đã cày suốt 30 giờ đồng hồ với mình và không bỏ cuộc ngay trước khi chặn đua kết thúc.

Sau đây là một số hình ảnh mà nhóm tự sướng có được trong buổi lễ trao giải:

37305829_1748552418574974_6463729908496465920_o.jpg37375072_1748552305241652_6561456271499722752_o.jpg37299757_1748552585241624_6953265260077776896_n.jpg

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s