|

WHITEBOARD: Ứng dụng cộng tác thời gian thực từ chàng sinh viên 22 tuổi

Làm sao để các buổi họp trở nên hấp dẫn hơn? Chúng ta có thể cùng nhau viết, vẽ ra ý tưởng cùng lúc dù mỗi người một nơi bằng cách nào?

Hãy cùng chúng mình tìm hiểu về câu chuyện Kiên Đỗ xây dựng giải pháp giúp mọi người cộng tác thời gian thực – sản phẩm cá nhân đầu tiên của mình tại True nhé!

Whiteboard là một ứng dụng cho phép người dùng cộng tác, trình bày ý tưởng thông qua viết, vẽ trên app tại thời gian thực. Ứng dụng sẽ được tối ưu khi sử dụng trong những buổi họp, thảo luận ý tưởng và trình bày giải pháp trực tuyến và trực tiếp.

Hành trình xây dựng sản phẩm không dễ dàng…

Hello Kiên, tại sao bạn lại chọn Whiteboard là sản phẩm đầu tay của mình?

Kiên: Trước khi bước vào giai đoạn xây dựng Internal Project, mỗi bạn sẽ nhận được 1 danh sách gồm 3 – 4 apps thì mình thấy thú vị nhất là ý tưởng về Whiteboard. Mình thấy khá phù hợp với ngữ cảnh dùng cho những buổi học online, lúc mọi người cộng tác để trao đổi ý kiến với nhau. Khi cuộc họp có nhiều người như team mình chẳng hạn, mỗi người cần đưa ra 1 ý tưởng thì có thể cùng viết trên app, và sau đó dễ dàng thảo luận để đưa ra giải pháp phù hợp, hoặc mọi người cũng có thể vẽ sơ đồ tư duy hay cùng nhau vẽ nên một tác phẩm nào đó. Thêm nữa là mình là một người thích nghệ thuật, thích vẽ nên mình chọn Whiteboard.

Khó khăn lớn nhất mà bạn gặp phải là gì?

Kiên: Với mình thì mọi thứ đều rất mới nên gặp khó khăn từ đầu tới cuối luôn. Khi vào True thì mình là một trang giấy trắng, mà Whiteboard thì thiên về toán, thuật toán và xử lý giao diện frontend nên nó thực sự là một thử thách lớn.

Thứ hai là về việc thích ứng thiết bị, vì Whiteboard sẽ được dùng ở trên điện thoại và máy tính, nên mình sẽ phải tìm hiểu và xử lý vấn đề thích ứng thiết bị khá phức tạp. Bạn biết đó, có một số thứ thích ứng với Android nhưng không thích ứng với iOS.


Thứ ba, mình đã phải xây dựng lại cấu trúc dữ liệu vài lần, vì thời gian đầu mình nghĩ chưa đủ sâu về các chức năng phải làm do đó cấu trúc dữ liệu cũ chưa đáp ứng được các chức năng mình muốn làm. Do vậy nên mình phải thay đổi cấu trúc code khá nhiều.

Vậy Kiên đã vượt qua giai đoạn khó khăn này như thế nào?

Kiên: Cố gắng, cố gắng mỗi ngày, mình không biết chỗ nào thì suy nghĩ về nó trước, tự tìm hiểu và tham khảo ý kiến từ những anh chị xung quanh, từ đó có thêm nhiều góc nhìn để tìm ra giải pháp. Quan trọng là luôn nỗ lực hết mình và kiên trì. Khi phải đối mặt với rất nhiều vấn đề mới và khó như vậy, mình đã sử dụng phương pháp “tracer bullets” (được đề cập đến trong cuốn Pragmatic programmer). Mình sẽ tìm hiểu và phát triển nhanh để chức năng đó hoạt động được trước, để mình có thể nhìn thấy đường đi, sau đó mình mới phát triển những thứ “râu ria” khác để hoàn thiện hơn.

