Chi phí của việc chia sẻ mã giữa iOS và Android
(blogs.dropbox.com)Dropbox khi bắt đầu vào năm 2013 đã sử dụng C++ để chia sẻ giữa hai nền tảng.
Khi đó đội ngũ còn nhỏ, và mục tiêu là hỗ trợ lộ trình di động đang tăng trưởng nhanh.
Hiện nay họ đã chuyển sang dùng Swift và Kotlin, vì những chi phí ẩn dưới đây của việc chia sẻ mã (thực ra cũng không hẳn là quá ẩn)
-
Overhead do framework và thư viện tùy biến
-
Overhead do môi trường phát triển tùy biến
-
Overhead khi xử lý các khác biệt giữa các nền tảng
-
Overhead cho việc đào tạo, tuyển dụng và giữ chân nhà phát triển
Kết luận là viết một bộ mã duy nhất thì nghe có vẻ hay, nhưng overhead rất lớn.
Điều quan trọng là đoạn cuối của bài viết này thực chất là: "Chúng tôi đang tuyển lập trình viên Android / iOS!"
4 bình luận
Chẳng phải vấn đề là liệu tổ chức có thể gánh được phần overhead đó hay không sao?
Dù chọn gì đi nữa, nếu vẫn có thể gánh được thì có lẽ nên tập trung vào thứ mình làm tốt nhất.
Dù sao thì những điểm khác nhau giữa từng nền tảng có lẽ là điều không thể tránh khỏi. Ngay cả khi làm theo hướng hybrid thì những khác biệt đó cũng không biến mất.
Cross-platform cũng chỉ là thêm một nền tảng nữa mà thôi.
Lại còn phức tạp hơn và nửa vời hơn nữa..
Dạo này React Native có vẻ đã khá hoàn thiện rồi..
Tất nhiên, nếu đi vào các ứng dụng phụ thuộc vào thiết bị như Dropbox thì nỗi khổ của các ứng dụng hybrid truyền thống chắc vẫn còn nguyên..
Bài viết khá dài, nhưng thực ra Dropbox là trường hợp khá đặc biệt vì dùng C++.
Với các tổ chức nhỏ, thành thật mà nói việc hỗ trợ đa nền tảng bằng một codebase duy nhất quả thật rất hấp dẫn ở giai đoạn đầu.
10 năm trước, phát triển hybrid bằng HTML5 và Phonegap là như vậy,
còn dạo gần đây thì những thứ như React Native và Flutter xuất hiện, cám dỗ mọi người bằng khả năng hỗ trợ nhiều nền tảng cùng lúc.
Theo tôi, với các tổ chức nhỏ, việc chia sẻ code theo cách như trên rõ ràng có lợi thế nhất định.
Tuy nhiên, khi sản phẩm phát triển thì điều này lại dần trở thành nợ kỹ thuật.
Khi người dùng tăng lên, tổ chức lớn hơn và số lập trình viên cũng nhiều hơn, tôi nghĩ đích đến cuối cùng là Web/iOS/Android đều phát triển bằng những công nghệ phù hợp với riêng mình.
Giống như trong bài viết hay về nợ kỹ thuật ở https://vi.news.hada.io/topic?id=309
thì điều quan trọng là phải chủ động tạo ra nợ kỹ thuật với một chủ đích rõ ràng. Hãy trả nợ trước khi lãi mẹ đẻ lãi con.