30 ngày hoàn thiện sản phẩm
Câu chuyện
Câu chuyện ngày hôm nay mình muốn “Trao đổi câu chuyện liên quan đến tốc độ phát triển phần mềm”
Câu hỏi của mình cho các bạn là “Thời gian nhanh nhất bạn và nhóm của bạn hoàn thành một sẩn phẩm công nghệ triển khai thật là bao nhiêu lâu" ?

Theo ClockWise Software, trung bình thường gian launching sản phẩm MVP lên triển khai từ 4-6 tháng.
Ở Investidea chúng mình còn số đấy là: 30 ngày.
Đó là câu chuyện về iLab, hệ thống quản lý test nhanh Covid và trả kết quả online.
Bài toán
Cuối tháng 04.2021, tại thời điểm dịch Covid đang lan tràn khắp thế giới, nhu cầu test Covid trở nên thiết yếu hơn bao giờ hết. Chúng tôi, Investidea nhận được đơn đặt hàng về một hệ thống quản lý test Covid khép kín từ khâu đăng ký, thanh toán, lấy mẫu, thực hành test và đến trả kết quả online. Khách hàng là một phòng Lab tại Jakarta, Indonesia vẫn đang triển khai mọi công đoạn trên thủ công và offline nên năng suất thấp.

Bài toán của khách hàng không có gì khó về mặt hệ thống, tuy nhiên mong muốn duy nhất của khách hàng là có thể triển khai được hệ thống từ mùng 01.06.2021, nghĩa là team triển khai chỉ có đủ 30 ngày (calendar) để hoàn thành tất cả mọi việc. Đây là một thử thách lớn về tốc độ phát triển phần mềm mà Investidea từng trải nghiệm.
1. Tại sao phải nhanh ?
Đối với startup tech, tốc độ là yếu tố quan trọng. Trong thế giới phẳng hiện tại, không ai trong chúng ta dám khẳng định công nghệ của mình là cốt lõi, là không thể sao chép, không thể đánh bại được. Vì vậy, song song với việc sản phẩm, công nghệ giải quyết được nhu cầu thị trường, tốc độ để đưa sản phẩm đến người dùng cần được đẩy nhanh nhằm thu thập được các thử nghiệm sớm, các phản hồi và cải tiến sớm.
Có được những trải nghiệm và phản hồi sớm, đội ngũ lại tiếp tục phân tích và đưa ra các điều chỉnh, các cải tiến, và tất nhiên những điều chỉnh và cải tiến này cũng cần được đưa vào thử nghiệm sớm, trước khi khách hàng kịp rời bỏ sản phẩm.

Mặc dù ở giai đoạn nào, giai đoạn MVP (đưa sản phẩm đầu tiên đến khách hàng) hay giai đoạn sau MVP (liên tục cải tiến sản phẩm) thì rõ ràng, tốc độ là một trong số các yếu tố then chốt của thành công. Với lợi thế về tốc độ, có thể trong cùng 1 quãng thời gian như nhau, startup A với nhiều cải tiến và tốc độ tốt có thể triển khai đa dạng thử nghiệm, nhiều tính năng khác nhau tới khách hàng và qua đó có thể kiểm nghiệm được tính năng được khách hàng đón nhận tốt nhất. Cùng thời gian đó với tốc độ chậm hơn, startup B vẫn còn loay hoay đưa ra thử nghiệm đầu tiên đến khách hàng và còn chưa kịp đo lường phản hồi của khách hàng. Lẽ dĩ nhiên với so sánh này startup A có rất nhiều lợi thế chiến thắng và chiếm lĩnh thị trường.
Quay lại bài toán hệ thống iLab, nếu đưa vào triển khai hệ thống sớm hơn 1 ngày, đội ngũ iLab có thể tăng thêm x2 lần số lượng test trong ngày, tăng doanh thu rõ rệt.
2. Như thế nào là nhanh ?
Để đáp ứng yếu tố tốc độ cũng như linh hoạt trong kế hoạch triển khai, Agile, phương pháp phát triển phần mềm linh hoạt luôn là lựa chọn hàng đầu. Theo phương pháp Agile, nhóm triển khai sẽ triển khai phát triển phần mềm theo các vòng lặp, mỗi vòng lặp từ 1 đến 4 tuần để phát triển các tính năng mới, thử nghiệm mới. Vậy lý tưởng hoá có thể sau mỗi vòng lặp này sẽ có một phiên bản mới được chia sẻ đến khách hàng để trải nghiệm.
Tuy nhiên từ lý thuyết, lý tưởng đến thực tế luôn có sự chênh lệch vì thường sau mỗi vòng lặp cần có thể nhiều kiểm thử, các đảm bảo khác nhau thì mới có thể tung sản phẩm lên thị trường.
Ở bài toàn iLab, team chọn Sprint 1 tuần, cả dự án sẽ chỉ có vỏn vẹn 04 vòng lặp với 06 nhân sự.
3. Làm sao để nhanh ?
Tất nhiên nếu hỏi câu hỏi Tại sao phải nhanh, Như thế nào là nhanh thì chắc chắn sẽ rất nhiều bạn cùng có câu trả lời giống mình, đây được hiểu là những lý thuyết cơ bản nhất của phát triển sản phẩm theo mô hình Agile.
Tuy nhiên câu hỏi Làm sao để nhanh thì mình nghĩ vẫn là câu hỏi mở cho tất cả các công ty Công nghệ hiện tại, mỗi công ty sẽ có câu trả lời riêng để đạt được tốc độ đưa sản phẩm lên thị trường.

Cũng giống như đi xe đạp, mỗi người sẽ có riêng cho mình các kỹ thuật và phương pháp để đi nhanh hơn, việc cần làm là trải nghiệm và tìm ra các Khâu (factors) ảnh hưởng đến tốc độ của bạn và từng bước cải thiện nó.
Trên cơ sở triết lý này, Investidea, sau hơn 5 năm hình thành và phát triển cũng có cho mình câu trả lời cho câu hỏi này, và giải pháp của Investidea để đạt được tốc độ triển khai sản phẩm dựa trên việc đẩy nhanh 04 khâu sau:
1) Khởi tạo môi trường: 03 ngày -> 01 giờ
Khung sản phẩm được xây từ những dòng code đầu tiên, tập hợp các module, những thư viện được xác định sẽ sử dụng trong sản phẩm. Việc khởi tạo khung source code với các dự án thường có thể mất từ 2-3 ngày để có thể tạo dựng được bộ khung source code sẵn sàng, setup CI/CD (tích hợp tự động, phát hành tự động).

Với Investidea, chúng tôi tối ưu được toàn bộ việc khởi tạo này xuống còn 01 giờ.
Hãy tưởng tượng sau khi chốt được toàn bộ công nghệ, thư viện, module cần có cho dự án, và bạn cần 1 kỹ sư trong 1 giờ để có thể cấu hình toàn bộ khung, môi trường, …
Và sau đúng 01 giờ, toàn bộ đã sẵn sàng, bạn có thể bắt đầu cho kỹ sư tham gia vào dự án và tập trung vào triển khai các tính năng đầu tiên, các màn hình đầu tiên.
2) Khởi tạo Product Roadmap: 01 tuần -> 04 giờ
Để triển khai nhanh theo Agile, Investidea đã tập hợp được bộ tài liệu chuẩn hoá nghiệp vụ (Scope) cơ bản. Dựa trên đầu vào là nhu cầu khác nhau của khách hàng, của sản phẩm, việc triển khai các hạng mục cần triển khai sẽ có :
- Product roadmap: toàn bộ các hạng mục về kế hoạch phát triển, các phiên bản, tính năng trong từng phiên bản, ….: 02 giờ (sau 02 cuộc họp với khách hàng)
- Figma design thiết kế: xây dựng design system: 01 giờ
- PRD: triển khai các màn hình đầu tiên, các tính năng đầu tiên: 01 giờ

3) Thành lập nhóm dự án: 04 tuần -> 01 tuần
Thành lập nhóm sản phẩm linh hoạt trong vòng 1 tuần với các vai trò trọn vẹn của dự án.
Để làm được việc này cần thời gian lâu dài xây dựng đội ngũ với định hướng Full-stack, việc triển khai dự án sẽ linh hoạt và nhanh chóng hơn vì luôn luôn có đủ các nhân sự cho các công nghệ có sẵn. Bạn sẽ đơn giản hơn trong việc:
- Điều chuyển nhân sự từ dự án A sang dự án B: vì các nhân sự còn lại có thể tiếp tục triển khai được dự án A mà không gặp rào cản về thiếu kỹ năng của nhân sự bị chuyển đi (song song có thể bổ sung người cho dự án A dễ dàng)
- Thành lập nhân sự dự án mới: với các nhân sự fullstack bạn sẽ có nhiều lựa chọn hơn trong việc bố trí nguồn lực
- Triển khai thực tế: rõ ràng với nhân sự fullstack, công việc sẽ vận hành trơn tru hơn, dễ nhận được hỗ trợ từ bên ngoài.
4) Quy trình phát hành (release): 8 giờ -> 10 phút
Nhờ vào quy trình phát hành đã được code hoá, toàn bộ các công đoạn từ xây dựng hệ thống trên Cloud, các module, application, cơ sở dữ liệu, network, ,... đều được code hoá và tự động 100%.
Việc phát hành trở thành đơn giản hơn bao giờ hết khi chỉ cần kỹ sư hệ thống (Platform Engineer) run các steps bằng việc “nhấn nút" để release sản phẩm.
Ngoài 04 khâu trên thì còn nhiều các giải pháp cải tiến, nâng cấp để có thể giúp tối ưu tốc độ triển khai sản phẩm. Chi tiết các giải pháp này sẽ được chia sẻ thêm ở các bài viết tiếp theo.