💡 Tracer bullets - phương pháp “đạn chỉ đường”: Hình dung rằng trong bóng tối, bạn cần phải bắn nhiều viên đạn trúng đích, thông thường, người ta sẽ ước lượng trước tọa độ mục tiêu, và giương súng về phía đó. Để biết được mình có bắn chính xác hay không, trước tiên ta bắn 1 viên đạn sáng (đạn chỉ đường), dựa vào viên đạn này ta điều chỉnh lại hướng súng, từ đó bắn các phát đạn sau chính xác hơn. Như vậy, ta chỉ tốn 1 vài viên đạn sáng ban đầu (hi sinh 1 chút tài nguyên nhỏ) để chắc chắn rằng nhiều viên đạn sau được chính xác (tài nguyên lớn được dùng đúng).

…nhưng mọi nỗ lực đều sẽ được đền đáp xứng đáng.

Bài học lớn nhất mà bạn nhận được là?

Kiên: Mình nghĩ bài học đầu tiên là ứng dụng “Tracer bullets” trong việc xử lý bài toán xây dựng sản phẩm. Khi nhận một dự án, sản phẩm mới, khi mình đang không biết làm gì thì điều quan trọng là tìm ra hướng đi dài nhất, có thể phát triển nhất cho nó. 
Trong quá trình làm thì xây dựng Product model là quan trọng nhất, cần xác nhận rất nhiều lần để có thể đáp ứng được các chức năng của app, và có thể phát triển và mở rộng thêm sau này. Cần chốt product model ngay từ đầu và hạn chế sự thay đổi nhất có thể, và tốt nhất là không thay đổi.

Bạn có cảm nhận như thế nào về hành trình xây Whiteboard?

Kiên: Mình hoàn thiện Whiteboard mất khoảng 1 tháng rưỡi. Hành trình của mình bắt đầu từ nhận app để phát triển, tìm kiếm, tham khảo, research những apps có whiteboard phổ biến khác để list ra những tính năng cũng như nghĩ sâu hơn về cách lưu trữ, xử lý, hoạt động của các chức năng đó. Sau đó là xây dựng demo nhỏ để vẽ được, xây dựng từng bước một trong app và sau đó cấu trúc thành các folder, objects để lưu trữ, hoàn thiện các chức năng và giao diện.

Nhìn lại một tháng rưỡi, mình thấy thách thức và khó khăn thực sự. Whiteboard có nhiều vấn đề về toán học, thuật toán, khá nặng về kỹ thuật chứ không liên quan đến nghiệp vụ nhiều nên BA hỗ trợ mình các logic liên quan đến việc phân quyền và thiết kế trong quá trình xây dựng.

Bạn có kế hoạch tương lai gì dành cho Whiteboard chưa?

Kiên: Sắp tới, mình sẽ đa dạng hóa các chức năng của Whiteboard, thêm những tính năng mới như chèn ảnh, chèn tệp,… để giúp Whiteboard hoàn thiện hơn và có thể sử dụng trong nhiều trường hợp hơn và thuận tiện hơn.

Có thể bạn chưa biết?

Một số sự thật thú vị về Kiên:

  • Đỗ Lương Kiên hiện tại đang là sinh viên năm cuối trường Đại học Bách Khoa Hà Nội. Khi đến với True, Kiên là một “trang giấy trắng” về lĩnh vực Software Engineering.
  • Whiteboard là sản phẩm Internal Project cá nhân đầu tiên mà Kiên xây dựng từ đầu đến cuối.
  • Kiên rất thích nghệ thuật và vẽ rất đẹp.

True-ers nói gì về Whiteboard:

Cao Nguyễn (Middle Software Engineer): Whiteboard của Kiên Đỗ nặng về technical, về cấu trúc lõi khá phức tạp, app gần như hoàn thiện rồi. Vẽ rất đẹp.

Cường Trần (Middle Software Engineer): Whiteboard thì đúng là một sản phẩm hoàn thiện rồi, có đủ các chức năng must-have rồi, thời gian tới có thể bổ sung một số chức năng để có nhiều functions hơn. Về giao diện đã đủ đẹp rồi, Kiên vẽ đẹp.


Cảm ơn Kiên, True tin rằng Kiên đã phát triển hơn rất nhiều sau quá trình xây dựng Whiteboard. Mong rằng bạn luôn vững tin và nỗ lực trên hành trình sắp tới của mình, cùng True xây dựng những sản phẩm world-class mang dấu ấn người Việt ra thị trường quốc tế.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *